Payment Platforms
Fiat rails use these identifiers:
const PaymentPlatform = {
VENMO: 'venmo',
CASHAPP: 'cashapp',
REVOLUT: 'revolut',
WISE: 'wise',
ZELLE: 'zelle',
PAYPAL: 'paypal',
MONZO: 'monzo',
N26: 'n26',
CHIME: 'chime',
} as const;
Crypto rails
enabledRails also accepts crypto rail identifiers of the form relay_<chainId>, one per
supported origin chain. A customer picking one pays from a wallet on that chain and the
transfer is bridged to your payout destination, which is set separately by the order's
destinationChainId and destinationToken.
| Identifier | Chain |
|---|---|
relay_1 | Ethereum |
relay_10 | Optimism |
relay_56 | BNB Smart Chain |
relay_137 | Polygon |
relay_480 | World Chain |
relay_999 | Hyperliquid |
relay_5042 | Arc |
relay_8453 | Base |
relay_42161 | Arbitrum |
relay_8253038 | Bitcoin |
relay_728126428 | Tron |
relay_792703809 | Solana |
Other rails
Two identifiers belong to neither list above and are accepted in enabledRails all the same:
| Identifier | Rail |
|---|---|
near_intents_133701 | Zcash, routed through NEAR Intents |
apple_pay | Coinbase Apple Pay |
apple_pay is its own category: the customer neither sends fiat on a payment platform nor
sends crypto from a wallet, so the payment that results is recorded against the Relay rail it
settles on, not against apple_pay.
Type
type PaymentPlatformType =
| 'venmo'
| 'cashapp'
| 'revolut'
| 'wise'
| 'zelle'
| 'paypal'
| 'monzo'
| 'n26'
| 'chime';
Disputable platforms
Venmo and PayPal payments can be disputed after settlement and are delivered to you as chargeback events; see chargebacks for what that means for your account.
Fiat Currency Support
Checkout quote selection supports multiple fiat currencies. The API recognizes these codes on a payment:
AED ARS AUD CAD CHF CNY CZK DKK EUR GBP HKD
HUF IDR ILS INR JPY KES MXN MYR NOK NZD PHP
PLN RON SAR SEK SGD THB TRY UGX USD VND ZAR
Which of them a given order can be paid in depends on the platforms you enabled and on live liquidity.
- The checkout currency selector controls which fiat currency is used for quote discovery.
- Platform availability is evaluated per selected currency and order amount.
- Each payment records the
currencyPerUsdRateused for its quote.
If a platform has no liquidity for the selected currency, it appears unavailable for that quote cycle.
Usage in Checkout Flow
Rails are selected at order-creation time through enabledRails, which accepts the nine fiat identifiers, the twelve relay_<chainId> crypto identifiers, near_intents_133701, and apple_pay. The list must be non-empty; an unknown identifier fails validation.
import { createCheckout } from '@zkp2p/pay-sdk';
const checkout = await createCheckout(
{
requestedUsdcAmount: '50.00',
enabledRails: ['venmo', 'paypal'],
},
opts,
);
console.log(checkout.checkoutUrl);