Create direct order
Create and process a payment order directly. The API initiates payment processing immediately based on the selected gateway.
Nequi and Daviplata orders require the shopper object with email, phone_number, country, id_number and id_type; a missing field returns 422. Use the Get Document Types endpoint to retrieve valid id_type values. For Breb the shopper object is optional (see below).
Gateway-specific behavior:
Nequi — Additionally requires phone_number in the shopper object. A push notification is sent to the buyer’s Nequi app. The buyer approves or rejects in-app. You receive a webhook when the payment is confirmed or cancelled.
Daviplata — Uses id_number and id_type to initiate the OTP flow. Only accepts CC, CE, and TI document types. The buyer receives an OTP via SMS. You must submit the OTP using the Daviplata OTP endpoint to complete payment.
Breb — No gateway-specific fields and the shopper object is optional: the QR code and transfer key are generated from the order itself, not from the buyer’s data. You can omit shopper or send only the fields you have; fields you send are validated for format, none is required, and the ones you did not send come back as null. The API returns a QR code (base64 encoded) and a transfer key. The buyer uses either to complete the interbank transfer via their banking app. You receive a webhook when the payment is confirmed. The payer’s data (name and masked document) arrives after the payment is confirmed and is best-effort: it is the identity reported by the payer’s bank, which may differ from the shopper sent on the order. Email and phone number are never guaranteed for Breb payers.
The id_payment_gateway value must come from the Get Payment Gateways endpoint. Do not hardcode gateway IDs as they may vary by store configuration.
Authorizations
Merchant key for store identification. Required for all API requests.
Body
Order amount. Must be greater than 0.
x >= 0.0150000
Order description displayed to the buyer during checkout.
1 - 255"Premium subscription - Monthly"
ISO 4217 currency code. Defaults to store currency if omitted.
3^[A-Z]{3}$"COP"
Buyer data. Required for Nequi and Daviplata direct orders, where email, phone_number, country, id_number and id_type must all be present (a missing one returns 422). Optional for Breb: omit it or send only the fields you have; fields you send are validated for format.
Your reference for this order, used to correlate Wava orders with your system. It is also the idempotency key of the order, scoped to your store: resending an order_key with the same amount and currency resolves to the existing order (an already paid one answers 200 with already_processed: true and starts no new payment), and resending it with a different amount or currency answers 409 ORDER_KEY_CONFLICT. Use a unique order_key per order.
100"order-12345"
URL to redirect buyer after successful payment.
"https://mystore.com/success"
URL to redirect buyer if payment is cancelled.
"https://mystore.com/cancel"
URL to redirect buyer if payment fails.
"https://mystore.com/error"
Device identifier for session tracking.
100"device-12345"
Response
Order created and payment initiated successfully