Skip to content

Routing Rail

Payment routing, rules engine, and intelligent transaction routing.

The Routing Rail provides endpoints for configuring payment routing rules, optimizing transaction paths, and managing failover strategies.

SchemeCorridorNotes
INSTANTDomesticLocal FPS-style rails
ACHDomesticBatch clearing
RTGSDomestic (large-value)Real-time gross settlement
SWIFTCross-borderCorrespondent banking
SEPA_SCTIntra-SEPA (EUR)Credit transfer, settlement D+1
SEPA_SCT_INSTIntra-SEPA (EUR)Instant credit transfer, <10s, EUR 100,000 cap per EPC rulebook
SEPA_SDD_COREIntra-SEPA (EUR)Consumer direct debit, 8-week refund right
SEPA_SDD_B2BIntra-SEPA (EUR)Business direct debit, no refund right
HAWALAHCross-borderIslamic hawalah — fully Shariah-compliant
CARDMultiCard networks
MOBILE_MONEYMultiMobile wallet rails
INTERNALIntra-tenantOn-us book transfer

SEPA participants (37 countries): EU-27 + EEA (IS, LI, NO) + CH, GB, MC, SM, AD, VA, GI. SEPA is EUR-only per EPC 2025 scheme rules. SEPA eligibility is auto-detected by the quote engine from sourceCountry, destinationCountry, currency, and amount.

/api/v1/routing
POST /api/v1/routing/route

Determine optimal route for a transaction.

Request Body:

{
"transactionType": "TRANSFER",
"amount": "50000.00",
"currency": "SAR",
"sourceCountry": "SAU",
"destinationCountry": "UAE",
"priority": "COST",
"metadata": {
"customerId": "cust_123"
}
}

Response:

{
"data": {
"routeId": "rt_abc123",
"selectedRoute": {
"provider": "SWIFT",
"corridor": "SAU_UAE",
"estimatedFee": "50.00",
"estimatedTime": "1-2 business days",
"cutoffTime": "14:00 AST"
},
"alternativeRoutes": [
{
"provider": "LOCAL_CLEARING",
"estimatedFee": "25.00",
"estimatedTime": "Same day"
}
]
}
}
POST /api/v1/routing/payments/quote

Request Body (EUR intra-SEPA):

{
"sourceAccountRef": "acc_de_1",
"destinationAccountRef": "acc_fr_2",
"amount": 5000.0,
"currency": "EUR",
"jurisdictionProfile": "DE",
"destinationCountry": "FR",
"preferences": ["SPEED"]
}

Response (includes SEPA options):

{
"data": {
"options": [
{
"scheme": "SEPA_SCT_INST",
"connector": "sepa_sct_inst",
"estimatedFee": 0.5,
"estimatedTime": "<10s",
"executionTimeMinutes": 1,
"shariahNotes": "Instant settlement, no float window, no interest accrual — fully Shariah-compatible."
},
{
"scheme": "SEPA_SCT",
"connector": "sepa_sct",
"estimatedFee": 0.25,
"estimatedTime": "D+1",
"executionTimeMinutes": 1440,
"shariahNotes": "Credit transfer carries no interest leg."
}
],
"recommendedOption": 0
}
}

Amounts above EUR 100,000 are silently excluded from SEPA_SCT_INST per the EPC SCT Inst rulebook. Use ROUTE_FEE_SEPA_SCT / ROUTE_FEE_SEPA_SCT_INST env vars to override fee defaults per deployment.

POST /api/v1/routing/rules

Create a routing rule.

Request Body:

{
"name": "High Value SWIFT",
"priority": 100,
"conditions": {
"amount": { "gte": "100000.00" },
"currency": ["SAR", "AED", "USD"],
"transactionType": "TRANSFER"
},
"action": {
"route": "SWIFT",
"provider": "PROVIDER_A"
},
"active": true
}
GET /api/v1/routing/rules

List all routing rules.

PATCH /api/v1/routing/rules/:ruleId

Update a routing rule.

POST /api/v1/routing/rules/test

Test rules against a sample transaction.

Request Body:

{
"transactionType": "TRANSFER",
"amount": "150000.00",
"currency": "SAR",
"destinationCountry": "UAE"
}
GET /api/v1/routing/providers/status

Get status of routing providers.

Response:

{
"data": [
{
"provider": "SWIFT",
"status": "OPERATIONAL",
"latency": 250,
"successRate": 0.998
},
{
"provider": "LOCAL_CLEARING",
"status": "DEGRADED",
"latency": 500,
"successRate": 0.95
}
]
}
POST /api/v1/routing/failover

Configure failover rules.

Request Body:

{
"primaryRoute": "SWIFT",
"failoverRoutes": ["LOCAL_CLEARING", "CORRESPONDENT"],
"triggerConditions": {
"errorRate": 0.05,
"latency": 5000
},
"autoRecover": true
}
PriorityDescription
COSTMinimize transaction cost
SPEEDFastest delivery
RELIABILITYMost reliable route
COMPLIANCEStrictest compliance
ConditionTypeDescription
amountobjectAmount range (gte, lte)
currencyarrayAllowed currencies
sourceCountryarraySource countries
destinationCountryarrayDestination countries
transactionTypearrayTransaction types
customerIdstringSpecific customer
EventDescription
routing.route.selectedRoute selected
routing.failover.triggeredFailover activated
routing.provider.degradedProvider degraded
routing.rule.matchedRule matched