One quote screen
Total cost shown upfront — fee + spread + FX + network, not three different surprises later.
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.
Total cost shown upfront — fee + spread + FX + network, not three different surprises later.
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.
If the primary ramp fails after user submits, OVAAL retries on the next-best ranked route without losing the user's KYC state.
Partner can expose route, all-in rate, and underlying fee components via SDK — or collapse to just the total. Partner's choice.
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):
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/...'
// }