Boleto Bancário

Boleto Bancário is a popular payment method in Brazil, where the majority of the population does not use a credit card. Consumers are presented with a generated voucher containing a barcode, which they can use to pay in several different ways - either taking it to a local store and paying in cash, scanning the barcode at an ATM, or copying the barcode number into their bank's online environment. Learn more about Boleto.

Payment method properties

Markets (consumer)BR
Processing currenciesBRL
Consumer currenciesBRL
Authentication methodsREDIRECT SCAN_CODE
Authentication timeout3 days
Minimum payment amount0.02 BRL
Maximum payment amount250,000.00 BRL
Payment instrumentPASSTHROUGH_WALLET
Recurring paymentsNo
Separate capturesNo
RefundFull - Partial - Multiple
Refund validity365 days
DisputesNo
Settlement riskNo

Make a Boleto payment

Boleto payments follow our standardized REDIRECT and SCAN_CODE payment flows. Enabling you redirect the consumer to the provider or offer a seamless desktop experience by generating the ITF code on your site.

To create a Boleto payment, you'll need to provide the following data at minimum when calling our payment charges endpoint:

Field

Description

paymentMethod

BOLETO

amount.value

The amount to be paid in the smallest units of the currency used.

amount.currency

BRL

consumer.name

Full name of the consumer.

consumer.country

The country of residence of the consumer.

consumer.taxIdentification

CPF (individual tax Id) or CNPJ (business tax Id).

consumer.billingAddress.street

The street name and number of the address.

consumer.billingAddress.postalCode

The address postal code.

consumer.billingAddress.city

The address city.

consumer.billingAddress.country

The address region.

authenticationSettings: REDIRECT settings.returnUrl

Specify the URL to which the consumer should be redirected after completing the payment. This is required for the REDIRECT payment flow.

authenticationSettings: SCAN_CODE settings.scanBy

Specify the date by which the consumer must scan the Boleto voucher code.

Request

POST /v1/payment-charges

{
  "paymentMethod": "BOLETO",
  "amount": {
    "value": 100,
    "currency": "BRL"
  },
  "consumer": {
    "name": "John Smith",
    "country": "BR",
    "taxIdentification": "014.325.740-43",
    "billingAddress": {
      "street": "Bela Vista 41",
      "postalCode": "02366-140",
      "city": "São Paulo",
      "region": "SP"
    }
  },
  "authenticationSettings": [
    {
      "type": "REDIRECT",
      "settings": {
        "returnUrl": "https://www.webshop.com/order-results-page"
      }
    },
    {
      "type": "SCAN_CODE",
      "settings": {
        "scanBy": "2025-06-23T20:24:27Z"
      }
    }
  ]
}

Response

You'll receive our standard payment charge response with the available authentication methods:

{
  "id": "charge_Y3JVzvEaJpvG53xd2R2Zt",
  "paymentMethod": "BOLETO",
  "paymentMedium": "ECOMMERCE",
  "scheduleType": "UNSCHEDULED",
  "instrumentId": "instr_Asu0ig2PXXZSiNrhY44A5",
  "currency": "BRL",
  "country": "BR",
  "status": "AUTHENTICATION_PENDING",
  "consumer": {
    "country": "BR"
  },
  "authenticationMethods": [
    {
      "details": {
        "codeType": "QR",
        "codeImage": "https://qr.ppro.com/payment/charge_Y3JVzvEaJpvG53xd2R2Zt/qr.png",
        "codePayload": "charge_Y3JVzvEaJpvG53xd2R2Zt",
        "codeDocument": "cdn.ppro.com/document.html?charge=charge_Y3JVzvEaJpvG53xd2R2Zt",
        "scanBy": "2025-06-22T11:09:22.937Z"
      },
      "type": "SCAN_CODE"
    },
    {
      "details": {
        "requestUrl": "https://redirection-target.ppro.com",
        "requestMethod": "GET"
      },
      "type": "REDIRECT"
    }
  ],
  "authorizations": [
    {
      "id": "authz_aPobet0FNZNU1bYqfexFd",
      "amount": 1000,
      "status": "AUTHENTICATION_PENDING",
      "createdAt": "2025-06-21T08:34:20.766Z",
      "updatedAt": "2025-06-21T08:34:20.766Z"
    }
  ],
  "captures": [],
  "refunds": [],
  "discards": [],
  "voids": [],
  "createdAt": "2025-06-21T08:34:20.114Z",
  "updatedAt": "2025-06-21T08:34:20.766Z",
  "_links": {
    "authorizations": {
      "href": "/v1/payment-charges/charge_Y3JVzvEaJpvG53xd2R2Zt/authorizations"
    },
    "captures": {
      "href": "/v1/payment-charges/charge_Y3JVzvEaJpvG53xd2R2Zt/captures"
    },
    "refunds": {
      "href": "/v1/payment-charges/charge_Y3JVzvEaJpvG53xd2R2Zt/refunds"
    },
    "discards": {
      "href": "/v1/payment-charges/charge_Y3JVzvEaJpvG53xd2R2Zt/refunds"
    },
    "voids": {
      "href": "/v1/payment-charges/charge_Y3JVzvEaJpvG53xd2R2Zt/voids"
    }
  }
}

Pick the desired authentication method

REDIRECT

  1. Redirect your consumer to the returned $.authenticationMethods[?(@.type == "REDIRECT")].details.requestUrl.
    For example, with the value of https://redirection-target.ppro.com/ using the returned $.authenticationMethods[?(@.type == "REDIRECT")].details.requestMethod HTTP method.
  2. The consumer will be presented with the reference number and instructions to complete the payment.

SCAN_CODE

  1. Render the code using one of the techniques available.
  2. The consumer will scan the code to complete the payment.

Handling the payment result

REDIRECT

  1. After the consumer completes the payment, they are redirected to the returnUrl specified in the payment charge creation request.
  2. Upon redirect back to your site, retrieve the latest payment status by performing a GET /v1/payment-charges/{paymentChargeId}. Use the returned status field to determine and display the final payment outcome to the consumer.
  3. Additionally, webhooks are triggered to notify you of the payment result. This ensures you receive the outcome even if the consumer closes their browser or fails to return to your website.

SCAN_CODE

  1. You'll be notified of the payment outcome via Webhook.
  2. You can check the payment status at any time by making a GET /v1/payment-charges/{paymentChargeId}.
  3. Use the Status that you received to display the payment outcome to the consumer.

Refunds

Boleto does not provide native support for refunds. However, PPRO offers a solution to address this limitation through a manual refund process available to its customers. This process involves collaborative efforts between PPRO and its customers, wherein consumer information is shared with PPRO. Subsequently, PPRO's team manages the refund process by initiating a bank transfer to reimburse the consumer.

The refundDescriptor field serves the purpose of incorporating the consumer details, including their name, tax identification number (CPF/CNPJ), and pertinent banking information such as account/agency details or a Pix key.

POST /v1/payment-charges/{paymentChargeId}/refunds

{
	"amount": 1000,
	"merchantRefundReference": "5c019979-0751-469e-96e0-b67f1d95c577",
	"refundDescriptor": "Name: João Comprador CPF:12345678909 Bank Name: Banco Santander Agency Number: 1234 Account Number: 123456789"
}

Payment instrument

A PASSTHROUGH_WALLET instrument will be created for Boleto, with no additional data provided.

Request

GET /v1/payment-instruments/{instrument-id}

Response

{
    "id": "instr_5ChenWBwW8xARvJ3GccAx",
    "type": "PASSTHROUGH_WALLET"
}

Sandbox testing

A dummy Boleto voucher is created and the payment charge is automatically moved to CAPTURED after 30 seconds.