Conversions
Accept Conversion
POST /v2/rfq/accept — accept an existing quote, choosing the settlement day and destination.
Accepts a quote created via Create Conversion, locking in the rate and scheduling delivery. The balance in
Response
A
Status codes:
from_currency must be available at the moment of accept — it is not reserved when the quote is created.
Request body
| Field | Type | Required | Description |
|---|---|---|---|
rfq_id | string | Yes | ID returned by Create Conversion |
settlement_day | string | Yes | "d0" or "d1" |
wallet_id | string | Conditional | Destination crypto wallet ID (crypto payout) |
pix_key | string | Conditional | Destination Pix key (BRL payout) |
Response 200 OK (accepted)
| Field | Type | Description |
|---|---|---|
rfq_id | string | ID of the conversion |
state | string | DONE once accepted |
amount_from | float | Confirmed amount sent |
amount_to | float | Confirmed amount to be received |
rate | float | Confirmed rate |
quote_pair | string | Quote pair identifier |
settlement_eta | string | Confirmed settlement time (RFC 3339) |
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.
Error responses
| HTTP | State | Reason |
|---|---|---|
409 Conflict | EXPIRED | The rate expired and the quote was renewed — call GET on the conversion and resubmit accept with the new rate |
410 Gone | DEPRECATED | The renewal window closed — create a new quote |
422 Unprocessable Entity | ERROR | Insufficient balance, limit exceeded, or another business rule failure |
202 Accepted | other | Still processing — retry the accept, or poll GET, until a terminal state is reached |
200, 202, 400, 401, 409, 410, 422, 500

