# Boleto

## Payin by Boleto

<mark style="color:green;">`POST`</mark> `https://gateway-test.pagsmile.com/trade/pay`

This endpoint allows you to submit a payin by Boleto in Brazil.

#### Headers

| Name                                            | Type   | Description                                |
| ----------------------------------------------- | ------ | ------------------------------------------ |
| Content-Type<mark style="color:red;">\*</mark>  | string | application/json; chartset=UTF-8           |
| Authorization<mark style="color:red;">\*</mark> | string | Basic Base($app\_*id:$security\_*&#x6B;ey) |

#### Request Body

| Name                                                       | Type   | Description                                                                                                                                                                                      |
| ---------------------------------------------------------- | ------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| app\_id<mark style="color:red;">\*</mark>                  | string | <p>created app's id at dashboard</p><p>- Max. 32 chars -</p>                                                                                                                                     |
| customer.phone                                             | string | User's phone                                                                                                                                                                                     |
| customer.email<mark style="color:red;">\*</mark>           | string | User's email                                                                                                                                                                                     |
| customer.identify.number<mark style="color:red;">\*</mark> | string | <p>User's identification number</p><p>- 11 digits if CPF or 14 digits if CNPJ -</p>                                                                                                              |
| method<mark style="color:red;">\*</mark>                   | string | Fixed value: Boleto                                                                                                                                                                              |
| out\_trade\_no<mark style="color:red;">\*</mark>           | string | <p>ID given by the merchant in their system<br>- Max. 64 chars - </p>                                                                                                                            |
| notify\_url<mark style="color:red;">\*</mark>              | string | Where Pagsmile will send notification to                                                                                                                                                         |
| customer.identify.type<mark style="color:red;">\*</mark>   | string | <p>User's identification type</p><p>- CPF or CNPJ -</p>                                                                                                                                          |
| customer.name<mark style="color:red;">\*</mark>            | string | User's name                                                                                                                                                                                      |
| timestamp<mark style="color:red;">\*</mark>                | string | <p>yyyy-MM-dd HH:mm:ss<br>- Max. 19 chars -</p>                                                                                                                                                  |
| subject<mark style="color:red;">\*</mark>                  | string | <p>payment reason or item title</p><p>- Max. 128 chars -</p>                                                                                                                                     |
| order\_amount<mark style="color:red;">\*</mark>            | string | <p>payment amount<br>- 5\~10,000 BRL -</p>                                                                                                                                                       |
| order\_currency<mark style="color:red;">\*</mark>          | string | Fixed value: BRL                                                                                                                                                                                 |
| content<mark style="color:red;">\*</mark>                  | string | <p>payment reason detail or item detail. This will be shown on the bank bill.</p><p>- Max. 255 chars -</p>                                                                                       |
| buyer\_id<mark style="color:red;">\*</mark>                | string | merchant user's id                                                                                                                                                                               |
| address.zip\_code<mark style="color:red;">\*</mark>        | string | zip code                                                                                                                                                                                         |
| website\_url                                               | string | <p>merchant website URL</p><p>- Max. 128 chars -</p>                                                                                                                                             |
| address.street                                             | string | <p>street</p><p>- Required if zip\_code not provide -</p>                                                                                                                                        |
| address.street\_number                                     | string | <p>street number</p><p>- Required if zip\_code not provide -</p>                                                                                                                                 |
| address.city                                               | string | <p>city</p><p>- Required if zip\_code not provide -</p>                                                                                                                                          |
| address.state                                              | string | <p>state<br>- Required if zip\_code not provide -</p>                                                                                                                                            |
| return\_url                                                | string | Redirect to Merchant's url when user finished checkout                                                                                                                                           |
| cancellation\_express                                      | string | <p>m(minutes), h(hours), d(days).<br>The value must be an integer. Ex: 90m<br>The value must be larger than timeout\_express.</p><p>User to control the expiration time of a Boleto voucher.</p> |
| timeout\_express                                           | strng  | Used to control the expiration time of **submitting** an order (from initial to processing). (90m in default, max 15d)                                                                           |

{% tabs %}
{% tab title="200 submit successfully" %}

```
{
    "code": "10000",
    "msg": "Success",
    "trade_no": "2022010110481300091",
    "out_trade_no": "202201010354003",
    "web_url": "",
    "barcode": "23793864800029999003380260980157275200633330",
    "bank_code": "21890010070215182080679309377384187050000001125",
    "pay_url": "https://checkout-testv2.pagsmile.com/checkout?prepay_id=bkYvNytBMkN2dnFaVVhXTSs0ckJPaHBBVnkyT3J1M2tyekNzZ3RMZ05ubz0=-3872aF67",
    "trade_status": "PROCESSING"
}
```

{% endtab %}

{% tab title="400 duplicate out\_trade\_no" %}

```
{
    "code": "40002",
    "msg": "Business Failed",
    "sub_code": "duplicate-out_trade_no",
    "sub_msg": "out_trade_no is duplicate"
}
```

{% endtab %}
{% endtabs %}

{% hint style="info" %}
**User payment tips**

* The value of **bank\_code** is the ticket number that the user needs to use for payment
* Use the value of **barcode** to generate a scanable barcode can help users to make payment faster
* Providing a downloadable PDF version could help mobile users to have their tickets on their phones without keeping the browser open
  {% endhint %}

## Example

```
curl --location --request POST 'https://gateway-test.pagsmile.com/trade/pay' \
--header 'Authorization: Basic MTYyNTgyOTIxNDUzMTY2Mzg6UGFnc21pbGVfc2tfZDUwMWQ1ZGNkNTI5OGQ5N2MwNmUzYjI4YjA2OWZjZmY3NDU5ZjY2NzNiMjFjMTFlYTY3NDM5MDgzOTZkOTYxNQ==' \
--header 'Content-Type: application/json' \
--data-raw '{
    * "app_id": "162************38",
    * "out_trade_no": "202201010354003",
    * "method": "Boleto",
    * "order_amount": "12.01",
    * "order_currency": "BRL",
    * "subject": "trade pay test",
    * "content": "trade pay test conent",
    * "notify_url": "http://merchant/callback/success",
      "return_url": "https://www.merchant.com",
    * "buyer_id": "buyer_0101_0001",
    * "timestamp": "2022-01-01 03:54:01",
      "timeout_express":"1c",
    * "customer" : {
    *     "identify": {
    *         "type": "CPF",
    *         "number": "11032341882"
          },
    *     "name": "Test User Name",
    *     "email": "test@pagsmile.com"
      },
    * "address" : {
    *     "zip_code": "38082365"
      }
      }'
```

![Example of payment page](/files/kD0S0UkLyu1uDoqgbD5Y)

![Example of Boleto PDF](/files/nZOJymEovf32tvOLaAby)

{% hint style="info" %}
Note:  **162\*\*\*\*\*\*\*\*\*\*\*\*38** is pagsmile's test app id for sandbox, and **MTYyNTgyOTIxNDUzMTY2Mzg6UGFnc21pbGVfc2tfZDUwMWQ1ZGNkNTI5OGQ5N2MwNmUzYjI4YjA2OWZjZmY3NDU5ZjY2NzNiMjFjMTFlYTY3NDM5MDgzOTZkOTYxNQ==** is authorization token associated with the test app id.&#x20;
{% endhint %}

{% hint style="danger" %}
Please use your own **app\_id** and generate your own **authorization token** when testing.
{% endhint %}

## Third-party CPF/CNPJ Validator

* <mark style="color:blue;">**Go:**</mark> [<mark style="color:blue;">https://github.com/paemuri/brdoc</mark>](<https://github.com/paemuri/brdoc&#xA;>)
* <mark style="color:blue;">**JavaScript:**</mark> <https://www.npmjs.com/package/cpf-cnpj-validator>
* <mark style="color:blue;">**Online:**</mark> [<mark style="color:blue;">https://4app.net/tools/validator/document/cpf\_validator</mark>](https://4app.net/tools/validator/document/cpf_validator)


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.pagsmile.com/payin/submit-a-payin/brazil/boleto.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
