curl --request POST \
--url https://sandbox.elementpay.net/api/v1/partner/orders/quote \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"order_type": "OnRamp"
}
'{
"status": "success",
"message": "Partner order quote created",
"data": {
"quote_id": "yc_receive_580e04c2-a136-5cca-be54-b49fcf80970c",
"rail": "local_fiat",
"status": "process",
"order_type": "OnRamp",
"route": {
"family": "ramp_provider",
"rail": "local_fiat",
"direction": "payin",
"mode": "auto",
"reason": "Auto-routed for KE KES OnRamp."
},
"expires_at": "2026-05-16T08:13:40.322Z",
"amounts": {
"rate": 131.69,
"rate_currency": "KES",
"user_pays": {
"amount": 800,
"currency": "KES"
},
"user_receives": {
"amount": 5.94999132,
"currency": "USDC",
"network": "BASE"
},
"fees": {
"network_fee_usd": 0,
"network_fee_local": 0,
"service_fee_usd": 0.12,
"service_fee_local": 16,
"partner_fee_usd": 0,
"partner_fee_local": 0
}
},
"instructions": {
"available_after_accept": true,
"note": "Accept this quote to create the local order and receive final payment instructions."
},
"audit": {
"rail": "local_fiat",
"provider_quote_id": "580e04c2-a136-5cca-be54-b49fcf80970c",
"direction": "payin",
"token_symbol": "BASE_USDC",
"crypto_currency": "USDC",
"crypto_network": "BASE"
}
}
}{
"status": "error",
"message": "elementpay partner order routing is not enabled yet",
"data": {
"route": {
"family": "native",
"direction": "payin",
"mode": "override",
"reason": "Provider override requested: rail.",
"rail": "native"
}
}
}{
"status": "error",
"message": "Missing requirements for selected route",
"data": {
"missing_fields": [
"wallet_address",
"recipient or customer",
"source or payment_method"
],
"route": {
"family": "ramp_provider",
"direction": "payin",
"mode": "auto",
"reason": "Selected rail for KE KES OnRamp.",
"rail": "local_fiat"
}
}
}{
"status": "error",
"message": "Quote request failed",
"data": null
}Create a partner order quote
Create a binding quote for a fiat ↔ crypto order.
curl --request POST \
--url https://sandbox.elementpay.net/api/v1/partner/orders/quote \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"order_type": "OnRamp"
}
'{
"status": "success",
"message": "Partner order quote created",
"data": {
"quote_id": "yc_receive_580e04c2-a136-5cca-be54-b49fcf80970c",
"rail": "local_fiat",
"status": "process",
"order_type": "OnRamp",
"route": {
"family": "ramp_provider",
"rail": "local_fiat",
"direction": "payin",
"mode": "auto",
"reason": "Auto-routed for KE KES OnRamp."
},
"expires_at": "2026-05-16T08:13:40.322Z",
"amounts": {
"rate": 131.69,
"rate_currency": "KES",
"user_pays": {
"amount": 800,
"currency": "KES"
},
"user_receives": {
"amount": 5.94999132,
"currency": "USDC",
"network": "BASE"
},
"fees": {
"network_fee_usd": 0,
"network_fee_local": 0,
"service_fee_usd": 0.12,
"service_fee_local": 16,
"partner_fee_usd": 0,
"partner_fee_local": 0
}
},
"instructions": {
"available_after_accept": true,
"note": "Accept this quote to create the local order and receive final payment instructions."
},
"audit": {
"rail": "local_fiat",
"provider_quote_id": "580e04c2-a136-5cca-be54-b49fcf80970c",
"direction": "payin",
"token_symbol": "BASE_USDC",
"crypto_currency": "USDC",
"crypto_network": "BASE"
}
}
}{
"status": "error",
"message": "elementpay partner order routing is not enabled yet",
"data": {
"route": {
"family": "native",
"direction": "payin",
"mode": "override",
"reason": "Provider override requested: rail.",
"rail": "native"
}
}
}{
"status": "error",
"message": "Missing requirements for selected route",
"data": {
"missing_fields": [
"wallet_address",
"recipient or customer",
"source or payment_method"
],
"route": {
"family": "ramp_provider",
"direction": "payin",
"mode": "auto",
"reason": "Selected rail for KE KES OnRamp.",
"rail": "local_fiat"
}
}
}{
"status": "error",
"message": "Quote request failed",
"data": null
}Create quote
POST with corridor, customer, and payment method details.Show pricing
Accept
POST /partner/orders/{quote_id}/accept when the user confirms.Customer identity
Use one of:customer_id(pcus_*from an approved customer vault case) — recommended for new integrations- Inline
customer— still supported; pick KE OnRamp — inline customer in Try it or fill thecustomerobject
provider, channel_id, destination, rail, …). Omit provider on live calls too — Element Pay auto-routes by corridor.Discovery before quote
GET /partner/catalogorGET /partner/payment-methods→ rails for the corridorGET /partner/catalog?order_type=OnRamporOffRamp→providers[].idfor momo/bankGET /partner/order-requirements→ exact field names (network_idrequired for momo/bank)GET /partner/banks→ bank institution UUIDs where applicable
Payment method by rail
mobile_money
payment_method.type=mobile_moneypayment_method.phone_number(E.164)payment_method.network_id(UUID from catalogproviders[].id)
bank
payment_method.type=bankaccount_number,account_namepayment_method.network_id(fromGET /partner/banksor catalog)
Quote IDs
- OnRamp:
yc_receive_<id> - OffRamp:
yc_send_<id>
data.expires_at.Authorizations
Partner API key. Sandbox keys start with is_test_; production keys start with is_live_. Keys are not interchangeable across environments. Send on every request. Never expose in browser or mobile clients.
Body
Quote body for Mintlify Try it. Includes customer_id or inline customer, asset, and payment_method only. Not shown here (still accepted on live API if needed): provider, channel_id, channel_type, sequence_id, destination, source, sender, recipient, rail, token top-level alias, crypto_currency/crypto_network hints.
OnRamp = fiat to crypto. OffRamp = crypto to fiat.
OnRamp, OffRamp "OnRamp"
ISO country (African corridors). Omit for EUR/USD international bank payin.
2"KE"
3"KES"
OnRamp: fiat amount the customer pays.
x >= 1800
OffRamp: stablecoin amount the customer sends.
20
Approved vault customer id (pcus_*). Use this or inline customer, not both.
"pcus_a1b2c3d4e5f6"
Inline retail KYC when you do not use customer_id. Corridor extras (BVN, institution): /sandbox/test-payloads.
Show child attributes
Show child attributes
Stablecoin asset block (sandbox default: Base USDC).
Show child attributes
Show child attributes
Fiat rail. mobile_money: phone_number + network_id. bank: account_number, account_name, network_id.
Show child attributes
Show child attributes
OnRamp: destination wallet for stablecoin delivery.
"0xde0B295669a9FD93d5F28D9Ec85E40f4cb697BAe"
OffRamp: refund wallet if payout fails.
"0x3333333333333333333333333333333333333333"