# Recurring Pix

## Payin by Recurring Pix

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

This endpoint allows you to submit a payin by Recurring Pix 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>                                                                                                                     |
| method<mark style="color:red;">\*</mark>                   | string | Fixed value: PIX                                                                                                                                                                 |
| 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                                                                                                                                         |
| 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>                                                                                                                     |
| content                                                    | string | <p>payment reason detail or item detail. </p><p>- Max. 255 chars -</p>                                                                                                           |
| order\_amount<mark style="color:red;">\*</mark>            | string | <p>payment amount<br>- 0.1\~50,000 BRL -</p>                                                                                                                                     |
| order\_currency<mark style="color:red;">\*</mark>          | string | Fixed value: BRL                                                                                                                                                                 |
| trade\_type<mark style="color:red;">\*</mark>              | string | Fixed value: API                                                                                                                                                                 |
| buyer\_id<mark style="color:red;">\*</mark>                | string | merchant user's id                                                                                                                                                               |
| interval<mark style="color:red;">\*</mark>                 | string | <p>W(week), M(month, only support 1M, 3M & 6M), Y(year)<br>- Default value: 1M -</p>                                                                                             |
| quantity<mark style="color:red;">\*</mark>                 | string | <p>Quantity of recurring<br>- No maximum limit. Default value: 0, means infinite quantity -</p>                                                                                  |
| timeout\_express<mark style="color:red;">\*</mark>         | string | <p>m(minutes), h(hours), d(days), c(always end in current day).</p><p>Used to control the expiration time of <strong>submitting</strong> an order  (90m in default, max 15d)</p> |
| customer.name<mark style="color:red;">\*</mark>            | string | User's name                                                                                                                                                                      |
| customer.identify.type<mark style="color:red;">\*</mark>   | string | <p>User's identification type</p><p>- CPF or CNPJ -</p>                                                                                                                          |
| 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>                                                                                              |

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

```
{
    "code": "10000",
    "msg": "Success",
    "trade_no": "2022010110293900083",
    "out_trade_no": "202201010354003",
    "web_url": "https://checkout.pagsmile.com?prepay_id=ZHJjd***29&return_url=https://pagsmile.com/zh/",
    "qr_code": "00020***04E03C",
    "prepay_id": "ZHJj***229"
}
```

{% 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" %}

* **Cancel Recurring PIX:** Use this [API ](https://docs.pagsmile.com/recurring-payment#cancel-recurring-payment)to cancel a recurring PIX order.
* **IPN Notification/Callback:** The callback of a recurring PIX payment is different from the callback of a regular PIX payment. Check the [Recurring Notification](https://docs.pagsmile.com/payin/recurring-payment/notification) page.
  {% endhint %}

## Example of API Request

```
curl --location --request POST 'https://gateway-test.pagsmile.com/trade/recurring' \
--header 'Authorization: Basic MTYyNTgyOTIxNDUzMTY2Mzg6UGFnc21pbGVfc2tfZDUwMWQ1ZGNkNTI5OGQ5N2MwNmUzYjI4YjA2OWZjZmY3NDU5ZjY2NzNiMjFjMTFlYTY3NDM5MDgzOTZkOTYxNQ==' \
--header 'Content-Type: application/json' \
--data-raw '{
    * "app_id": "162************38",
    * "out_trade_no": "202201010354002",
    * "method": "PIX",
    * "order_amount": "12.01",
    * "order_currency": "BRL",
    * "subject": "trade pay test",
    * "content": "trade pay test content",
    * "notify_url": "http://merchant/callback/success",
    * "buyer_id": "buyer_0101_0001",
    * "timestamp": "2022-01-01 03:54:01",
    * "trade_type": "API",
    * "interval": "1W",
    * "quantity": "3",
    * "timeout_express": "10900m",
    * "customer": {
    *     "identify": {
    *         "type": "CPF",
    *         "number": "11032341882"
          },
    *     "name": "Test User Name"
      }
      }'
```

{% 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)
* <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)
