Skip to main content
Accepts a quote created via Create Conversion, locking in the rate and scheduling delivery. The balance in from_currency must be available at the moment of accept — it is not reserved when the quote is created.

Request body

Response 200 OK (accepted)

This is the one endpoint in the API that returns state, because state is what carries the outcome of the accept. Everywhere else, read status / substatus instead. A 200 here means the trade is locked and delivery is scheduled — it does not mean funds have already landed. Delivery completes at settlement_eta; see Get Conversion or the webhook to track it.

Outcomes

POST /v2/rfq/accept is the only committing operation in the conversion flow, so it has the widest set of outcomes. Every one of them is listed here.
A 202 is not a success. It means the accept is still being evaluated and no decision has been recorded. Do not treat it as confirmation and do not resubmit the accept — re-read Get Conversion or wait for the webhook until you reach a terminal outcome.
When a 422 is caused by a limit ceiling rather than balance, GET /v2/rfq/{id} exposes limit_block_source to tell you which gate blocked it — operational for the desk ceiling, compliance for the KYB tier. The field is absent when the refusal was for insufficient balance. 503 and 202 are safe to retry. 409 needs a re-read first. 410 and 422 are final for that rfq_id. Status codes: 200, 202, 400, 401, 404, 409, 410, 422, 500, 503