[УКР](https://hackmd.io/-dYr0t8eREOOjLvWsBucRg) | ENG

:arrow_left: [Guide](https://hackmd.io/QA2NYRliRLGviJl5P4-ZCw)
# [10204/10214] Wallet-Card by Token
*What is "XPAY Wallet" see in the section ["XPAY Wallet"](https://hackmd.io/bbv1AdS0SwiJeWqW1i1tCA).*
## Usage
|OperationType |Usage |
|:----:|----|
|`10204`| Payout from the Partner Wallet to the card token.|
|`10214`| Payout from the Partner Wallet to the card token using CallbackURL.|
## Request
*See the description of the "Partner", "KeyAES" and "Sign" attributes in the section "[General API Integration Information](https://hackmd.io/ijxPm0xtTpycgTjuU_NHQQ)".*
### Data Structure
The Data structure for this operation is formed from the following parameters:
:::info
<details>
<summary>Data structure formation (examples are below)</summary>
<br>
~~~
{
"Currency": "",
"Exchange": "",
"CallbackURL": "",
"Purpose": "",
"TransferA2C": {
"Sum": ,
"Phone": "",
"RecipientCard": {
"RecipientToken": "",
"FirstName": "",
"MiddleName": "",
"LastName": "",
"IPN": "",
"document_type_id": "",
"doc_series": "",
"doc_number": "",
"dt_doc_issue": "",
"dt_doc_exp": "",
"doc_issued_by": ""
},
"FirstName": "",
"LastName": "",
"MiddleName": "",
"CompanyName": "",
"CompanyEDRPOU": "",
"CompanyIBAN": ""
},
"Transaction": {
"TransactionID": "",
"TerminalID": "",
"DateTime": ""
}
}
~~~
</details>
:::
|Parameter|Required|Type|Description|Example|
|:----:|:----:|:----:|----|:----:|
| `Currency` | Yes - paying in currency different from UAH | String | Currency *debit* code is an abbreviated currency designation described in the standard [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217#Non_ISO_4217_currencies) (“GBP”, “USD”, ..). |`USD`|
| `Exchange` | Yes - paying in currency different from UAH | String | Currency *credit* code is an abbreviated currency designation described in the standard [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217#Non_ISO_4217_currencies) (“GBP”, “USD”, ..). |`GBP`|
| `CallbackURL` | No. </br> Only for **[10214]** | String | URL to which an additional response will be sent if the operation timeout has expired. The response will return the `TransactionID`, sent by the Partner. For example: {"Code":200, "Message":"Done", "Data":{"OperationID":5639163, "OperationStatus":10, "PspID":"1041299225", **"TransactionID":"50f8804693ef"**, "TransactionStatus":3}, "KeyAES":"", "Sign":""}.|`https://partner.com/callback/xpay1`|
| `Purpose` |No| String | Payment purpose. |`Payment Order No.111`|
|`TransferA2C`^1^|Yes|Structure|Structure transmits the operation data.|See example below.|
|`Transaction`|Yes|Structure|Structure transmits the transaction data. See section "[Transaction Structure](https://hackmd.io/ijxPm0xtTpycgTjuU_NHQQ?view#2-Data)".|See example below.|
^1^ **"TransferA2C"** Structure Parameters:
|Parameter|Required|Type|Description|Example|
|:----:|:----:|:----:|----|:----:|
| `Sum` | Yes |Integer | Operation sum in kopecks. |1UAH=>`100`|
| `Phone` | No | String | Client phone number in format: "380xxxxxxxxxxxx". |`380679335544`|
|`RecipientCard`^2^|Yes|Structure|Structure transmits the recipient's bank card data.|See example below.|
| `FirstName` | No | String | Sender name. |`Oleg`|
| `MiddleName` | No | String | Sender middle name. |`Mykhaylovich`|
| `LastName` | No | String | Sender last name. |`Podilskyi`|
|`CompanyName`| No |String | Sender company name. | `TOV "Romashka"`|
|`CompanyEDRPOU`| No | String | Sender company "EDRPOU" code. | `123456789012`|
|`CompanyIBAN`| No | String | Sender company IBAN. | `UA4830529900000 26008031203677`|
^2^ **"RecipientCard"** Structure Parameters:
|Parameter|Required|Type|Description|Example|
|:----:|:----:|:----:|----|:----:|
|`RecipientToken`|Yes|String| Recipient card token.| `d1d2a97aac30.. d12c291f4e669`|
| `FirstName` | Yes* | String |Recipient name. |`Maxim` |
| `MiddleName` | Yes* | String | Recipient middle name. |`Olegovich`|
| `LastName` | Yes* | String | Recipient last name. |`Kravets`|
| `IPN` | Yes* | String | Recipient individual tax number (IPN). |`111111111111`|
| `document_type_id` | Yes* | Integer | Document type from the directory: </br> `1` - passport, </br> `2` - ID-card. |`1`|
| `doc_series` | Yes* | String | Document series. |`19910824-00026`|
| `doc_number` | Yes* | String | Document number. |`123456789`|
| `dt_doc_issue` | Yes* | String | Date of document issuance. |`2022-06-14`|
| `dt_doc_exp` | Yes* | String | Expiration date of the document. |`2022-06-14`|
| `doc_issued_by` | Yes* | String | Authority that issued the document. |`3459`|
**Parameters are conditionally mandatory (determined at the integration stage).*
:::success
<details>
<summary>Example of the request [10204]</summary>
<br>
~~~md
{
"Partner": {
"PartnerToken": "72a8ddb8-9145-4a41-af1a-8c48ecaa4be1",
"OperationType": 10204
},
"Data": "{\"Transaction\": {\"DateTime\": \"20220704 17:03:40\", \"TerminalID\": \"1\", \"TransactionID\": \" 0c5328f5-bda9-4376-b6a0-ca544fcb34ff\"}, \"TransferA2C\": {\"Sum\": 157500, \"RecipientCard\": {\"RecipientToken\": \"d1d2a97aac30..d12c291f4e669\"}}}",
"KeyAES": "",
"Sign": ""
}
~~~
</details>
:::
:::success
<details>
<summary>Example of the request [10214]</summary>
<br>
~~~md
{
"Partner": {
"PartnerToken": "72a8ddb8-9145-4a41-af1a-8c48ecaa4be1",
"OperationType": 10214
},
"Data": "{\"CallbackURL\":\"https://echange.su/merchant-ap_xpay_status_uFuzCAlZFvzSI7X1I0ER0RTTDbDo4PKrsJJtxmUDfxJeKEiuonh667hAx0qid3vnrzr.html?order_id=144763\",\"Transaction\":{\"DateTime\":\"2020708 00:32:12\",\"TerminalID\":\"1\",\"TransactionID\":\"144763\"},\"TransferA2C\":{\"Sum\":245779,\" RecipientCard\":{\"RecipientToken\":\"d1d2a97aac30..d12c291f4e669\"}}}",
"KeyAES": "",
"Sign": ""
}
~~~
</details>
:::
## Response
*See the general information on the response structure formation in the section "[General API Integration Information](https://hackmd.io/ijxPm0xtTpycgTjuU_NHQQ)"*.
### Response Examples
:::success
<details>
<summary>Operation Successfully Completed</summary>
<br>
~~~md
{
"Code": 200,
"Message": "done",
"Data": {
"OperationID": 555,
"OperationStatus": 10
},
"KeyAES": "",
"Sign": ""
}
~~~
</details>
:::
:::success
<details>
<summary>Operation Failed</summary>
<br>
~~~md
{
"Code": 200,
"Message": "done",
"Data": {
"OperationID": 111,
"OperationStatus": 21,
"Reason": 3
},
"KeyAES": "",
"Sign": ""
}
~~~
</details>
:::
## Related Requests
[[10301/10311/103013] Wallet-Card](https://hackmd.io/SvLoAv49QWOIsdPhCWFezA)
[[10202] Wallet-Wallet](https://hackmd.io/dOi__3dxSYSi_3EvZh2a5Q)
[[10303] Wallet-IBAN](https://hackmd.io/7kfzI0OAQB6Nt8ZN38UxSg)
[[10304] Wallet-UUID](https://hackmd.io/-U0QJEY_TASmrNQGwGepcA)
[[10400] Packet Payment Wallet-Card by Token](https://hackmd.io/BHS4jBINQ-u8SQxX3XvR6Q)
[[10401] Packet Payment Wallet-Card by Card Number](https://hackmd.io/v65TGa0uQPGCrKXQhvHuZg)
**Phone Top-Up**
[[10205] Wallet-Phone](https://hackmd.io/eyewES-3TCGr99R8shURgQ)
[[10305] Card-Phone](https://hackmd.io/RFSxYF85Q0WqOd8I6Xenjg)
[[10405] Token-Phone](https://hackmd.io/hRrNYs3wQYeHChpNSk0AFg)
**Get Transaction Data**
[[20003] Get Operation Status](https://hackmd.io/_eAjmoG-QPWoWWmsLOGf1g)
## Reference Materials
General parameters of the XPAY system are given in the section ["Reference Materials"](https://hackmd.io/16yLv895Qo-FWTvrWWQwbg): operation types, payment types, response codes, operation status, reasons of operation rejection, etc.

:arrow_left: [Guide](https://hackmd.io/QA2NYRliRLGviJl5P4-ZCw)
:arrow_left: [General API Integration Information](https://hackmd.io/ijxPm0xtTpycgTjuU_NHQQ)
<details>
<summary>XPAY Support</summary>
</br>
Phone: +38 093 891 92 00
Email: info@xpay.com.ua
Telegram: @xpaysupportbot
</details>