BlendFi
OnrampOperations

Accepting the quote

POST /v1/quotes/:id/accept. Creates the conversion, issues the Pix QR, opens the 15-minute window.

Accepting the quote is the point at which the onramp stops being a disposable quote and becomes an operation. The call is idempotent via the Idempotency-Key header.

What the call does

POST /v1/quotes/:id/accept

In a single atomic transaction:

  1. Marks the quote as consumed and links it to the conversion created.
  2. Creates the conversion in awaiting_deposit.
  3. Issues the Pix QR (pix_qr_code + pix_tx_id), exclusive to this conversion.
  4. Reserves the operation limit against the end customer.
  5. Opens the 15-minute window, counted from accept.
  6. Snapshots your organization's current fee configuration. Future renegotiations do not affect this operation.
  7. Fires the conversion.created webhook.

What comes back

The response carries the full conversion: id, status='awaiting_deposit', quote_id, expected_source_amount, pix_qr_code, pix_tx_id, deposit_window_expires_at, destination_wallet_address, destination_wallet_network. Exact fields land in the API reference.

The 15-minute window starts here

deposit_window_expires_at = accept + 15 minutes. That is the interval in which the Pix payment takes the conversion to funded. Window expired with no payment → conversion ends in expired.

Narrative errors

The call fails in predictable scenarios:

  • Expired quote (expires_at in the past): validation error. Create a new quote.
  • Quote already consumed: conflict error. Use the existing conversion in consumed_by_conversion_id.
  • End customer has another open onramp conversion: lock error. See Per-user, per-type lock.
  • Limit exceeded: validation error. The reserve is not made; the conversion is not created.

UX recommendations

  • Render the Pix QR prominently with the exact BRL amount.
  • Show a countdown to deposit_window_expires_at.
  • Offer a "cancel" button while the conversion is in awaiting_deposit.

Next step

On this page