# Pay with Vault

## Create Vault

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

This endpoint allows you to create a vault.

#### 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

<table><thead><tr><th width="265">Name</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td>app_id<mark style="color:red;">*</mark></td><td>string</td><td><p>created app's id at dashboard</p><p>- Max. 32 chars -</p></td></tr><tr><td>timestamp<mark style="color:red;">*</mark></td><td>string</td><td>yyyy-MM-dd HH:mm:ss<br>- Max. 19 chars -</td></tr><tr><td>version<mark style="color:red;">*</mark></td><td>string</td><td>Fixed value: 2.0</td></tr><tr><td>type<mark style="color:red;">*</mark></td><td>string</td><td>Card or pix</td></tr><tr><td>card_token.method</td><td>string</td><td>Required when type=Card<br>- Fixed value: CreditCard -</td></tr><tr><td>card_token.uid</td><td>string</td><td>Required when type=Card</td></tr><tr><td>card_token.token</td><td>string</td><td>Required when type=Card<br>- Get from <a href="https://docs.pagsmile.com/payin/pci-direct-integration/tokenize">here</a> -</td></tr><tr><td>card_token.notify_url</td><td>string</td><td>Required when type=Card</td></tr><tr><td>card_token.region</td><td>string</td><td>regions of the payment. Required when type=Card. The format is ISO 3166-1 alpha-3 - USA, BRA, etc. Check <a href="https://docs.pagsmile.com/payin/data/country-code">here</a> -</td></tr><tr><td>pix.region</td><td>string</td><td>Required when type=pix<br>- Fixed value: BRA -</td></tr><tr><td>pix.method</td><td>string</td><td>Required when type=pix<br>- Fixed value: PIXAutomatic -</td></tr><tr><td>pix.uid</td><td>string</td><td>Required when type=pix<br>- merchant user's id -</td></tr><tr><td>pix.plan.internal</td><td>string</td><td>Required when type=pix<br>- One of 1W,1M,3M,6M,1Y -</td></tr><tr><td>pix.plan.start_date</td><td>string</td><td><p>Start date of your Pix subscription plan.</p><p>Required when type=pix<br>- yyyy-MM-dd -</p></td></tr><tr><td>pix.plan.end_date</td><td>string</td><td><p>End date of your Pix subscription plan.</p><p>Required when type=pix<br>- yyyy-MM-dd -</p></td></tr><tr><td>pix.plan.minimum_amount</td><td>number</td><td><p>The estimated minimum amount for each deduction</p><p>Required when type=pix</p></td></tr><tr><td>pix.plan.maximum_amount</td><td>number</td><td><p>The estimated minimum amount for each deduction</p><p>Required when type=pix</p></td></tr><tr><td>pix.customer.identification.type</td><td>string</td><td><p>User's identification type. Required when type=pix</p><p>- CPF or CNPJ -</p></td></tr><tr><td>pix.customer.identification.number</td><td>string</td><td><p>User's identification number. Required when type=pix</p><p>- 11 digits if CPF or 14 digits if CNPJ -</p></td></tr><tr><td>pix.customer.name</td><td>string</td><td>User's name. Required when type=pix</td></tr></tbody></table>

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

<pre><code>{
    "code": "10000",
    "msg": "Success",
    "token": "*****",
<strong>    "type": "Card",
</strong>    "card_token": {
        "region": "",
        "method": "",
        "uid": "",
        "token": "psct_*",
        "notify_url": ""
    },
    "timestamp": "yyyy-MM-dd HH:mm:ss",
    "checkout_url": "https://demo.checkout.url"
}
</code></pre>

{% endtab %}
{% endtabs %}

## Example

<pre><code>curl --location --request POST 'https://gateway-test.pagsmile.com/vault/create' \
--header 'Authorization: Basic MTYyNTgyOTIxNDUzMTY2Mzg6UGFnc21pbGVfc2tfZDUwMWQ1ZGNkNTI5OGQ5N2MwNmUzYjI4YjA2OWZjZmY3NDU5ZjY2NzNiMjFjMTFlYTY3NDM5MDgzOTZkOTYxNQ==' \
--header 'Content-Type: application/json' \
--data-raw '{
    "app_id": "162************38",,
    "timestamp": "2022-01-01 03:54:01",
    "version": "2.0",
    "type": "", //One of Card or pix
    //When type=Card
    "card_token": {
        "region": "BRA",
        "method": "CreditCard",
        "uid": "123",
        "token": "",
        "notify_url": "https://demo.return.url"
    }
    //When type=pix
    "pix": {
        "region": "BRA",
        "method": "PIXAutomatic",
        "uid": "{{$guid}}",
        "plan": {
            "internal": "1M",
            "start_date": "2026-03-15",
            "end_date": "2036-03-31",
            "minimum_amount": 1,
            "maximum_amount": 1
        },
        "customer": {
            "identification": {
                "number": "502****4727",
                "type": "CPF"
            },
            "name": "Test User Name"
        }
<strong>    }
</strong>}'
</code></pre>

***

## Pay Vault

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

This endpoint allows you to submit a payin by Vault.

#### 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>                                                                                                            |
| out\_trade\_no<mark style="color:red;">\*</mark>  | string | <p>ID given by the merchant in their system<br>- Max. 64 chars - </p>                                                                                                   |
| method<mark style="color:red;">\*</mark>          | string | CreditCard or PIXAutomatic                                                                                                                                              |
| 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\~9,999,999 -</p>                                                                                                                             |
| order\_currency<mark style="color:red;">\*</mark> | string | <p>order currency<br>- check <a href="/pages/HiO18GbfHCiJ9hCBXQ9v">here</a> -</p>                                                                                       |
| buyer\_id<mark style="color:red;">\*</mark>       | string | merchant user's id                                                                                                                                                      |
| vault\_token<mark style="color:red;">\*</mark>    | string | Token get from [Create Vault](#create-vault)                                                                                                                            |
| return\_url                                       | string | Redirect to Merchant's url when user finished checkout                                                                                                                  |
| scheduled\_date                                   | string | <p>Actual deduction date.<br>Required when method=PIXAutomatic<br>- yyyy-MM-dd -</p>                                                                                    |
| region                                            | string | region of the payment. The format is ISO 3166-1 alpha-3 - USA, BRA etc. Check [here](https://docs.pagsmile.com/payin/data/country-code). Required if using Global app - |

{% hint style="warning" %}
When **method=PIXAutomatic**, a Pay Vault request must be initiated **2-10 days before** the deduction date, otherwise the deduction will fail.

Additionally, if you need the first deduction to occur on the same day as authorization, set scheduled\_date equal to pix.plan.start\_date.
{% endhint %}

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

```
{
    "code": "10000",
    "msg": "Success",
    "prepay_id":"Q3pDNzRT****************VT0=-De8BDeB3",
    "trade_no": "2022010110293900083",
    "out_trade_no": "202201010354006",
    "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 %}

## 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": "202201010354006",
    "method": "CreditCard",
    "order_amount": "300",
    "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",
    "vault_token": "wa_***",
    "region": "BRA"
    }'
```

***

## Void Vault

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

This endpoint allows you to void a vault.

#### 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

<table><thead><tr><th width="254">Name</th><th width="239">Type</th><th>Description</th></tr></thead><tbody><tr><td>app_id<mark style="color:red;">*</mark></td><td>string</td><td><p>created app's id at dashboard</p><p>- Max. 32 chars -</p></td></tr><tr><td>timestamp<mark style="color:red;">*</mark></td><td>string</td><td>yyyy-MM-dd HH:mm:ss<br>- Max. 19 chars -</td></tr><tr><td>version<mark style="color:red;">*</mark></td><td>string</td><td>Fixed value: 2.0</td></tr><tr><td>type<mark style="color:red;">*</mark></td><td>string</td><td>Fixed value: Card</td></tr><tr><td>vault_token<mark style="color:red;">*</mark></td><td>string</td><td></td></tr></tbody></table>

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

```
{
    "code": "10000",
    "msg": "Success",
    "token": "wa_***",
    "type": ""Card",
    "timestamp": "yyyy-MM-dd HH:mm:ss"
}
```

{% endtab %}
{% endtabs %}

***

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


---

# 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/vault.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.
