Binance API / SAPI / C2C
BINANCE SAPI · C2C

Mark Order as Paid API

Notify the counterparty and update peer-to-peer (C2C) order status to paid after completing external fiat payment transfer.

ENDPOINT
POST /sapi/v1/c2c/orderMatch/markOrderAsPaid
Authentication USER_DATA / SIGNED
API Group C2C / Order Match
Method POST
Response JSON

Overview

This endpoint enables buyers and automated payout bots to confirm that the fiat funds have been transferred to the seller's selected payment account. Calling this endpoint changes the order state from TRADING to BUYER_PAYED (Paid), locks the cancellation window, and notifies the seller to verify receipt and release crypto escrow.

Automated buy systems, banking integrations, and mobile payout daemons trigger this endpoint immediately after receiving successful transaction confirmations from upstream bank rails or payment gateways.

01

Request Parameters

Parameters accepted in Body and HTTP Headers.

ParameterInTypeRequiredDescription
clientTypeHeaderSTRINGRequiredClient Device Type initiating the request (e.g., WEB, APP, WEB_MOBILE).
orderNumberBodySTRINGRequiredUnique order number identifier to mark as paid.
payIdBodyLONGOptionalPayment configuration identifier used by the buyer to execute the fiat transfer.
x-gray-envHeaderSTRINGOptionalEnvironment flag identifier used for internal gray/stage testing.
x-trace-idHeaderSTRINGOptionalCustom client trace ID for request lifecycle tracking and debugging.
x-user-idHeaderSTRINGOptionalTarget user identifier for context validation.
!

Strict Payment Verification Policy

Only call this endpoint after the full fiat transfer has been processed by your bank or payment provider. Marking orders as paid without completing real fiat transfer can result in account suspension and trade dispute penalties.

02

Request Example

Example POST request using cURL to mark an order as paid.

cURL BASH
curl -X POST \
'https://api.binance.com/sapi/v1/c2c/orderMatch/markOrderAsPaid' \
-H 'clientType: WEB' \
-H 'Content-Type: application/json' \
-d '{
  "orderNumber": "202608161234567890",
  "payId": 123456
}'

03

Response

Example response returned on successful status update.

RESPONSE 200 OK
{
    "code": "000000",
    "message": "success",
    "data": {
        "orderNumber": "202608161234567890",
        "orderStatus": "BUYER_PAYED"
    },
    "success": true
}

Response Fields

FieldTypeDescription
codeSTRINGStandard Binance status code ("000000" indicates success).
messageSTRINGResponse execution feedback or status description.
data.orderNumberSTRINGUnique identifier of the updated C2C trade order.
data.orderStatusSTRINGUpdated order lifecycle state (e.g., BUYER_PAYED).
successBOOLEANIndicates overall request execution result.

04

How It Works

Workflow for marking a C2C trade order as paid.

01 Execute Transfer Send fiat funds via banking rails or payment apps.
 
02 Attach Pay Details Pass orderNumber and selected payId in request body.
 
03 Send POST Request POST payload to /markOrderAsPaid endpoint.
 
04 Status Updated Order transitions to Paid; seller is notified to release.

Common Use Cases

Automated Payout Webhooks

Trigger status updates automatically when banking API callbacks confirm outgoing wire transfer execution.

Payment Confirmation Buttons

Power "Transferred, notify seller" action buttons inside custom merchant dashboards and client applications.

Arbitrage Execution Bots

Instantly notify the seller upon successful programmatic fiat settlement to speed up cycle times.

💬
Telegram WhatsApp