Skip to main content

Checkout

With PagaSul, you can accept payments by redirecting customers to our hosted checkout page. Your server creates a payment request, receives a checkout URL, and sends the customer there.

Here is a step-by-step description of the payment processing flow with the checkout. en_checkout_flow.svg

How to integrate

1. Create a pay-in

Send a POST request to /v2/pay-in. Include a signature in the header.

curl -X POST https://api.pagasul.com/v2/pay-in \
-H "Content-Type: application/json" \
-H "signature: <calculated>" \
-d '{
"client_id": 123,
"client_payment_id": "order_42",
"amount": 150.00,
"currency": "BRL",
"payer": {
"id": "user_1234"
},
"payment_options": {
"callback_url": "https://your-site.com/webhook",
"return_url": "https://your-site.com/thank-you"
}
}'

client_payment_id must be unique per payment in your system — it is used for idempotency.

To preselect a payment method, pass payment_method (e.g. "BR.PIX"). Without it, the customer chooses on the checkout page. See Payment Methods for available codes and any additional required fields per method.

Full parameter list

ParameterTypeRequiredDescription
client_idintegerYesYour account identifier, provided upon integration
client_payment_idstringYesYour payment ID, must be unique to the client_id used
payment_methodstringOptionalPreselected payment method code (see Supported payment methods section). If not passed, the customer will be presented with a form to select a method from those connected on your client_id
currencystringYesPayment currency (see Supported payment methods section)
amountdecimalYesRequested payment amount (for example: pass 12.34 for 12 dollars 34 cents amount)
payerobjectOptionalCustomer data section
payer.idstringYesA unique identifier for a customer or customer account on your side. It is used to accumulate customer data and for anti-fraud protection
payer.is_trustedbooleanOptionalIf passed and "true" customer marked as trusted (for use please consult Pagasul representative)
payer.namestringOptionalCustomer name
payer.emailstringOptionalCustomer email
payer.countrystringOptionalCustomer country (alpha-2 code)
payer.statestringOptionalCustomer state
payer.citystringOptionalCustomer city
payer.addressstringOptionalCustomer address
payer.phonestringOptionalCustomer phone
payer.languagestringOptionalPreferred language for customer
payer.cpfstringOptionalCustomer CPF (Cadastro de Pessoas Físicas) for Brazil payment methods. Can be passed in following formats: "231.002.999-00" or "23100299900"
payer.cuitstringOptionalCustomer CUIT (Unique Tax Identification Code) for Argentina payment methods. Can be passed in following formats: "30-69330706-2" or "30693307062"
payer.citizenship_cardstringOptionalNumber of the Citizenship Card (Cédula de Ciudadanía) for Colombian/Ecuadorian payment methods
payer.nitstringOptionalUnique Taxpayer Number (Número de Identificación Tributaria) for Colombian/Bolivian payment methods
payer.passtringOptionalPassport needed for Bolivian/Ecuadorian payment methods
payer.cestringOptionalCustomer Identity card of Foreigners (Cédula de Extranjería) for Colombian payment methods
payer.tistringOptionalCustomer identity document (Tarjeta de Identidad) for Colombian payment methods
payer.cistringOptionalCustomer identity document (Cédula de Identidad) for Bolivia/Venezuela payment methods. For Venezuela it must start with letter V or E
payer.rucstringOptionalEcuadorian taxpayer number (Registro Único de Contribuyente)
payer_accountobjectOptionalCustomer account data section
payer_account.bank_codestringOptionalPayer bank code (Mandatoriness see in section Supported payment methods). One of bank code from list (see Bank Codes section)
payment_optionsstringOptionalOptional section for extra parameters used for payment flow adjustment
payment_options.return_urlstringOptionalIf passed, the customer will be returned to the specified URL after the payment is completed
payment_options.callback_urlstringOptionalIf passed, the notification on payment status change will be sent to the specified URL
payment_options.reclaim_client_payment_idstringOptionalPlease, consult Pagasul representative about using this parameter
payment_extra_paramstringOptionalPlease, contact to your manager for possible parameter values and purpose

Also the full parameter list, see Create pay-in in the API Reference.

2. Redirect the customer

A successful request returns a 200 response with status: "redirect" and a checkout URL:

{
"payment_id": 246001234,
"status": "redirect",
"checkout_data": {
"method": "GET",
"url": "https://checkout.pagasul.com/pay?..."
}
}

Redirect the customer to checkout_data.url using the HTTP method in checkout_data.method. Store the payment_id — you'll need it to correlate callbacks.

For the full response structure, see Response.

3. Handle the callback

When the payment is completed, PagaSul sends a POST to your callback_url. Verify the signature in the header, then check the status field:

StatusMeaningAction
successPayment completedFulfil the order
declinePayment declinedNotify the customer
failedProcessing errorContact PagaSul support

For all statuses and result codes, see Statuses & Codes. For the full callback structure, see Callbacks.

4. Return the customer

After checkout, PagaSul redirects the customer to your return_url. Use it to display a confirmation page. Do not use this redirect to determine payment outcome — use the callback for that.