# 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 and using Global App. 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>Required when type=pix<br>- yyyy-MM-dd -</td></tr><tr><td>pix.plan.end_date</td><td>string</td><td>Required when type=pix<br>- yyyy-MM-dd -</td></tr><tr><td>pix.plan.minimum_amount</td><td>number</td><td>Required when type=pix</td></tr><tr><td>pix.plan.maximum_amount</td><td>number</td><td>Required when type=pix</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="data/country-code">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>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 - |

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