Skip to content
Last updated

Create an on-ramp order (fiat → crypto) for a customer. Returns a checkoutUrl to redirect or embed so the customer can complete their payment.


Endpoint

POST /{partnerRef}/v2/buy

Request body

FieldTypeRequiredDescription
cryptostringYesCryptocurrency code (e.g., ETH, BTC, USDT).
fiatstringYesFiat currency code (e.g., AUD, USD, EUR).
walletAddressstringYesCustomer's receiving wallet address.
redirectUrlstringYesURL to redirect the customer to after checkout completes or is cancelled.
paymentMethodIdstringNoPre-selects a payment method. If omitted, the customer chooses in checkout. See supported values below.
fiatAmountstringConditionalFiat amount to spend. Either fiatAmount or cryptoAmount must be provided.
cryptoAmountstringConditionalCrypto amount to receive. Either fiatAmount or cryptoAmount must be provided.
blockchainstringNoBlockchain network (e.g., ETH, BNB). Required for multi-chain assets.
externalCustomerIdstringYesYour stable identifier for this customer. Enables returning customer recognition and reduces repeat KYC. See best practices.
emailstringNoCustomer's email address. Pre-populates the email field in checkout.
externalOrderIdstringNoYour own order reference to attach to this transaction. Banxa stores it and returns it in order responses and webhooks for reconciliation.
walletAddressTagstringNoSecondary wallet identifier required by some blockchains (e.g., memo for XLM, destination tag for XRP). Required when the destination wallet requires a tag.
discountCodestringNoDiscount code to apply to the order.
subPartnerIdstringNoIdentifier for a sub-partner or segment within your account (e.g., different sites or resellers).
metadatastringNoAdditional free-form data to attach to the order. Returned as-is in order responses and webhooks.

Payment method IDs

debit-credit-card · apple-pay · sepa-bank-transfer · gbp-bank-transfer · ach-bank-transfer · payid-bank-transfer · upi · pix · paypal


Example requests

Debit/credit card

curl -X POST "https://api.banxa-sandbox.com/{partnerRef}/v2/buy" \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "crypto": "ETH",
    "fiat": "AUD",
    "fiatAmount": "200",
    "walletAddress": "0xe3BDEFdAeFF070925eB7FfC49F9B30c647Cb751e",
    "redirectUrl": "https://yourapp.com/order-complete",
    "paymentMethodId": "debit-credit-card",
    "externalCustomerId": "user_12345",
    "email": "[email protected]"
  }'

Apple Pay

curl -X POST "https://api.banxa-sandbox.com/{partnerRef}/v2/buy" \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "crypto": "ETH",
    "fiat": "AUD",
    "fiatAmount": "300",
    "walletAddress": "0xe3BDEFdAeFF070925eB7FfC49F9B30c647Cb751e",
    "redirectUrl": "https://yourapp.com/order-complete",
    "paymentMethodId": "apple-pay",
    "externalCustomerId": "user_12345"
  }'

PIX (BRL)

curl -X POST "https://api.banxa-sandbox.com/{partnerRef}/v2/buy" \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "crypto": "ETH",
    "blockchain": "ETH",
    "fiat": "BRL",
    "cryptoAmount": "0.0015",
    "walletAddress": "0xcbf80ee37fbf03307962576f327fc50b942e0591",
    "redirectUrl": "https://yourapp.com/order-complete",
    "paymentMethodId": "pix"
  }'

Response

201 Created

{
  "checkoutUrl": "https://partner.banxa.com/portal?expires=xxx&oid=xxx&signature=xxx",
  "id": "191fa5b4b1f45e1cf784422e09317d56",
  "externalOrderId": "a4b427ccb872a1744b317456bd0d165f",
  "externalCustomerId": "user_12345",
  "fiat": "AUD",
  "fiatAmount": "200.00",
  "crypto": "ETH",
  "cryptoAmount": "0.04812",
  "blockchain": "ETH"
}
FieldDescription
checkoutUrlURL to redirect or embed for the customer to complete their transaction.
idBanxa order ID. Store this for order lookup and reconciliation.
externalOrderIdYour order reference (externalOrderId from the request). Null if not provided.
externalCustomerIdThe customer identifier you provided.
fiatFiat currency code (string).
fiatAmountFiat amount as a string.
cryptoCryptocurrency code (string).
cryptoAmountCrypto amount as a string.
blockchainBlockchain network.

Next step

Redirect the customer to checkoutUrl or load it in an iFrame/WebView.

→ See Redirecting to Checkout