Skip to main content

Breb Payment Flow

Breb enables payments via bank transfer using a QR code or transfer key. The buyer scans the QR or enters the key in their banking app to complete the payment.

How it works

1

Create order

Call POST /v1/orders with the amount and the Breb gateway ID. The shopper object is optional for Breb.
2

Display QR code and key

The response includes a qr_code (base64-encoded image) and a key (text string). Display both to the buyer — the QR code for scanning, and the key as a fallback for manual entry.
3

Buyer completes transfer

The buyer opens their banking app, scans the QR code or enters the transfer key, and confirms the payment.
4

Payment confirmed

Once the transfer is completed, the order status changes to confirmed. You receive a webhook notification, or you can poll for the status.

Shopper data

The shopper object is optional for Breb. The QR code and key are generated from the order, not from the buyer’s data, so you can create a Breb order without any shopper information.
  • You can omit shopper entirely or send only the fields you have. Fields you do send are validated for format (an invalid email returns 422), but none of them is required.
  • Shopper fields you did not send arrive as null in webhooks and when reading the order; the whole shopper object can be null.
  • Nequi and Daviplata are not affected: they still require the full shopper (see Creating orders).

Payer data

Breb reports who actually paid only after the transfer is confirmed, and the data is best-effort:
  • Name and document (masked, last digits only) of the payer, as reported by the payer’s bank. When present, Wava stores them on the order after confirmation, so shopper.first_name and shopper.last_name may be filled even if you created the order without shopper.
  • Email and phone number are never guaranteed for Breb payers.
  • The payer is whoever completed the transfer, which may not be the shopper you sent when creating the order.
Do not depend on these fields to fulfil the order: the order status (confirmed) is what confirms the payment.

Example request

The minimal Breb order, without shopper:

Example response

Displaying the QR code

The qr_code field contains a base64-encoded PNG image. To display it in HTML:
Display the key value as text alongside the QR code so the buyer can copy and paste it if they prefer not to scan.

Important notes

  • The buyer completes payment asynchronously (like Nequi), so you must rely on webhooks or polling for confirmation.
  • Breb does not use any shopper data to generate the QR code or key, so shopper is optional. Payer data arrives after confirmation and is best-effort (see Payer data).
  • The QR code and key have a limited validity window. If expired, cancel the order and create a new one.