> ## Documentation Index
> Fetch the complete documentation index at: https://developer.pagou.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Accept Voucher Payments

> Create voucher transactions for local payment methods such as Boleto, SPEI, Mercado Pago, Webpay, CODI, PSE, and other country-specific cash or bank-transfer flows.

Use `method: "voucher"` when the customer will pay outside a card or Pix flow through a local payment instruction, bank-transfer reference, redirect, or payable document.

`voucher` is the public Pagou method. The available local payment option depends on the account setup, currency, and country. Do not send local option names such as `boleto`, `spei`, `mercadopago`, `webpay`, or `codi` to the transactions API.

## Regional meaning

| Customer market  | Common local payment option behind `voucher`                                    | What the customer receives                                                                        |
| ---------------- | ------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- |
| Brazil, `BRL`    | Boleto                                                                          | Barcode, digitable line, due date, and boleto URL when available.                                 |
| Mexico, `MXN`    | SPEI bank transfer                                                              | CLABE/account, reference, and bank-transfer instructions. `voucher.url` is always `null` for MXN. |
| Argentina, `ARS` | Local cash or wallet voucher, such as Mercado Pago when enabled for the company | Reference, redirect URL, or local payment instructions.                                           |
| Chile, `CLP`     | Webpay or local voucher option                                                  | Redirect/payment URL or payment instructions.                                                     |
| Colombia, `COP`  | PSE or local voucher option                                                     | Redirect/payment URL or payment instructions.                                                     |
| Peru, `PEN`      | Local voucher or bank-transfer option                                           | Reference, payment URL, or payment instructions.                                                  |

Availability depends on the account's enabled countries, currencies, and payment methods. If the selected country and currency are not enabled, payment creation is rejected.

## Create the transaction

Create a voucher payment with `POST /v2/transactions`.

```json theme={null}
{
  "external_ref": "order_3001",
  "amount": 125000,
  "currency": "MXN",
  "method": "voucher",
  "buyer": {
    "name": "Ada Lovelace",
    "email": "ada@example.com",
    "document": {
      "type": "CURP",
      "number": "LOLA800101MDFXXX09"
    },
    "address": {
      "street": "Av. Paseo de la Reforma",
      "city": "Ciudad de Mexico",
      "zipCode": "06600",
      "country": "MX"
    }
  },
  "products": [
    {
      "name": "Annual plan",
      "price": 125000,
      "quantity": 1
    }
  ],
  "notify_url": "https://example.com/webhooks/pagou"
}
```

`amount` and product `price` use the smallest unit of the selected currency. For BRL and MXN, send cents/centavos.

For LATAM voucher payments, send `buyer.document` and `buyer.address.country` whenever possible. Some SPEI configurations can create the payment without a document, but most voucher/bank-transfer options validate the document type for the selected country.

Do not include `token`. Card tokens are only valid for `method: "credit_card"`.

## Accepted document types

Use these values in `buyer.document.type` when the buyer is paying with `method: "voucher"`. The country is read from `buyer.address.country` when present; otherwise Pagou can infer a primary country from `currency`.

| Country    | Country code | Accepted document types  |
| ---------- | ------------ | ------------------------ |
| Argentina  | `AR`         | `DNI`, `CUIT`            |
| Bolivia    | `BO`         | `CI`, `CE`, `NIT`        |
| Brazil     | `BR`         | `CPF`, `CNPJ`            |
| Chile      | `CL`         | `RUT`, `RUN`             |
| Colombia   | `CO`         | `CC`, `NIT`              |
| Costa Rica | `CR`         | `CDI`                    |
| Ecuador    | `EC`         | `CI`, `PP`, `RUC`, `PAS` |
| Guatemala  | `GT`         | `DPI`, `CUI`, `NIT`      |
| Mexico     | `MX`         | `RFC`, `CURP`            |
| Panama     | `PA`         | `CE`                     |
| Paraguay   | `PY`         | `CI`, `RUC`              |
| Peru       | `PE`         | `DNI`, `RUC`             |
| Uruguay    | `UY`         | `CI`, `RUC`              |

This table lists the document types accepted by the API validation layer. Payment availability for each country still depends on the company's enabled payment setup.

## Present the instructions

The transaction response exposes the normalized `voucher` object.

```json theme={null}
{
  "id": "018f1f2e-7b44-7c9a-8d3e-1a2b3c4d5e71",
  "status": "pending",
  "method": "voucher",
  "amount": 125000,
  "currency": "MXN",
  "voucher": {
    "barcode": "646180123456789012",
    "digitable_line": "646180123456789012",
    "url": null,
    "expiration_date": "2026-05-12T23:59:59.000Z",
    "instructions": "Pay using the bank transfer reference before the expiration date.",
    "receipt_url": null
  }
}
```

For MXN (SPEI), the API never returns a hosted payment URL: `voucher.url` is always `null` and the
CLABE in `voucher.barcode` is the payment instruction. Other currencies keep their URL when the
local payment option provides one.

| Field                     | Meaning                                                                                                                                             |
| ------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| `voucher.barcode`         | Barcode, bank account, CLABE, payment code, or reference, depending on the local payment option.                                                    |
| `voucher.digitable_line`  | Digitable line, bank-transfer reference, CLABE, or equivalent customer-copyable instruction.                                                        |
| `voucher.url`             | Payment page, boleto URL, redirect URL, QR image URL, or hosted voucher URL. Use it as the main call to action when present. Always `null` for MXN. |
| `voucher.expiration_date` | Due date or expiration date for the payment instruction.                                                                                            |
| `voucher.instructions`    | Additional bank or payment instructions.                                                                                                            |
| `voucher.receipt_url`     | Receipt URL when available. It usually appears after payment confirmation.                                                                          |

Fields are nullable because local payment options use different instruction formats. Build your checkout to display every field that is present instead of requiring one fixed Boleto-only shape.

## Delayed instruction updates

Some local payment options return all voucher data in the create response. Others return `status: "pending"` first and deliver the voucher fields through a webhook shortly after.

Use this sequence:

1. Create the transaction with `method: "voucher"`.
2. If `voucher.url`, `voucher.digitable_line`, or `voucher.barcode` is present, show it immediately.
3. Subscribe to [payment webhooks](/webhooks/payment-events) and update the customer-facing page when the same transaction receives voucher instructions.
4. Reconcile with `GET /v2/transactions/{id}` if your worker missed a webhook or if the customer refreshes the checkout.

Redirect-based voucher options such as Webpay or CODI are still voucher payments. Treat their URL as the voucher payment action, not as a card 3DS challenge.

## Relevant endpoints

| Endpoint                                      | Use                                                                                             |
| --------------------------------------------- | ----------------------------------------------------------------------------------------------- |
| `POST /v2/transactions`                       | Create the voucher transaction.                                                                 |
| `GET /v2/transactions/{id}`                   | Retrieve the latest status and voucher fields.                                                  |
| `GET /v2/transactions?paymentMethods=voucher` | List voucher transactions for reconciliation or operations.                                     |
| `PUT /v2/transactions/{id}/refund`            | Request a refund after payment is confirmed, when the selected payment option supports refunds. |
| Payment webhooks                              | Receive `transaction.pending`, `transaction.paid`, refund, expiration, and chargeback events.   |

## Read next

* [Create a Transaction](/api-reference/transactions/create)
* [Get a Transaction](/api-reference/transactions/get)
* [Payment Events](/webhooks/payment-events)
* [Payments with the TypeScript SDK](/sdks/typescript/payments)
