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 routeincomingNetwork
: Which chains the payment may come fromincomingWallets
: (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:
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?