Skip to main content

Introduction

The AliX Pay API pays fiat out to bank accounts and merchant QR codes across 13 currencies, settled against the crypto fund you hold with AliX. You top the fund up on-chain; every order you create debits it and pays a recipient in local currency.

Two services sit on top of that fund:

ServiceWhat it does
Scan-to-PayYour user scans a merchant QR code; you decode it, quote it, and pay the merchant.
CashoutYou pay fiat out to a recipient's bank account directly.

Everything else in the API supports those two: authentication, the KYC that gates them, your fund and its ledger, and bank-account resolution.

Every endpoint is documented and runnable in the API Explorer — this section covers what the endpoint list cannot tell you: how auth works, what the response envelope means, what each error code implies, and how an order moves through its lifecycle.

This is API v3

Every path on this page is rooted at /v3. If your integration calls /api/v2/*, you are on the older API — see API v2 (legacy). It is frozen but still supported, and it is different enough that nothing here transfers: no access tokens, an RSA signature in every request body, and its own response envelope.

Base URLs

EnvironmentBase URL
Sandboxhttps://sandbox.alixpay.com
Productionhttps://api.alixpay.com

Call over HTTPS. Every path is rooted at /v3 — for example https://sandbox.alixpay.com/v3/scan-to-pay/orders. Build and test against the sandbox first; it behaves identically to production and adds outcome simulation so you can settle or fail an order on demand.

Integration flow

  1. Authenticate. Sign a client assertion with your private key, exchange it for an access token, and send that token on every request. See Authentication.
  2. Onboard the user. Each token acts for exactly one user, named by userEmail. Submit that user's KYC and wait until it is verified — transaction endpoints reject an unverified user. See KYC.
  3. Quote. Preview the crypto cost and fee before you commit to anything.
  4. Create the order. Send your own unique orderId; it is also the idempotency key.
  5. Track it to completion. Orders settle asynchronously. Poll the order, or register a webhook and be told. See Orders and Webhooks.

Two things that surprise people

Every response, success or failure, is the same envelope, and you branch on its code field, not on the HTTP status. See Response format.

The bank list is not fixed. Fetch the banks available for a fiat currency from List scan-to-pay banks or List cashout banks rather than hard-coding one. The currency enum grows as coverage does, too.