Platform / Ramps

One ramp quote. The real fees.

Single-ramp on-ramps fail roughly half the time in Europe. Our aggregation layer routes across MoonPay, Ramp Network, Transak, Banxa, Mercuryo, and Sardine. You get one all-in quote, a success-probability score, and automatic fallback if the primary route drops mid-transaction.

What your users experience.

One quote screen

Total cost shown upfront — fee + spread + FX + network, not three different surprises later.

Best route, per transaction

Scoring weighs ramp auth rate for the user's card BIN, country support, KYC re-use, rail uptime, and historical success with similar user profiles.

Automatic fallback

If the primary ramp fails after user submits, OVAAL retries on the next-best ranked route without losing the user's KYC state.

Transparent breakdown

Partner can expose route, all-in rate, and underlying fee components via SDK — or collapse to just the total. Partner's choice.

Why aggregation beats single-ramp.

Onramper's 2024 benchmark found on-ramp success rates of ~50% for single-provider integrations, rising to ~70-75% when routed through an aggregator that scores per card BIN + country + KYC-re-use compatibility. The math is straightforward: each ramp has coverage gaps (card BIN restrictions, per-country limits, intermittent compliance holds). Parallel availability checks eliminate most of the gap at the moment of user intent.

OVAAL's scoring inputs (refreshed every 15 minutes per ramp):

  • BIN-level auth rate (last 7 days per ramp per country)
  • Per-country support + KYC tier for the user's jurisdiction
  • Asset-chain pair coverage (not every ramp supports every chain)
  • Current rail uptime + recent incident posture
  • Partner-level relationships (preferential terms per partner-volume tier)

API-first.

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

// Returns:
// {
//   selectedRampId: 'ramp_moonpay_v2',
//   allInRate: { total: 0.0287, fee: 0.0135, spread: 0.0102, fx: 0.0050 },
//   successProbability: 0.93,
//   expectedDeliveryMs: 180_000,
//   fallbackRampIds: ['ramp_transak', 'ramp_banxa'],
//   sessionUri: 'https://ramp.ovaal.io/session/...'
// }