# Binance Pay

> Let customers pay from their Binance account.

Section: Accepting Payments
Source: https://coincircuit.io/docs/guides/binance-pay/
Interactive version: https://coincircuit.io/api-reference?tab=guides&guide=binance-pay

## API reference

- POST `/api/v1/payments`: [Create a payment](https://coincircuit.io/api-reference/#tag/payments/POST/api/v1/payments)
- POST `/api/v1/payments/{reference}/pay-with-exchange`: [Create a Binance Pay link](https://coincircuit.io/api-reference/#tag/payments/POST/api/v1/payments/{reference}/pay-with-exchange)

Binance Pay lets your customers pay from their Binance account. You get the same payment webhooks as any other crypto payment.

## On the checkout page
Binance Pay is on the checkout page, with nothing to set up.

1. Your customer picks a token and blockchain, e.g. USDT on Tron.
2. They select **Pay with Binance**.
3. On a computer, the page shows a QR code to scan with the Binance app. On a phone, Binance opens with the payment ready to confirm.
4. The page shows when the payment arrives.

## In your own checkout

### How it works
1. Create a payment with `POST /api/v1/payments`, with the token and blockchain your customer picked.
2. Request a Binance Pay link with `POST /api/v1/payments/{reference}/pay-with-exchange`.
3. Open the link on a phone, or show it as a QR code on a computer.
4. Wait for the `payment.completed` webhook.

If the payment was created without a token and blockchain, generate its deposit address with `POST /api/v1/payments/{reference}/address` before requesting the link.

### Request the link

```http
POST https://api.coincircuit.io/api/v1/payments/cs-7f3a9c1e5b2d4f8a6c0e9b1d3a5f7c2e/pay-with-exchange
```

```json
{
  "paymentMethod": "binance_pay_onchain"
}
```

| Field | Type | Required | Description |
| :--- | :--- | :--- | :--- |
| `paymentMethod` | string | Yes | How the customer pays. Use `binance_pay_onchain`. |

The response:

```json
{
  "success": true,
  "message": "Exchange payment initiated",
  "data": {
    "sessionReference": "cs-7f3a9c1e5b2d4f8a6c0e9b1d3a5f7c2e",
    "paymentMethod": "binance_pay_onchain",
    "amount": "250.00000000",
    "asset": "USDT",
    "chain": "tron",
    "link": "https://app.binance.com/uni-qr/qccnt?amount=250&cryptoCurrency=USDT&externalOrderId=3f9c2b7e4d1a4c0f9b8e7d6c5b4a3f2e&merchantCode=coincircuit&sign=a6fdb970954b3407e63c2518307bd42b8b1de3fb128914a9f5b926077efcec5f",
    "expiresAt": "2026-10-13T15:42:00.000Z"
  }
}
```

| Field | Meaning |
| :--- | :--- |
| `sessionReference` | The payment the link pays. |
| `amount` | What the customer is asked to send. After a partial payment, this is what is still owed. |
| `asset` | The token. |
| `chain` | The blockchain. |
| `link` | Opens Binance with the payment ready to confirm. |
| `expiresAt` | When the link stops working. |

### Errors
| Status | When |
| :--- | :--- |
| `400` | The payment is no longer active, is already paid, or the token, blockchain or amount isn't supported. |
| `403` | Binance Pay is turned off for your account. |
| `404` | The payment was not found. |
