Skip to main content

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.

IdentifierChain
relay_1Ethereum
relay_10Optimism
relay_56BNB Smart Chain
relay_137Polygon
relay_480World Chain
relay_999Hyperliquid
relay_5042Arc
relay_8453Base
relay_42161Arbitrum
relay_8253038Bitcoin
relay_728126428Tron
relay_792703809Solana

Other rails​

Two identifiers belong to neither list above and are accepted in enabledRails all the same:

IdentifierRail
near_intents_133701Zcash, routed through NEAR Intents
apple_payCoinbase 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 currencyPerUsdRate used 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);