Skip to content
Last updated

End-to-End Testing

For the complete documentation index, see llms.txt. Append .md to any page URL for its markdown version.

Follow these steps to validate your complete integration before going to production.


On-ramp (buy) test flow

1. Create a buy order

Call POST /v2/buy (API integration) or construct your referral URL (Referral integration) with:

  • A valid test wallet address
  • A supported crypto and fiat combination
  • Your sandbox redirectUrl

Verify that you receive a checkoutUrl (API) or that your referral URL loads correctly.

2. Open the checkout

Navigate to the checkoutUrl in a browser or via your embedded checkout component.

Verify:

  • The checkout loads without errors
  • Pre-populated values (wallet address, crypto, fiat, amount) match what you submitted

3. Complete identity verification

Enter test personal details (realistic-looking name, address, date of birth).

For email verification (OTP), use:

  • Email: any email address
  • Verification code: 7203

If prompted for document upload, any legible document image is accepted in sandbox.

4. Complete payment

Enter test card details:

  • Card: 4111 1111 1111 1111
  • Expiry: any future date
  • CVV: any 3 digits
  • Name on card: the same name you entered at the billing details step

5. Verify order completion

After completing payment:

  • Confirm you are redirected to your redirectUrl
  • Look up the order via GET /v2/orders/{orderId} and confirm status is complete
  • Confirm a webhook was delivered to your configured endpoint with status: "complete"

Off-ramp (sell) test flow

1. Create a sell order

Call POST /v2/sell (API integration) with a test wallet address, crypto asset, fiat currency and your sandbox redirectUrl, or open your referral URL with orderType=sell (Referral integration). For AUD, pass payid-bank-transfer as paymentMethodId.

Verify that you receive a checkoutUrl (API) or that the referral URL opens the checkout in sell mode.

2. Complete checkout

Open the checkoutUrl. Complete any required KYC steps and enter the payout details. For AUD, use the sandbox bank details.

QR code / MetaMask: The checkout displays the deposit details. Verify the deposit address, amount and memo (if any) match GET /v2/orders/{orderId}.

Native Wallet: The checkout redirects the customer to your redirectUrl with the deposit details as query parameters. Verify that your app reads providerWalletAddress, coinAmount and (if present) providerWalletAddressTag correctly.

Custodial: The customer sees an "in progress" status page and your platform receives a webhook. Verify that your platform retrieves the deposit address with GET /v2/orders/{orderId} and confirms the transfer with POST /v2/orders/{orderId}/confirm.

3. Verify completion

No crypto moves on-chain in sandbox, so a sell order may stay at waitingPayment. Ask your integration manager to progress it, then confirm the order reaches complete via order lookup or webhook, and that the complete webhook has order_type: "SELL".


Webhook test

  1. Configure a webhook URL in the Partner Dashboard (use webhook.site or ngrok for local testing).
  2. Create and complete an order.
  3. Confirm the webhook is received with the correct order_id and status.
  4. Confirm your endpoint responds with 200 OK.
  5. If using HMAC verification, confirm signature validation passes.

iFrame / WebView test

If using embedded checkout:

  1. Load the checkout URL in your iFrame or WebView component.
  2. Verify the checkout renders correctly within your layout.
  3. Confirm camera access works (attempt to reach the document upload step).
  4. Complete a full order flow inside the embedded view.
  5. Verify the WebView/iFrame navigates to your redirectUrl on completion.

Ready for production

Once you have completed the end-to-end test flow and confirmed all components are working, see Going Live for what Banxa needs before it enables your production environment.