Skip to main content
Use rail: "NEQUI" to request payment from a payer’s Nequi account. HelloPay sends the payment request to the mobile number in inlineCustomer.phone; the payer approves it in Nequi. Review How to create your first payin for shared fields, and configure webhooks to receive the final result.

How the flow works

  1. Create the payin with rail: "NEQUI" and the payer’s Nequi mobile number in inlineCustomer.phone.
  2. HelloPay creates the payin in PENDING, then starts the request and moves it to PROCESSING. The response includes sourceData.phone with the number used for the request.
  3. Ask the payer to check Nequi and approve the payment request. This flow has no bank redirect URL or QR code.
  4. Wait for payin.confirmed or payin.declined, or poll GET /payins/{id} until the status is final. An unresolved Nequi payin is checked for expiration after 15 minutes.
Use the final payin status or webhook event to fulfill an order.

Request example

inlineCustomer.phone must be a Colombian mobile number in +573XXXXXXXXX format. It is the Nequi destination for the payment request. The inlineCustomer object also requires name, idType, idNumber, and email. Do not send a nequi object in the payin request; no method-specific object is required.

Example creation response

The creation response shows that the request was queued. sourceData.phone identifies the mobile number; it is not a payment confirmation. If the payer approves, the payin becomes CONFIRMED. If Nequi rejects it or the request remains unresolved at the expiration check, the payin becomes DECLINED. In the sandbox, use the documented test inlineCustomer.idNumber values to simulate final outcomes. No real Nequi request is sent.