For the complete documentation index, see llms.txt. This page is also available as Markdown.

Routes Engine

The Routes Engine is the programmable heart of Reveel PayID. It determines how incoming payments should be processed, routed, and settled, based on user-defined rules. This engine is what allows Reveel to go beyond simple address redirection and support intelligent, omnichain payment behavior.


What is a Route?

A route is a logical set of conditions and outcomes configured by the user (or application) that defines:

  • What payment types are accepted (by network, token, sender wallet)

  • Where those payments should end up (target chain, token, wallet)

  • Whether a swap or bridge is needed (optional, configurable)

Each user can define multiple routes, allowing fine-grained control over how different types of incoming payments are handled.


Why It Matters

Without routing, a PayID would just be a static alias for a wallet. With the Routes Engine, Reveel unlocks:

  • Network abstraction: sender doesn’t need to know recipient’s chain

  • Token normalization: receive USDC even if sender sends USDT

  • Smart fallback logic: default wallets for unknown senders or tokens

  • Enterprise-style flexibility: tailor rules by partner, product, use case

It brings Web2-style conditional logic into the programmable payment space.


Routing Rules: How They Work

Each route contains match conditions and output instructions.

Match Conditions (Inputs)

These define when a route should activate:

  • incomingToken: Which tokens should trigger this route

  • incomingNetwork: Which chains the payment may come from

  • incomingWallets: (Optional) Which sender wallets this route applies to

Output Instructions

These define what to do with the matched funds:

  • swapToken: Which token the user prefers to receive (optional)

  • swapNetwork: Which chain to settle the funds on (optional)

  • outgoingWallet: Final destination wallet


Deterministic vs. Flexible Logic

Reveel allows routes to be either:

  • Strictly deterministic: routes trigger only when all match conditions are met

  • Fallback-friendly: if no exact match, default route can apply

This makes the system powerful enough for:

  • Basic personal use (receive USDC on Base always)

  • Complex app flows (route payments from App A to Chain A, App B to Chain B)


Multi-Route Architecture

Users can have multiple active routes, and the engine evaluates them in order of specificity and priority. This allows:

  • Granular override: route payments from a specific sender differently

  • General rules: apply a catch-all fallback route for everything else

Each route is stateless, meaning the logic is evaluated per transaction, not stored across sessions.


Design Considerations

The Routes Engine is designed to be:

Feature
Benefit

Stateless evaluation

Easier caching, fewer bugs, no cross-transaction memory

Conflict-checked

Users can’t create overlapping or ambiguous routes

Composable

Works with future liquidity and swap modules

Chain-agnostic

Built to support new EVM chains and token standards

User-scoped

Routes are isolated per user to prevent collisions


Future Plans:

  • Time-based logic (route payments differently on weekdays vs weekends)

  • Geofenced rules (based on sender location metadata)

  • Token splitting (e.g. split $100: $80 to wallet A, $20 to wallet B)

Last updated

Was this helpful?