Module 2: Money Movement & Routing Available

Route money across eligible providers and rails.

The money movement module routes deposits, transfers, conversions, and payouts across the providers and rails you have enabled. Routing weighs cost, eligibility, availability, and observed performance for each transaction. Today the proof rail is on-ramp and off-ramp aggregation: one all-in quote, a success-probability score, and a fallback path when the first route drops.

What routing handles.

One quote, real fees

Total cost shown upfront (fee, spread, FX, and network combined), not three separate surprises later. No dark spreads.

Best eligible route, per transaction

Routing weighs cost, the user's eligibility and jurisdiction, current provider availability, and observed performance over recent transactions.

Fallback on failure

If the first route drops after submission, routing retries the next eligible path without losing the user's verified state, where providers support it.

Transparent breakdown

Expose the route, the all-in rate, and the underlying fee components through the SDK, or collapse to a single total. Your choice.

The proof rail: ramp aggregation.

Routing is the module in the platform. On-ramp and off-ramp aggregation is the rail that proves it works today.

A 2024 industry on-ramp benchmark found on-ramp success rates of roughly 50% for single-provider integrations, rising materially when routed through an aggregator that scores per card BIN, country, and KYC re-use. The reason is simple: each provider has coverage gaps: card BIN restrictions, per-country limits, intermittent compliance holds. Checking eligibility in parallel at the moment of intent, against the same risk and compliance signals, closes most of the gap.

Routing inputs (refreshed on a short interval per provider):

  • BIN-level authorisation rate, recent window, per provider per country
  • Per-country support and KYC tier for the user's jurisdiction
  • Asset and chain coverage: not every provider supports every pair
  • Current availability and recent incident posture
  • Partner-level terms, applied per volume tier

Settlement timing is near-real-time where supported by the selected provider, destination institution, and jurisdiction. As more rails connect beneath the module (bank rails, EMI payouts, digital-asset rails), the same routing policy applies to all of them, and each routed transaction feeds settlement and reconciliation downstream.

API-first.

const quote = await ovaal.routing.quote({
  partnerUserId: 'user_abc123',
  direction: 'on-ramp',
  fiatCurrency: 'EUR',
  fiatAmount: 500,
  asset: 'USDC',
  targetChain: 'base',
  targetAddress: '0x...',
});

// Returns:
// {
//   selectedProviderId: 'prov_a_v2',
//   allInRate: { total: 0.0287, fee: 0.0135, spread: 0.0102, fx: 0.0050 },
//   successProbability: 0.93,
//   expectedDeliveryMs: 180_000,
//   fallbackProviderIds: ['prov_b', 'prov_c'],
//   sessionUri: 'https://route.ovaal.io/session/...'
// }

Map money movement to your stack.