# Payout to card

The Payout to card product allows you or your application user (sender) to order a transfer directly from his balance to the potential recipient's card. Sender chooses balance to be debited and provides receiver card to be top upped.

# Article

You can find more knowledge about products on this site.

# Payout to Cards

How does Payout to Cards work? Payout to Cards is a relatively new area of payment business that is not very common, so this article brings more information about it.

What is Payout to Cards? Actually, the answer is simple. It is nothing more than a normal bank transfer, but made to a card number instead of a bank account number.

Transfers to bank accounts are pretty common and I guess we understand how they work. A bank or another financial institution connects to Automated Clearing House (usually National Clearing Center or National Bank or inter-bank organization), implements the solution on both frontend (internet banking, mobile banking, internal systems) and backend (integration with core-banking system and ACH), and once Customer wants to send money and enters IBAN (bank account) of the receiver, the transfer is performed. In such a case the bank sends technical information to ACH and sends money or performs settlement either with another bank or National Bank, or any other payment organization responsible for this transfer.

Payouts to cards work completely in the same way, but the money transfer is done to Mastercard or VISA cards. At Mastercard, this solution is called "MoneySend" (sometimes Mastercard Send or Cross-Border Send), while at VISA it is called "VISA Direct". In case of such a transaction Customer of the bank or any other money transfer organization initiates payment via the Internet or mobile application and sends money to the Primary Account Number (card number) of the receiver. The settlement of money happens via the Mastercard and VISA networks - actually through settlement bank accounts registered at Mastercard and VISA to perform a card transaction. Money is taken from the settlement account of Originating Institution (sending institution) to the settlement account of Receiving Institution.

We present this on the chart below.

[![image-1712051415643.png](https://developer.verestro.com/uploads/images/gallery/2024-04/scaled-1680-/image-1712051415643.png)](https://developer.verestro.com/uploads/images/gallery/2024-04/image-1712051415643.png)

In fact, there are not many differences between a standard bank transfer and Payout to Cards. Real differences are a natural result of using payment cards to process transactions. The main differences are:

- **Pricing** - obviously pricing of such a Payout to Cards is different than a standard banking transfer - usually more expensive. This is the outcome of the pricing policy of VISA and Mastercard. Nothing else. On average, Payout to Card costs around 0,5-1% + 0,1-0,8 EUR per transaction.
- **Speed of the transfer delivery** - Receiver of a Payout to Cards transaction usually receives money (globally) within 30 minutes. It is a big game changer compared to SWIFT or SEPA transfers. It really works globally. Imagine that you can send money from Brazil to Germany in 30 minutes! From Singapore to Pakistan in 30 minutes!
- **Using a card number** - Receiver needs to share his/her card number (only 16 digits) with Sender. This is a significant problem because we do not like sharing card numbers with other people. Actually we are taught that it is risky. This can impact a user conversion in many use cases.
- **Issues with a receiving network** - Sometimes it is difficult or impossible to send transactions to particular countries. For example Germany or the USA are countries where such transactions are blocked - banks usually do not accept receiving Payouts to Cards. This may be a problem for some use cases and some transaction corridors.
- **Maximum transaction value** - VISA and Mastercard decided that there are some maximum transaction values. Usually it is around 5-10k EUR or USD per transaction. There are also some monthly limits per user. It does affect the user experience but this value is growing over time.

In general, it is a great functionality that works well for banks around the world as competitive to SWIFT and ACH. It gives added value to the user who wants to transfer money quickly, especially internationally. Worth considering for all money transfer organizations and banks. The implementation of Payout to Cards can be greatly simplified by Verestro and our partner payment organization Fenige. Please check us out!

# Currency Management in Payouts to Cards

There are many questions about how to manage currencies in payout products. Let me briefly describe several possible scenarios.

Let's start with dependencies that have an impact on choosing various scenarios.

1. **Sender's card account currency** - first you have a user with a payment account in a particular currency, for example USD, EUR, CHF, RON etc.
2. **Transaction currency** - transaction that sending user can choose
3. **Acquirer settlement currency** - there are settlement currencies that an acquiring institution (Originating Institution) cooperating with VISA or Mastercard uses to settle money with them, for example USD, EUR, PLN. Of course, it can differ from the user account currency.
4. **Receiver's card issuer settlement currency** - a bank, which issues a card for the receiver, can have various settlement currencies with Mastercard or VISA.
5. **Receiving card settlement currency** - additionally, there is a settlement currency of the receiver's card, issued by another bank. It can be any currency, for example UAH, CZK.

[![image-1713253626951.png](https://developer.verestro.com/uploads/images/gallery/2024-04/scaled-1680-/image-1713253626951.png)](https://developer.verestro.com/uploads/images/gallery/2024-04/image-1713253626951.png)

That's why it is complex. At various levels of transactions there are various currencies and of course in case of currency conversion at any step various additional FX fees apply. That's why the choice of currency management strategy is not an easy one.

Additional decision factors are related to particular use cases I want to present. There are a few possible ways of offering Payouts to the user. Let's have a look at 3 scenarios:

1. **User chooses how much money in their currency they want to transfer** - example: User has an account in USD and wants to send 100 USD to a friend. User does not know if the friend has an account in USD, EUR or PLN. He/she does not care. 
    - A. In such a case there is no problem if Sender and Receiver, Acquirer and Issuer have an account in the same currency as available settlement accounts of Acquirer. Transactions will be processed and settled in the same currency through the chain. This almost always applies for USD, EUR transactions.
    - B. If Sender has an account in USD, Acquirer has a settlement currency in USD, Issuer has a settlement currency in EUR, Receiver has a card account in EUR, there will be currency conversion that will happen on Receiver's side. His/her bank (card issuer) will convert the incoming USD to EUR and charge currency conversion fees.
    - C. If Sender has an account in CZK, but Acquirer does not have a settlement currency in CZK, but only USD and Receiver has an account in USD, there will be conversion happening on Sender's (acquirer) side. The sending institution will convert 1000 CZK of User to USD, will charge currency conversion fees and Receiver will receive USD after conversion. Receiver's bank will not get any currency conversion fees.
2. **User chooses currency of Receiver** - Example: User has an account in USD but needs to pay 100 EUR to Receiver because he/she knows that Receiver wants to get 100 EUR. 
    - D. It is possible to recognise the settlement currency of Receiver thanks to BIN tables shared through payment schemes. Thanks to it Sender will know that Receiver's card is issued in USD, so only USD will be allowed for this transaction. In such a case currency conversion will always happen on Sender's side. In case User has an account with EUR, their Acquirer (Originating Institution) will convert 100 EUR to USD and will initiate a transaction in USD. In case User account is in a different currency than the settlement account of Acquirer, additional currency conversion fees will apply and will be charged by Acquirer.
3. **User does not have a choice** - in such a case we offer only a payment in currency defined by the payment provider, for example always the same currency as the User account. 
    - E. In such a case User can send only one currency. Usually the same as his/her account currency. If User's account currency is the same as the settlement account of Acquirer, the transaction will be processed as in point 1B, which means that currency conversion can happen on Receiver's side if Receiver's card currency is different from the settlement currency.
    - F. In case User can send money in the currency which is not the settlement account of Acquirer in, some additional conversion fees will apply on Acquirer's side (like in scenario 1C).

It may look complicated, but if you look at it from the point of view of currency conversion points (5 places where conversion can happen) it is easier to understand.

Our recommendation is to use Scenario 1 and focus on implementing Scenario 1A (we can enable currencies which will be the most popular for your payment corridors). In some cases our partners use Scenario 2. It is important that calculation of commissions and spread is always dynamic, so Sender knows in advance the cost of these transactions.

I hope this article can help you understand currency conversion details. Thank you for reading.

# Various forms of money transfers

<span style="font-weight: 400;">There are multiple forms of [**money transfers**](https://www.verestro.com/money-transfers). In this article we would like to summarize the most important pros and cons of every solution:</span>

1. **SWIFT**<span style="font-weight: 400;"> (Society for Worldwide Interbank Financial Telecommunication) - inter-banking payment scheme enabling global transfer, International standard</span>
1. <span style="font-weight: 400;">Pros - almost any currency; global network, unlimited amount of transfer</span>
2. <span style="font-weight: 400;">Cons - time of transaction (sometimes a week); cost of transaction (example: 0,3%+10 usd or more); available to banks only</span>

3. **Payouts to Cards**<span style="font-weight: 400;"> - using Mastercard and VISA network, global transfers, international standard</span>
1. <span style="font-weight: 400;">Pros - almost any currency; global network; speed (even 30 minutes to transfer money between continents</span>
2. <span style="font-weight: 400;">Cons - Cost of transaction (example: 1% + 0,5 usd), limited amount of transfer (10.000 USD)</span>

5. **Crypto** <span style="font-weight: 400;">- using cryptography to transfer value, global transfer, international standard but sometimes forbidden by law</span>
1. <span style="font-weight: 400;">Pros - multiple but virtual currencies; global network; speed (even 5 minutes)</span>
2. <span style="font-weight: 400;">Cons - high costs (example: 1-2%), very often forbidden by regulators, risk of losing money, needs crypto exchange involvement</span>

7. **SEPA**<span style="font-weight: 400;"> (Single Euro Payment Area) - European standard or euro currency standard</span>
1. <span style="font-weight: 400;">Pros - speed (immediately or 1 day), price (below 1 EUR)</span>
2. <span style="font-weight: 400;">Cons - works only from EUR to EUR, works only in the European Union</span>

9. **Payouts to wallets**<span style="font-weight: 400;"> - various providers offer various payouts mechanisms to multiply local wallet providers or cash-out networks</span>
1. <span style="font-weight: 400;">Pros - localization</span>
2. <span style="font-weight: 400;">Cons - no global standard in speed and price, usually more expensive</span>

11. **Virtual cards**<span style="font-weight: 400;"> - you can issue a virtual card, send card data to the receiver and the receiver can use the card globally</span>
1. <span style="font-weight: 400;">Pros - global standard, very quick and very cheap, receiver can use card for ATM withdrawal, POS and eCommerce payments</span>
2. <span style="font-weight: 400;">Cons - non-standard way of sending money, receiver reluctance</span>

13. **Local ACH**<span style="font-weight: 400;"> (Automated Clearing House or local scheme) - there are multiple local or national payment schemes globally that you can use once you integrate with them. Usually requires a bank license to integrate.</span>
1. <span style="font-weight: 400;">Pros - quick and cheap, standard in the country</span>
2. <span style="font-weight: 400;">Cons - no global standard, works only locally</span>


<span style="font-weight: 400;">If you are asking yourself which solution you should use for your user it is actually a wrong question. We recommend using all. Give choice to your users, apply various fees on various methods of transfer, let users choose the best way of payments for them. It is actually very important strategy because:</span>

- <span style="font-weight: 400;">for users in Poland SEPA transfer or local ACH are the most common ways of payments nowadays</span>
- <span style="font-weight: 400;">for users in Ukraine Payouts to cards are the most common mechanism they have been using for years</span>
- <span style="font-weight: 400;">for users in USA SWIFT or local payment schemes are the most common mechanism</span>

<span style="font-weight: 400;">If you are building an international service, you really need multiple ways of sending money for your users. </span>

<span style="font-weight: 400;">Thanks for reading.</span>

# Payouts, eCom Transactions or Card-to-Card Payments?

While thinking about card-based money transfer solutions, our partners usually ask for three products - [**payouts to cards**](https://developer.verestro.com/books/payout-to-card), **eCom transactions** or **card-to-card payments**. In this article we will describe differences between those 3 ways of money transfers.

Let me start with a chart.

[![image-1713774019483.png](https://developer.verestro.com/uploads/images/gallery/2024-04/scaled-1680-/image-1713774019483.png)](https://developer.verestro.com/uploads/images/gallery/2024-04/image-1713774019483.png)

There are three use cases that you may be interested in. The choice of product depends on a use case decision.

Use Case 1. **Top-up user account** - in this case our starting point is the user's account kept somewhere in your systems. Your users need to reload this account with money. You can use various forms of transfers to your account, but *if you want to reload an account from Mastercard or VISA card*, we should enable eCom transactions to you. You will be registered as a merchant with our partnering acquirers and we will enable payments using cards, Apple Pay, Google Pay or other means of payment.

Use Case 2. **Payout to card** - in this case we assume that your user has an account and money on this account. We need to enable payments from this account to any card in the world. **This money transfer will be very quick - less than 30 minutes.** In this case you should be using our product called "Payouts to cards". This will enable your user to transfer money to any Mastercard or VISA card.

Use Case 3. **Card-2-Card** - in this case our assumption is that you do not have a user's account. You do not store the money of your users. You just want to **enable a money transfer service from one card to another card**. From Mastercard to VISA, VISA to Mastercard or Mastercard to Mastercard or VISA to VISA card. In such a case we recommend that you use our card-2-card product.

It is important not to mix those use cases and choose the correct product. All three products have different fees, AML requirements so please think of your use case and let's decide what to use.

Thanks for reading.

# Cross-Border Card Transactions – Questions about FX Rates and Cash Flow

The topic of settlements of cross-border card transactions is often touched by our customers. It is not always clear how various fees are calculated. In this article we would like to explain how it works in detail.

### The standard transaction flow

In general, a **cross-border transaction** works in the same way as a **domestic transaction**:

1\. The cardholder presents the card to the merchant or terminal (either online by entering card data, or in a contactless way or as a standard plastic card transaction or at an ATM).

2\. The acquirer gets card and transaction data from the terminal.

3\. Based on the [<span style="color: rgb(35, 111, 161);">**BIN**</span>](https://developer.verestro.com/books/knowledge-center/page/bin-range-or-separate-bin-in-card-issuing) table, the acquirer sends transaction authorization to **Mastercard or VISA (<span style="color: rgb(35, 111, 161);">[Payment Schemes](https://developer.verestro.com/books/knowledge-center/page/payment-schemes)</span>)**.

4\. The payment scheme transfers authorization to the card issuer.

5\. The card issuer approves or declines the authorization and blocks the amount on the cardholder account.

6\. In case of approved transactions, the acquirer prepares a clearing file and sends it for settlement.

7\. The payment scheme receives a clearing file and processes it.

8\. The payment scheme takes money from the issuer settlement account and transfers it to the acquirer settlement account.

9\. The payment scheme settles fees between itself, the issuer and the acquirer.

10\. The merchant receives money for the transaction.

11\. The acquirer charges merchant fees.

### The added complexity of currency conversion in cross-border transactions

As mentioned above, this process is the same for domestic and cross-border transactions. However, in cross-border transactions the currency conversion process takes place, bringing an additional layer of complexity. As conversion applies at various moments of transaction, let me describe this in detail below:

##### 1. Merchant and Acquirer

a. The merchant can agree with the acquirer that they want to **receive money in one or multiple currencies**. Depending on this contract, the acquirer will transfer money to the merchant in those currencies. It is impossible that ALL currencies in the world will be used, so usually merchants want to receive money in a few main currencies

b. The acquirer has **Settlement Services** with payment schemes in several or many currencies.

c. Depending on the Settlement Services, if a transaction is performed in currency X, the acquirer receives money in currency X. No currency conversion cost will apply at a payment scheme.

d. However, if the transaction is performed in currency X, but the acquirer does not have Settlement Service in this currency, the payment scheme will convert currency X to currency Y and send money to the acquirer in currency Y.

e. The acquirer will receive currency Y on their bank account and will either convert it to the merchant settlement currency or will transfer it directly to the merchant in currency Y.

f. Various fees charged by the acquirer can apply if the acquirer is performing currency conversion.

##### 2. Payment Scheme

a. As described above, acquirers have **Settlement Services enabled by Payment Schemes**. Issuers have the same.

b. The issuer can have Settlement Service in main currencies:

 i. Local currency

 ii. EUR settlement

 iii. USD settlement

 iv. Eventually in other currencies

c. Every new Settlement Service is a paid service, so both issuers and acquirers must decide which is the correct setup of settlement services. Depending on this decision, the Payment Scheme will perform more or less currency conversion operations and will earn fees during this process.

d. The Payment Scheme provides issuers and acquirers with currency conversion tables which can act as a **directional FX rate** for them. However, the **real FX rate** for a particular transaction is performed at the moment of transaction settlement at the Payment Scheme.

e. This means that if the cardholder performs a transaction, his/her issuer is never sure what will be the settlement amount for this transaction

##### 3. Issuer and Cardholder

a. Finally, depending on the Settlement Service agreed with the Payment Scheme, the issuer enables cards for their users.

b. The cardholder has usually (actually always) a payment account connected with this card and the cardholder knows that he/she holds money in a particular currency enabled by his/her bank / issuer.

c. It means that all transactions on this payment account will be charged in this particular currency.

d. Depending on the currency of the transaction and the settlement service enabled by the payment scheme, the issuer will perform the currency conversion and charge the cardholder additional fees.

### Conclusion

This topic is highly complex and depends on many factors. Issuers and acquirers must make a decision which approach is the best for them, which Settlement Services to enable with **<span style="color: rgb(35, 111, 161);">[Mastercard or VISA](https://developer.verestro.com/books/knowledge-center/page/visa-or-mastercard) </span>**and what should be the fee charged for this service because it is impossible to avoid all risks connected with currency conversion changes.

# Introduction

Payout to card is a method that allows making a payment by providing the recipient’s card details. This type of transfer does not require a card on the sender’s side. The sender simply selects the balance from which the operation should be executed and provides the card details to which the payout should be sent. If the sender has sufficient funds in the balance and the recipient’s card is valid, the payout is executed instantly.

## How to connect with us?

Our [onboarding process](https://developer.verestro.com/books/payout-to-card/page/onboarding) can be divided into two stages: business and technical.  
The first stage is the business onboarding, which involves signing the required documents with our [Sales Department](mailto:salesteam@verestro.com).  
The second stage is the technical onboarding, which involves integrating with our [API](https://developer.verestro.com/books/payout-to-card/page/how-to-integrate-api-reference).

<p class="callout info">**Note:** It is required that you have an account in Acquirer's system which will settle your transactions. For more informations please contact our Sale Department. We are suggesting to use [Fenige](https://www.fenige.com/) - our partner acquiring institution.</p>

# How to integrate - API reference

This chapter provides the instruction of the integration with the solution and with it's methods. By using below API you will be able to order quick money transfers to debit or credit cards in 150 major currencies. Lower the costs, save time and increase the end-user satisfaction. Functionality consists of five methods allowing to order payout, check commission and follow transfer status. All methods are secured with `Basic-Authorization` of your merchant account. The `Basic-Authorization` will be provided to you during the onboarding process. Prior using this solution is to open account in acquiring institution. To complete this steps, please contact our Sales Department. We will guide you through entire process.

<details id="bkmrk-verestro-paytool-api"><summary>Environment Test API base URL</summary>

```
http://payouts.verestro.dev/
```

</details><details id="bkmrk-verestro-paytool-api-0"><summary>Environment Production API base URL</summary>

```
NOT YET IMPLEMENTED
```

</details><details id="bkmrk-integration-method-c"><summary>Sequence diagram presenting payout process</summary>

@startuml  
skinparam ParticipantPadding 30  
skinparam BoxPadding 30  
skinparam noteFontColor #FFFFFF  
skinparam noteBackgroundColor #1C1E3F  
skinparam noteBorderColor #1C1E3F  
skinparam noteBorderThickness 1  
skinparam sequence {  
ArrowColor #1C1E3F  
ArrowFontColor #1C1E3F  
ActorBorderColor #1C1E3F  
ActorBackgroundColor #FFFFFF  
ActorFontStyle bold  
ParticipantBorderColor #1C1E3F  
ParticipantBackgroundColor #1C1E3F  
ParticipantFontColor #FFFFFF  
ParticipantFontStyle bold  
LifeLineBackgroundColor #1C1E3F  
LifeLineBorderColor #1C1E3F  
}  
actor "Payer" as p  
participant "Customer" as c  
participant "Verestro" as v  
p-&gt;c: Make payout (provide transaction data)  
note right of p: Sender chooses his balance \\nand provides receiver's card  
c-&gt;v: Calculate commission POST /client/calculate-commission/payout  
c&lt;-v: Return commission  
p&lt;-c: Show commission  
p-&gt;c: Confirm  
c-&gt;v: Order payout with transaction data POST /api/v2/client/send-money  
note left of v: We contact with acquiring institution \\nfor transaction to be processed  
v-&gt;c: Return transaction order-Id with status  
p&lt;-c: Payout ordered  
v--&gt;c: (optional) Send webhook  
c-&gt;v: (optional) Check transaction status GET /client/send-money/{order-Id}  
v-&gt;c: Return http status and proper message  
@enduml

</details><p class="callout warning">**Important:** The success of the multicurrency send-money transaction depends primarily on the correctness of your currency configuration which is done by the Acquirer. To make transactions in a currency other than the currency of the card, contact the Verestro employee.</p>

<p class="callout warning">**Important:** From January 2021, there is an internal functionality to restrict access for the Customer to specific method. The Acquirer employee can disable access to a given endpoint, then the HTTP status 403 FORBIDDEN will be returned. You will be informed about each access restriction action.</p>

<p class="callout info">**Note:** When performing authorization, remember that there are currencies with different number of decimal places. For example: VND has no pennies and KWD has three decimal places. Please take this into account in the Amout field. For more information on other currencies, see ISO 4217.</p>

### Order payout

The method allows you to order a payout transfer. The request can be made in four forms depending on the type of reference indicating the receiver of the funds. Customer by selecting <span style="font-family: Lato;">`amount`</span> = <span style="font-family: Lato;">`X` </span>defines amount of payment in given currency. This amount is transferred to receiver payment instrument (receiver reference) in selected currency. In case there's need revaluation from one currency to another, system uses <span style="font-family: Lato;">`higherRate`</span> for this situation. For more details about specific rates please refer to `<a href="https://developer.verestro.com/books/payouts/page/technical-documentation-draft#bkmrk-currency-rate">currencyRate</a>` method.

<table border="1" cellpadding="1" cellspacing="0" id="bkmrk-abbreviation-descrip" style="width: 918px;" width="712"><tbody><tr valign="TOP"><td bgcolor="#002060" style="width: 365.5px;" width="353"><span style="font-family: Lato; color: #ecf0f1;">**Receiver reference**</span>

</td><td bgcolor="#002060" style="width: 443.5px;" width="353"><span style="font-family: Lato; color: #ecf0f1;">**Description**</span>

</td></tr><tr valign="TOP"><td style="width: 365.5px;" width="353"><span style="font-family: Lato;">`CASH-PLAIN`</span>

</td><td style="width: 443.5px;" width="353"><span style="font-family: Lato;">Sender provides receiver's card number in plain text.</span>

</td></tr><tr valign="TOP"><td style="width: 365.5px;" width="353"><span style="font-family: Lato;">`CASH-PLAIN-WITH-CALCULATE-COMMISSION-RESULT`</span>

</td><td style="width: 443.5px;" width="353"><span style="font-family: Lato;">Sender provides receiver's card number in plain text along with earlier calculated commission with [`calculateCommissionPayout`](https://developer.verestro.com/books/payouts/page/technical-documentation#bkmrk-calculate-commission).</span>

</td></tr></tbody></table>

<details id="bkmrk-post-%2Fapi%2Fv2%2Fclient%2F"><summary>POST /api/v2/client/send-money</summary>

<details id="bkmrk-cash-plain-headers-k-0"><summary>CASH-PLAIN</summary>

<table border="1" style="border-collapse: collapse; width: 100%; height: 100.578px;"><tbody><tr style="height: 35.3906px;"><td bgcolor="#002060" colspan="2" style="height: 35.3906px; width: 100.128%;" width="353"><span style="font-family: Lato; color: #ecf0f1;">**Headers**</span>

</td></tr><tr style="height: 35.3906px;"><td bgcolor="#002060" style="width: 50.0642%; height: 35.3906px;" width="353"><span style="color: #ecf0f1; font-family: Lato;">**Key**</span>

</td><td bgcolor="#002060" style="width: 50.0642%; height: 35.3906px;" width="353"><span style="font-family: Lato; color: #ecf0f1;">**Value**</span>

</td></tr><tr style="height: 29.7969px;"><td style="width: 50.0642%; height: 29.7969px;">`Content-Type`</td><td style="width: 50.0642%; height: 29.7969px;">`application/vnd.sendmoney.v2+json`</td></tr><tr><td style="width: 50.0642%;">`Basic-Authorization`</td><td style="width: 50.0642%;">`Basic dXNlcm5hbWU6cGFzc3dvcmQ=`</td></tr></tbody></table>

<p class="callout info">**Note:** The `Basic-Authorization` will be provided to you during the onboarding process.</p>

<details id="bkmrk-example-request-body"><summary>Example request body in JSON format</summary>

```json
{
  "amount" : 1000,
  "type" : "RECEIVER",
  "requestId" : "9d7cead6-3532-4028-94ef-666f426f7f74",
  "transactionId" : "TRX220132AM",
  "sender" : {
    "type" : "CASH",
    "firstName" : "Mark",
    "lastName" : "Smith",
    "street" : "Olszewskiego",
    "houseNumber" : "17A",
    "city" : "Lublin",
    "postalCode" : "20-400",
    "flatNumber" : "2",
    "email" : "senderEmail@verestro.com",
    "personalId" : "AGC688910",
    "country" : "PL"
  },
  "receiver" : {
    "type" : "PLAIN",
    "firstName" : "Rob",
    "lastName" : "Wring",
    "birthDate" : "2024-03-19",
    "cardNumber" : "5117964247989169",
    "currency" : "PLN",
    "countryOfResidence" : "PL"
  },
  "additionalData" : {
    "note" : "Restaurant. Tip for Joe Doe"
  },
  "transactionReason" : "Test document transaction"
}
```

</details><table border="1" style="border-collapse: collapse; width: 100%; height: 1177.56px;"><tbody><tr style="height: 35.3906px;"><td bgcolor="#002060" style="width: 34.713%; height: 35.3906px;" width="353"><span style="font-family: Lato; color: #ecf0f1;">**Parameter**</span>

</td><td bgcolor="#002060" style="width: 13.4846%; height: 35.3906px;" width="353"><span style="font-family: Lato; color: #ecf0f1;">**Type**</span>

</td><td bgcolor="#002060" style="width: 51.8024%; height: 35.3906px;" width="353"><span style="font-family: Lato; color: #ecf0f1;">**Description**</span>

</td></tr><tr style="height: 57.75px;"><td style="width: 34.713%; height: 57.75px;">`amount`</td><td style="width: 13.4846%; height: 57.75px;">number  
**required**</td><td style="width: 51.8024%; height: 57.75px;">The total transfer amount (in pennies).</td></tr><tr style="height: 63.3906px;"><td style="width: 34.713%; height: 63.3906px;">`type`</td><td style="width: 13.4846%; height: 63.3906px;">string  
**required**  
</td><td style="width: 51.8024%; height: 63.3906px;">Transaction in `SENDER` or `RECEIVER` currency, for specific transaction type. `CARD_CARD`: above, `CASH_CARD`: `RECEIVER` , `CASH_CARD`: `SENDER`.</td></tr><tr style="height: 63.3906px;"><td style="width: 34.713%; height: 63.3906px;">`requestId`</td><td style="width: 13.4846%; height: 63.3906px;">string  
**required**</td><td style="width: 51.8024%; height: 63.3906px;">UUID generated by the the client, used to identify single transaction. Ensures that the transaction with the given parameter is processed only once.</td></tr><tr style="height: 66.375px;"><td style="width: 34.713%; height: 66.375px;">`transactionId`

</td><td style="width: 13.4846%; height: 66.375px;">string **required**</td><td style="width: 51.8024%; height: 66.375px;">UUID generated by the the client to assign transaction identifier.</td></tr><tr style="height: 46.5938px;"><td style="width: 34.713%; height: 46.5938px;">`sender`</td><td style="width: 13.4846%; height: 46.5938px;">object **required**</td><td style="width: 51.8024%; height: 46.5938px;">Object containing datailed payer's data.</td></tr><tr style="height: 46.5938px;"><td style="width: 34.713%; height: 46.5938px;">`sender.type`</td><td style="width: 13.4846%; height: 46.5938px;">string **required**</td><td style="width: 51.8024%; height: 46.5938px;">For this configuration the value of this field must be `CASH`, otherwise request will be declined.</td></tr><tr style="height: 46.5938px;"><td style="width: 34.713%; height: 46.5938px;">`sender.firstName`</td><td style="width: 13.4846%; height: 46.5938px;">string **required**</td><td style="width: 51.8024%; height: 46.5938px;">Payers's first name.</td></tr><tr style="height: 46.5938px;"><td style="width: 34.713%; height: 46.5938px;">`sender.lastName`</td><td style="width: 13.4846%; height: 46.5938px;">string **required**</td><td style="width: 51.8024%; height: 46.5938px;">Payers's last name.</td></tr><tr style="height: 46.5938px;"><td style="width: 34.713%; height: 46.5938px;">`sender.street`</td><td style="width: 13.4846%; height: 46.5938px;">string **required**</td><td style="width: 51.8024%; height: 46.5938px;">Payer's address.</td></tr><tr style="height: 46.5938px;"><td style="width: 34.713%; height: 46.5938px;">`sender.houseNumber`</td><td style="width: 13.4846%; height: 46.5938px;">string **required**</td><td style="width: 51.8024%; height: 46.5938px;">Payer's house number.</td></tr><tr style="height: 46.5938px;"><td style="width: 34.713%; height: 46.5938px;">`sender.city`</td><td style="width: 13.4846%; height: 46.5938px;">string **required**</td><td style="width: 51.8024%; height: 46.5938px;">Payer's city.</td></tr><tr style="height: 46.5938px;"><td style="width: 34.713%; height: 46.5938px;">`sender.postalCode`</td><td style="width: 13.4846%; height: 46.5938px;">string **required**</td><td style="width: 51.8024%; height: 46.5938px;">Payer's postal code.</td></tr><tr style="height: 46.5938px;"><td style="width: 34.713%; height: 46.5938px;">`sender.flatNumber`</td><td style="width: 13.4846%; height: 46.5938px;">string **required**</td><td style="width: 51.8024%; height: 46.5938px;">Payer's flat number.</td></tr><tr style="height: 46.5938px;"><td style="width: 34.713%; height: 46.5938px;">`sender.personalId`</td><td style="width: 13.4846%; height: 46.5938px;">string</td><td style="width: 51.8024%; height: 46.5938px;">Payer's personal id.</td></tr><tr style="height: 46.5938px;"><td style="width: 34.713%; height: 46.5938px;">`sender.country`</td><td style="width: 13.4846%; height: 46.5938px;">string **required**</td><td style="width: 51.8024%; height: 46.5938px;">Country code in accordance with ISO 3166-1 Alpha-2. Is required for terminal crypto</td></tr><tr style="height: 63.375px;"><td style="width: 34.713%; height: 63.375px;">`receiver`</td><td style="width: 13.4846%; height: 63.375px;">object **required**</td><td style="width: 51.8024%; height: 63.375px;">Object containing datailed receiver's data.</td></tr><tr style="height: 46.5938px;"><td style="width: 34.713%; height: 46.5938px;">`receiver.type`</td><td style="width: 13.4846%; height: 46.5938px;">string **required**</td><td style="width: 51.8024%; height: 46.5938px;">For this configuration the value of this field must be `PLAIN`, otherwise request will be declined.</td></tr><tr style="height: 46.5938px;"><td style="width: 34.713%; height: 46.5938px;">`receiver.firstName`</td><td style="width: 13.4846%; height: 46.5938px;">string **required**</td><td style="width: 51.8024%; height: 46.5938px;">Receiver's first name.</td></tr><tr style="height: 49.5938px;"><td style="width: 34.713%; height: 49.5938px;">`receiver.lastName`</td><td style="width: 13.4846%; height: 49.5938px;">string **required**</td><td style="width: 51.8024%; height: 49.5938px;">Receiver's last name.

</td></tr><tr style="height: 46.5938px;"><td style="width: 34.713%; height: 46.5938px;">`receiver.birthDate`</td><td style="width: 13.4846%; height: 46.5938px;">string **required**</td><td style="width: 51.8024%; height: 46.5938px;">Receiver's birth day.</td></tr><tr style="height: 46.5938px;"><td style="width: 34.713%; height: 46.5938px;">`receiver.cardNumber`</td><td style="width: 13.4846%; height: 46.5938px;">string **required**</td><td style="width: 51.8024%; height: 46.5938px;">Receiver's card number PAN.</td></tr><tr style="height: 49.5938px;"><td style="width: 34.713%; height: 49.5938px;">`receiver.currency`</td><td style="width: 13.4846%; height: 49.5938px;">string **required**</td><td style="width: 51.8024%; height: 49.5938px;">Currency for transaction. For example: PLN.</td></tr><tr style="height: 29.7969px;"><td style="width: 34.713%; height: 29.7969px;">`receiver.countryOfResidence`</td><td style="width: 13.4846%; height: 29.7969px;">string</td><td style="width: 51.8024%; height: 29.7969px;">Country code in accordance with ISO 3166-1 Alpha-2. Is required for terminal crypto</td></tr><tr><td style="width: 34.713%;">`additionalData`</td><td style="width: 13.4846%;">object</td><td style="width: 51.8024%;">Object allowing the transaction initiator to add an additional information of the transaction.</td></tr><tr><td style="width: 34.713%;">`additionalData.note`</td><td style="width: 13.4846%;">string **required**</td><td style="width: 51.8024%;">Note for the transaction.

@Length(min = 0, max = 150), @Pattern(regexp = `^(?!\s*$)(?!.*[\r\n]).+$`)

</td></tr></tbody></table>

</details><details id="bkmrk-cash-plain-with-calc"><summary>CASH-PLAIN-WITH-CALCULATE-COMMISSION-RESULT</summary>

<table border="1" style="border-collapse: collapse; width: 100%; height: 100.578px;"><tbody><tr style="height: 35.3906px;"><td bgcolor="#002060" colspan="2" style="height: 35.3906px; width: 100.128%;" width="353"><span style="font-family: Lato; color: #ecf0f1;">**Headers**</span>

</td></tr><tr style="height: 35.3906px;"><td bgcolor="#002060" style="width: 50.0642%; height: 35.3906px;" width="353"><span style="color: #ecf0f1; font-family: Lato;">**Key**</span>

</td><td bgcolor="#002060" style="width: 50.0642%; height: 35.3906px;" width="353"><span style="font-family: Lato; color: #ecf0f1;">**Value**</span>

</td></tr><tr style="height: 29.7969px;"><td style="width: 50.0642%; height: 29.7969px;">`Content-Type`</td><td style="width: 50.0642%; height: 29.7969px;">`application/vnd.sendmoney.v2+json`</td></tr><tr><td style="width: 50.0642%;">`Basic-Authorization`</td><td style="width: 50.0642%;">`Basic dXNlcm5hbWU6cGFzc3dvcmQ=`</td></tr></tbody></table>

<p class="callout info">**Note:** The `Basic-Authorization` will be provided to you during the onboarding process.</p>

<details id="bkmrk-example-request-body-0"><summary>Example request body in JSON format</summary>

```json
{
  "calculateCommissionUuid" : "58e1fc52-dab0-46a2-9198-45eb34024c83",
  "amount" : 1000,
  "type" : "RECEIVER",
  "requestId" : "2b76bfd8-cfe5-4858-a145-eaed73b8cd9c",
  "transactionId" : "TRX220132AM",
  "sender" : {
    "type" : "CASH",
    "firstName" : "Mark",
    "lastName" : "Smith",
    "street" : "Olszewskiego",
    "houseNumber" : "17A",
    "city" : "Lublin",
    "postalCode" : "20-400",
    "flatNumber" : "2",
    "email" : "senderEmail@verestro.com",
    "personalId" : "AGC688910",
    "country" : "PL"
  },
  "receiver" : {
    "type" : "PLAIN",
    "firstName" : "Rob",
    "lastName" : "Wring",
    "birthDate" : "2024-03-19",
    "cardNumber" : "5117964247989169",
    "currency" : "PLN",
    "countryOfResidence" : "PL"
  }
}
```

</details><table border="1" style="border-collapse: collapse; width: 100%; height: 886.047px;"><tbody><tr style="height: 35.3906px;"><td bgcolor="#002060" style="width: 34.713%; height: 35.3906px;" width="353"><span style="font-family: Lato; color: #ecf0f1;">**Parameter**</span>

</td><td bgcolor="#002060" style="width: 13.4846%; height: 35.3906px;" width="353"><span style="font-family: Lato; color: #ecf0f1;">**Type**</span>

</td><td bgcolor="#002060" style="width: 51.8024%; height: 35.3906px;" width="353"><span style="font-family: Lato; color: #ecf0f1;">**Description**</span>

</td></tr><tr style="height: 57.7812px;"><td style="width: 34.713%; height: 57.7812px;">`amount`</td><td style="width: 13.4846%; height: 57.7812px;">number  
**required**</td><td style="width: 51.8024%; height: 57.7812px;">The total transfer amount (in pennies).</td></tr><tr style="height: 57.7812px;"><td style="width: 34.713%; height: 57.7812px;">`type`</td><td style="width: 13.4846%; height: 57.7812px;">string  
**required**  
</td><td style="width: 51.8024%; height: 57.7812px;">Transaction in `SENDER` or `RECEIVER` currency, for specific transaction type. `CARD_CARD`: above, `CASH_CARD`: `RECEIVER` , `CASH_CARD`: `SENDER`.</td></tr><tr style="height: 46.5938px;"><td style="width: 34.713%; height: 46.5938px;">`requestId`</td><td style="width: 13.4846%; height: 46.5938px;">string  
**required**</td><td style="width: 51.8024%; height: 46.5938px;">UUID generated by the the client, used to identify single transaction. Ensures that the transaction with the given parameter is processed only once.</td></tr><tr style="height: 66.3906px;"><td style="width: 34.713%; height: 66.3906px;">`transactionId`

</td><td style="width: 13.4846%; height: 66.3906px;">string **required**</td><td style="width: 51.8024%; height: 66.3906px;">UUID generated by the the client to assign transaction identifier.</td></tr><tr><td style="width: 34.713%; height: 66.3906px;">`calculateCommissionUuid`

</td><td style="width: 13.4846%; height: 66.3906px;">string</td><td style="width: 51.8024%; height: 66.3906px;">Unique [`calculateCommission`](https://developer.verestro.com/books/payouts/page/technical-documentation-draft#bkmrk-calculate-commission) result identifier that allows to use calculated commission in transaction.</td></tr><tr style="height: 35.3906px;"><td style="width: 34.713%; height: 29.7969px;">`sender`</td><td style="width: 13.4846%; height: 29.7969px;">object **required**</td><td style="width: 51.8024%; height: 29.7969px;">Object containing datailed payer's data.</td></tr><tr style="height: 29.7969px;"><td style="width: 34.713%;">`sender.type`</td><td style="width: 13.4846%;">string **required**</td><td style="width: 51.8024%;">For this configuration the value of this field must be `CASH`, otherwise request will be declined.</td></tr><tr><td style="width: 34.713%; height: 29.7969px;">`sender.firstName`</td><td style="width: 13.4846%; height: 29.7969px;">string **required**</td><td style="width: 51.8024%; height: 29.7969px;">Payers's first name.</td></tr><tr style="height: 29.7969px;"><td style="width: 34.713%; height: 29.7969px;">`sender.lastName`</td><td style="width: 13.4846%; height: 29.7969px;">string **required**</td><td style="width: 51.8024%; height: 29.7969px;">Payers's last name.</td></tr><tr style="height: 29.7969px;"><td style="width: 34.713%; height: 29.7969px;">`sender.street`</td><td style="width: 13.4846%; height: 29.7969px;">string **required**</td><td style="width: 51.8024%; height: 29.7969px;">Payer's address.</td></tr><tr style="height: 29.7969px;"><td style="width: 34.713%; height: 46.5938px;">`sender.houseNumber`</td><td style="width: 13.4846%; height: 46.5938px;">string **required**</td><td style="width: 51.8024%; height: 46.5938px;">Payer's house number.</td></tr><tr style="height: 46.5938px;"><td style="width: 34.713%; height: 29.7969px;">`sender.city`</td><td style="width: 13.4846%; height: 29.7969px;">string **required**</td><td style="width: 51.8024%; height: 29.7969px;">Payer's city.</td></tr><tr style="height: 29.7969px;"><td style="width: 34.713%; height: 29.7969px;">`sender.postalCode`</td><td style="width: 13.4846%; height: 29.7969px;">string **required**</td><td style="width: 51.8024%; height: 29.7969px;">Payer's postal code.</td></tr><tr style="height: 29.7969px;"><td style="width: 34.713%; height: 29.7969px;">`sender.flatNumber`</td><td style="width: 13.4846%; height: 29.7969px;">string **required**</td><td style="width: 51.8024%; height: 29.7969px;">Payer's flat number.</td></tr><tr style="height: 29.7969px;"><td style="width: 34.713%; height: 29.7969px;">`sender.personalId`</td><td style="width: 13.4846%; height: 29.7969px;">string **required**</td><td style="width: 51.8024%; height: 29.7969px;">Payer's personal id.</td></tr><tr style="height: 29.7969px;"><td style="width: 34.713%; height: 29.7969px;">`sender.country`</td><td style="width: 13.4846%; height: 29.7969px;">string **required**</td><td style="width: 51.8024%; height: 29.7969px;">Payer's country.</td></tr><tr style="height: 63.375px;"><td style="width: 34.713%; height: 63.375px;">`receiver`</td><td style="width: 13.4846%; height: 63.375px;">object **required**</td><td style="width: 51.8024%; height: 63.375px;">Object containing datailed receiver's data.</td></tr><tr style="height: 29.7969px;"><td style="width: 34.713%; height: 46.5938px;">`receiver.type`</td><td style="width: 13.4846%; height: 46.5938px;">string **required**</td><td style="width: 51.8024%; height: 46.5938px;">For this configuration the value of this field must be `PLAIN`, otherwise request will be declined.</td></tr><tr style="height: 29.7969px;"><td style="width: 34.713%; height: 46.5938px;">`receiver.firstName`</td><td style="width: 13.4846%; height: 46.5938px;">string **required**</td><td style="width: 51.8024%; height: 46.5938px;">Receiver's first name.</td></tr><tr style="height: 29.7969px;"><td style="width: 34.713%; height: 49.5938px;">`receiver.lastName`</td><td style="width: 13.4846%; height: 49.5938px;">string **required**</td><td style="width: 51.8024%; height: 49.5938px;">Receiver's last name.

</td></tr><tr style="height: 29.7969px;"><td style="width: 34.713%; height: 46.5938px;">`receiver.birthDate`</td><td style="width: 13.4846%; height: 46.5938px;">string **required**</td><td style="width: 51.8024%; height: 46.5938px;">Receiver's birth day.</td></tr><tr style="height: 29.7969px;"><td style="width: 34.713%; height: 46.5938px;">`receiver.cardNumber`</td><td style="width: 13.4846%; height: 46.5938px;">string **required**</td><td style="width: 51.8024%; height: 46.5938px;">Receiver's card number PAN.</td></tr><tr style="height: 29.7969px;"><td style="width: 34.713%; height: 49.5938px;">`receiver.currency`</td><td style="width: 13.4846%; height: 49.5938px;">string **required**</td><td style="width: 51.8024%; height: 49.5938px;">Currency for transaction. For example: PLN.</td></tr><tr style="height: 29.7969px;"><td style="width: 34.713%; height: 29.7969px;">`receiver.countryOfResidence`</td><td style="width: 13.4846%; height: 29.7969px;">string</td><td style="width: 51.8024%; height: 29.7969px;">Country code in accordance with ISO 3166-1 Alpha-2. Is required for terminal crypto</td></tr></tbody></table>

</details><details id="bkmrk-example-response-bod-1"><summary>Example response body in JSON format - 202 - Accepted</summary>

```json
HTTP/1.1 202 Accepted
Content-Type: application/json
Content-Length: 56

{
  "orderId" : "0621091f-a35a-4e91-a6bf-1f753304ae83"
}
```

<table border="1" style="border-collapse: collapse; width: 100%; height: 551.812px;"><tbody><tr style="height: 35.3906px;"><td bgcolor="#002060" style="width: 34.7705%; height: 35.3906px;" width="353"><span style="font-family: Lato; color: #ecf0f1;">**Parameter**</span>

</td><td bgcolor="#002060" style="width: 15.7132%; height: 35.3906px;" width="353"><span style="font-family: Lato; color: #ecf0f1;">**Type**</span>

</td><td bgcolor="#002060" style="width: 49.6554%; height: 35.3906px;" width="353"><span style="font-family: Lato; color: #ecf0f1;">**Description**</span>

</td></tr><tr style="height: 57.7812px;"><td style="width: 34.7705%; height: 57.7812px;">`orderId`</td><td style="width: 15.7132%; height: 57.7812px;">string($uuid)</td><td style="width: 49.6554%; height: 57.7812px;">The unique identifier of transaction.

</td></tr></tbody></table>

</details><details id="bkmrk-possible-errorserror"><summary>Possible errors</summary>

Errors that may occur when attempting to transfer performing:

<details id="bkmrk-404---not-found%7B-%22uu"><summary>400 - Bad request</summary>

```json
HTTP/1.1 400 Bad Request
Content-Type: application/json
Content-Length: 104

{
  "error" : {
    "message" : "Another transaction with the same id has already been processed."
  }
}
```

</details><details id="bkmrk-409---conflict%7B-%22uui"><summary>401 - Unauthorized</summary>

```json
HTTP/1.1 401 Unauthorized
Content-Type: application/json

{
      "timestamp": "2021-12-22T12:39:53.168+0000",
      "status": 401,
      "error": "Unauthorized",
      "message": "ERROR_USER_NOTFOUND",
      "path": "/api/v2/client/send-money"
}
```

</details><details id="bkmrk-500---internal-serve-0"><summary>200 OK - Error validation</summary>

```JSON
HTTP/1.1 200 OK
Content-Type: application/json;charset=ISO-8859-1

{
	"status": "ERROR_VALIDATION",
	"error": {
		"message": "Some information is missing or incorrect.",
		"errors": [{
				"field": "requestId",
				"message": [
					"may not be null"
				]
			}
			{
				"field": "type",
				"message": [
					"may not be null"
				]
			},
			{
				"field": "amount",
				"message": [
					"may not be null"
				]
			}
		]
	}
}
```

</details><details id="bkmrk-403---forbiddenhttp%2F"><summary>403 - Forbidden</summary>

```JSON
HTTP/1.1 403 Forbidden
Content-Type: application/json

{
    "timestamp": 1610464313387,
    "status": 403,
    "error": "Forbidden",
    "message": "No message available",
    "path": "/client/send-money-3ds"
}
```

</details></details></details><p class="callout info">**Note:** If the fund are transferred by a **company,** all sender fields (including name, address, and contact details) must contain the company's information, not the personal details of an individual. The data should be provided in accordance with the requirements outlined in the table below.</p>

<table border="1" id="bkmrk-business-name-firstn" style="border-collapse: collapse; width: 100%; height: 89.3907px;"><colgroup><col style="width: 33.3731%;"></col><col style="width: 33.3731%;"></col><col style="width: 33.3731%;"></col></colgroup><tbody><tr style="height: 29.7969px;"><td bgcolor="#002060" style="width: 365.5px; height: 29.7969px;" width="353"><span style="font-family: Lato; color: #ecf0f1;">**Business Name**</span>

</td><td bgcolor="#002060" style="width: 443.5px; height: 29.7969px;" width="353"><span style="font-family: Lato; color: #ecf0f1;">**firstName**</span>

</td><td bgcolor="#002060" style="width: 365.5px; height: 29.7969px;" width="353"><span style="font-family: Lato; color: #ecf0f1;">**lastName**</span>

</td></tr><tr><td>Company</td><td>Company</td><td style="width: 365.5px;">Company</td></tr><tr style="height: 29.7969px;"><td style="height: 29.7969px;">Fine Company</td><td style="height: 29.7969px;">Fine</td><td style="width: 365.5px; height: 29.7969px;" width="353">Company</td></tr><tr style="height: 29.7969px;"><td style="height: 29.7969px;">Big Company International</td><td style="height: 29.7969px;">Big</td><td style="height: 29.7969px;">Company Integrnational</td></tr></tbody></table>

### Calculate commission payout

This method is used to receive information about the commission that will be charged for the transaction. You have to specify in the field: type two values (<span style="font-family: Lato;">`SENDER`</span> or <span style="font-family: Lato;">`RECEIVER`</span>). For Payouts the value must be <span style="font-family: Lato;">`RECEIVER`</span>. The method allows you to calculate commissions for the currencies that have been entered. Result of this method can be used in transaction by passing `calculateCommissionUuid` from the response.

<details id="bkmrk-cash-plain-headers-k"><summary>POST /client/calculate-commission/payout</summary>

<table border="1" id="bkmrk-headers-key-value-co-0" style="border-collapse: collapse; width: 100%; height: 100.578px;"><tbody><tr style="height: 35.3906px;"><td bgcolor="#002060" colspan="2" style="height: 35.3906px; width: 100.128%;" width="353"><span style="font-family: Lato; color: #ecf0f1;">**Headers**</span>

</td></tr><tr style="height: 35.3906px;"><td bgcolor="#002060" style="width: 50.0642%; height: 35.3906px;" width="353"><span style="color: #ecf0f1; font-family: Lato;">**Key**</span>

</td><td bgcolor="#002060" style="width: 50.0642%; height: 35.3906px;" width="353"><span style="font-family: Lato; color: #ecf0f1;">**Value**</span>

</td></tr><tr style="height: 29.7969px;"><td style="width: 50.0642%; height: 29.7969px;">`Content-Type`</td><td style="width: 50.0642%; height: 29.7969px;">`application/json`</td></tr><tr><td style="width: 50.0642%;">`Basic-Authorization`</td><td style="width: 50.0642%;">`Basic dXNlcm5hbWU6cGFzc3dvcmQ=`</td></tr></tbody></table>

<details id="bkmrk-example-response-bod"><summary>Example request body in JSON format</summary>

```json
{
  "amount" : 100,
  "type" : "RECEIVER",
  "sender" : {
    "type" : "CASH"
  },
  "receiver" : {
    "type" : "PLAIN",
    "cardNumber" : "5575167825713507",
    "currency" : "PLN"
  }
}
```

<table border="1" id="bkmrk-parameter-type-descr-3" style="border-collapse: collapse; width: 100%; height: 741.39px;"><tbody><tr style="height: 35.3906px;"><td bgcolor="#002060" style="width: 34.713%; height: 35.3906px;" width="353"><span style="font-family: Lato; color: #ecf0f1;">**Parameter**</span>

</td><td bgcolor="#002060" style="width: 13.4846%; height: 35.3906px;" width="353"><span style="font-family: Lato; color: #ecf0f1;">**Type**</span>

</td><td bgcolor="#002060" style="width: 51.8024%; height: 35.3906px;" width="353"><span style="font-family: Lato; color: #ecf0f1;">**Description**</span>

</td></tr><tr style="height: 57.7656px;"><td style="width: 34.713%; height: 57.7656px;">`amount`</td><td style="width: 13.4846%; height: 57.7656px;">number  
**required**</td><td style="width: 51.8024%; height: 57.7656px;">The total transfer amount (in pennies)

</td></tr><tr style="height: 57.7656px;"><td style="width: 34.713%; height: 57.7656px;">`type`</td><td style="width: 13.4846%; height: 57.7656px;">string  
**required**  
</td><td style="width: 51.8024%; height: 57.7656px;">Value for specific transaction type. Must be `RECEIVER`.

</td></tr><tr style="height: 35.3906px;"><td style="width: 34.713%; height: 29.7969px;">`sender`</td><td style="width: 13.4846%; height: 29.7969px;">object

**required**

</td><td style="width: 51.8024%; height: 29.7969px;">Object containing detailed payer's data.</td></tr><tr><td style="width: 34.713%; height: 29.7969px;">`sender.type`</td><td style="width: 13.4846%; height: 29.7969px;">string

**required**

</td><td style="width: 51.8024%; height: 29.7969px;">Required configuration per request. Must be `CASH` type.</td></tr><tr style="height: 63.375px;"><td style="width: 34.713%; height: 63.375px;">`receiver`</td><td style="width: 13.4846%; height: 63.375px;">object **required**</td><td style="width: 51.8024%; height: 63.375px;">Object containing detailed receiver's data.</td></tr><tr style="height: 29.7969px;"><td style="width: 34.713%; height: 29.7969px;">`receiver.type`</td><td style="width: 13.4846%; height: 29.7969px;">string

**required**

</td><td style="width: 51.8024%; height: 29.7969px;">For this configuration the value of this field must be `PLAIN`, otherwise request will be declined. </td></tr><tr style="height: 29.7969px;"><td style="width: 34.713%; height: 29.7969px;">`receiver.cardNumber`</td><td style="width: 13.4846%; height: 29.7969px;">string

**required**

</td><td style="width: 51.8024%; height: 46.5938px;">Receiver's card number PAN.</td></tr><tr style="height: 29.7969px;"><td style="width: 34.713%; height: 29.7969px;">`receiver.currency`</td><td style="width: 13.4846%; height: 29.7969px;">string

**required**

</td><td style="width: 51.8024%; height: 49.5938px;">Currency for transaction. For example: PLN.</td></tr></tbody></table>

</details><details><summary>Example response body in JSON format - 200 - OK</summary>

```json
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 186

{
  "calculateCommissionUuid" : "6d43d706-570e-47bd-be48-976c0c9b23b8",
  "depositChargeAmount" : 200,
  "depositChargeCurrency" : "PLN",
  "calculateCommissionExpiration" : 1710893068
}
```

<table border="1" style="border-collapse: collapse; width: 100%; height: 551.812px;"><tbody><tr style="height: 35.3906px;"><td bgcolor="#002060" style="width: 34.713%; height: 35.3906px;" width="353"><span style="font-family: Lato; color: #ecf0f1;">**Parameter**</span>

</td><td bgcolor="#002060" style="width: 15.7543%; height: 35.3906px;" width="353"><span style="font-family: Lato; color: #ecf0f1;">**Type**</span>

</td><td bgcolor="#002060" style="width: 49.5327%; height: 35.3906px;" width="353"><span style="font-family: Lato; color: #ecf0f1;">**Description**</span>

</td></tr><tr style="height: 57.7812px;"><td class="tableblock halign-left valign-top" style="width: 34.713%;">`calculateCommissionUuid`

</td><td class="tableblock halign-left valign-top" style="width: 15.7543%;">string</td><td class="tableblock halign-left valign-top" style="width: 49.5327%;">Unique identifier that can be used in authorization to use calculate commission result.

</td></tr><tr><td class="tableblock halign-left valign-top" style="width: 34.713%;">`depositChargeAmount`

</td><td class="tableblock halign-left valign-top" style="width: 15.7543%;">number</td><td class="tableblock halign-left valign-top" style="width: 49.5327%;">Amount that will be charged from deposit in pennies

</td></tr><tr><td class="tableblock halign-left valign-top" style="width: 34.713%;">`depositChargeCurrency`

</td><td class="tableblock halign-left valign-top" style="width: 15.7543%;">string</td><td class="tableblock halign-left valign-top" style="width: 49.5327%;">Deposit currency

</td></tr><tr><td class="tableblock halign-left valign-top" style="width: 34.713%;">`calculateCommissionExpiration`

</td><td class="tableblock halign-left valign-top" style="width: 15.7543%;">number</td><td class="tableblock halign-left valign-top" style="width: 49.5327%;">Expiration date of calculate commission result in unix time

</td></tr></tbody></table>

</details><details id="bkmrk-possible-errors422--"><summary>Possible errors</summary>

<details id="bkmrk-422---unprocessable-"><summary>422 - Unprocessable entity</summary>

```json
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 184

{
  "status" : "E0152",
  "message" : "Transaction rejected, issuer card not supported",
  "httpStatus" : "UNPROCESSABLE_ENTITY",
  "traceId" : "483ba538-ff94-41eb-b54d-34d1a6336ddb"
}
```

</details><details id="bkmrk-500---internal-serve-1"><summary>500 - Internal server error</summary>

```json
HTTP/1.1 500 Internal Server Error
Content-Type: application/json
Content-Length: 150

{
  "status" : "E9000",
  "message" : "Domain error",
  "httpStatus" : "INTERNAL_SERVER_ERROR",
  "traceId" : "edeb0c72-2b63-4be4-81d3-a5a878609726"
}
```

</details></details></details>### Currency rate by provider

This method is used for determine currency rate for revaluation from funding to payment (`lowerRate`) and payment to funding (`higherRate`). Notice that `lowerRate` is used to transaction processing.

<p class="callout success">**Tip:** Payout API allows users to select the direction of revaluation by providing specify type value in [`orderPayout`](https://developer.verestro.com/books/payouts-to-cards/page/technical-documentation#bkmrk-%C2%A0-0) request. User by selecting `type` = `SENDER` defines amount of funding in given currency. This amount is collected from sender card in selected currency. In case there's need revaluation from one currency to another, system uses `lowerRate`.  
</p>

<details id="bkmrk-post-%2Fclient%2Fcalcula"><summary>POST /client/currency-rate</summary>

<table border="1" id="bkmrk-headers-key-value-co" style="border-collapse: collapse; width: 100%; height: 100.578px;"><tbody><tr style="height: 35.3906px;"><td bgcolor="#002060" colspan="2" style="height: 35.3906px; width: 100.128%;" width="353"><span style="font-family: Lato; color: #ecf0f1;">**Headers**</span>

</td></tr><tr style="height: 35.3906px;"><td bgcolor="#002060" style="width: 50.0642%; height: 35.3906px;" width="353"><span style="color: #ecf0f1; font-family: Lato;">**Key**</span>

</td><td bgcolor="#002060" style="width: 50.0642%; height: 35.3906px;" width="353"><span style="font-family: Lato; color: #ecf0f1;">**Value**</span>

</td></tr><tr style="height: 29.7969px;"><td style="width: 50.0642%; height: 29.7969px;">`Content-Type`</td><td style="width: 50.0642%; height: 29.7969px;">`application/json`</td></tr><tr><td style="width: 50.0642%;">`Basic-Authorization`</td><td style="width: 50.0642%;">`Basic dXNlcm5hbWU6cGFzc3dvcmQ=`</td></tr></tbody></table>

<details id="bkmrk-example-request-body-3"><summary>Example request body in JSON format</summary>

```
{
  "provider" : "MASTERCARD",
  "from" : "USD",
  "to" : "PLN",
  "effectiveDate" : "2017-06-05 12:00:00"
}
```

<table border="1" id="bkmrk-parameter-type-descr" style="border-collapse: collapse; width: 100%; height: 502.9px;"><tbody><tr style="height: 36px;"><td bgcolor="#002060" style="width: 34.713%; height: 36px;" width="353"><span style="font-family: Lato; color: #ecf0f1;">**Parameter**</span>

</td><td bgcolor="#002060" style="width: 13.4846%; height: 36px;" width="353"><span style="font-family: Lato; color: #ecf0f1;">**Type**</span>

</td><td bgcolor="#002060" style="width: 51.8024%; height: 36px;" width="353"><span style="font-family: Lato; color: #ecf0f1;">**Description**</span>

</td></tr><tr style="height: 63.375px;"><td style="width: 34.713%; height: 63.375px;">`provider`</td><td style="width: 13.4846%; height: 63.375px;">string **required**</td><td style="width: 51.8024%; height: 63.375px;">VISA or MASTERCARD or MAESTRO.</td></tr><tr style="height: 57.6px;"><td style="width: 34.713%; height: 57.6px;">`from`</td><td style="width: 13.4846%; height: 57.6px;">string

**required**

</td><td style="width: 51.8024%; height: 57.6px;">Source revaluation currency. </td></tr><tr style="height: 57.6px;"><td style="width: 34.713%; height: 57.6px;">`to`</td><td style="width: 13.4846%; height: 57.6px;">string

**required**

</td><td style="width: 51.8024%; height: 57.6px;">Destination revaluation currency.</td></tr><tr style="height: 57.6px;"><td style="width: 34.713%; height: 57.6px;">`effectiveDate`</td><td style="width: 13.4846%; height: 57.6px;">string

</td><td style="width: 51.8024%; height: 57.6px;">Date from which the currency rate is needed. This is optional field. When there is no effectiveDate field, then currency rate is getting from request date. (Format "yyyy-MM-ddHH:mm:ss")</td></tr></tbody></table>

</details><details><summary>Example response body in JSON format - 200 - OK</summary>

```json
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 104

{
  "status" : "SUCCESS",
  "success" : {
    "lowerRate" : 3.735908,
    "higherRate" : 3.8522295
  }
}
```

<table border="1" style="border-collapse: collapse; width: 100%; height: 551.812px;"><tbody><tr style="height: 35.3906px;"><td bgcolor="#002060" style="width: 34.6667%; height: 35.3906px;" width="353"><span style="font-family: Lato; color: #ecf0f1;">**Parameter**</span>

</td><td bgcolor="#002060" style="width: 15.7333%; height: 35.3906px;" width="353"><span style="font-family: Lato; color: #ecf0f1;">**Type**</span>

</td><td bgcolor="#002060" style="width: 49.6%; height: 35.3906px;" width="353"><span style="font-family: Lato; color: #ecf0f1;">**Description**</span>

</td></tr><tr style="height: 57.7812px;"><td class="tableblock halign-left valign-top" style="width: 34.6667%;">`status`

</td><td class="tableblock halign-left valign-top" style="width: 15.7333%;">string</td><td class="tableblock halign-left valign-top" style="width: 49.6%;">Status of the revaluation.

</td></tr><tr><td class="tableblock halign-left valign-top" style="width: 34.6667%;">`success`

</td><td class="tableblock halign-left valign-top" style="width: 15.7333%;">object</td><td class="tableblock halign-left valign-top" style="width: 49.6%;">Rate for revaluation.

</td></tr><tr><td class="tableblock halign-left valign-top" style="width: 34.6667%;">`success.lowerRate`

</td><td class="tableblock halign-left valign-top" style="width: 15.7333%;">decimal

</td><td class="tableblock halign-left valign-top" style="width: 49.6%;">Rate for revaluation from funding to payment

</td></tr><tr><td class="tableblock halign-left valign-top" style="width: 34.6667%;">`success.higherRate`

</td><td class="tableblock halign-left valign-top" style="width: 15.7333%;">decimal

</td><td class="tableblock halign-left valign-top" style="width: 49.6%;">Rate for revaluation from payment to funding

</td></tr></tbody></table>

</details><details id="bkmrk-possible-errors422---0"><summary>Possible errors</summary>

<details id="bkmrk-422---unprocessable--0"><summary>200 - OK</summary>

```json
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8

{
    "status": "CURRENCY_INVALID",
    "error": {
        "message": "Invalid currency."
    }
}
```

```
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8

{
    "status": "CURRENCY_RATES_INVALID",
    "error": {
        "message": "Invalid currency rates."
    }
}
```

```
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8

{
    "status": "ERROR_VALIDATION",
    "error": {
        "message": "Some information is missing or incorrect.",
        "errors": [
            {
                "field": "sender.currency",
                "message": [
                    "Currency is not supported"
                ]
            },
            {
                "field": "receiver.currency",
                "message": [
                    "Currency is not supported"
                ]
            }
        ]
    }
}
```

</details></details></details>### Check status

The method allows to get a status of multi-currency transfer providing transfer order id in the method's URL address. Parameter order id was returned in the response of the <span style="font-family: Lato;">[`orderPayout`](https://developer.verestro.com/books/payouts/page/technical-documentation#bkmrk-%C2%A0-0) method.</span>

<details id="bkmrk-get-%2Fclient%2Fsend-mon"><summary>GET /client/send-money/details/{orderId}</summary>

<table border="1" id="bkmrk-headers-key-value-co-1" style="border-collapse: collapse; width: 100%; height: 100.578px;"><tbody><tr style="height: 35.3906px;"><td bgcolor="#002060" colspan="2" style="height: 35.3906px; width: 100.128%;" width="353"><span style="font-family: Lato; color: #ecf0f1;">**Headers**</span>

</td></tr><tr style="height: 35.3906px;"><td bgcolor="#002060" style="width: 50.0642%; height: 35.3906px;" width="353"><span style="color: #ecf0f1; font-family: Lato;">**Key**</span>

</td><td bgcolor="#002060" style="width: 50.0642%; height: 35.3906px;" width="353"><span style="font-family: Lato; color: #ecf0f1;">**Value**</span>

</td></tr><tr style="height: 29.7969px;"><td style="width: 50.0642%; height: 29.7969px;">`Content-Type`</td><td style="width: 50.0642%; height: 29.7969px;">`application/json`</td></tr><tr><td style="width: 50.0642%;">`Basic-Authorization`</td><td style="width: 50.0642%;">`Basic dXNlcm5hbWU6cGFzc3dvcmQ=`</td></tr></tbody></table>

<table border="1" id="bkmrk-query-parameter-valu" style="border-collapse: collapse; width: 100%; height: 100.578px;"><tbody><tr style="height: 35.3906px;"><td bgcolor="#002060" style="width: 50.0642%; height: 35.3906px;" width="353"><span style="color: #ecf0f1; font-family: Lato;">**Query parameter**</span>

</td><td bgcolor="#002060" style="width: 50.0642%; height: 35.3906px;" width="353"><span style="font-family: Lato; color: #ecf0f1;">**Value**</span>

</td></tr><tr style="height: 29.7969px;"><td style="width: 50.0642%; height: 29.7969px;">`orderId`</td><td style="width: 50.0642%; height: 29.7969px;">`<UUID of the ordered transfer>`</td></tr></tbody></table>

<details id="bkmrk-example-response-bod-2"><summary>Example response body in JSON format - 200 - OK</summary>

```json
{
  "transactionId" : "TRX220132AM",
  "amount" : 1000,
  "amountInUsDollar" : 268,
  "bigDecimalAmount" : 10.0,
  "commission" : 200,
  "bigDecimalCommission" : 2.0,
  "orderId" : "00549d98-08cb-45d2-8673-4dcafa81f498",
  "createdDate" : "03-04-2018, 14:01",
  "fundingRrn" : "014011103023",
  "paymentRrn" : "014011103024",
  "arn" : "05411640143500000019325",
  "3DS" : true,
  "revaluationResult" : {
    "revaluationFundingAmount" : 1000,
    "bigDecimalRevaluationFundingAmount" : 10.0,
    "fundingCurrency" : "PLN",
    "revaluationPaymentAmount" : 1000,
    "bigDecimalRevaluationPaymentAmount" : 10.0,
    "paymentCurrency" : "PLN",
    "determineCurrencyRate" : {
      "from" : "PLN",
      "to" : "PLN",
      "currencyRate" : "1"
    }
  },
  "receiver" : {
    "firstName" : "John",
    "lastName" : "Novak",
    "provider" : "MASTERCARD",
    "hiddenCardNumber" : "557455******1623",
    "bankName" : "Alior Bank SA"
  },
  "sender" : {
    "firstName" : "Caroline",
    "lastName" : "Novak",
    "provider" : "MASTERCARD",
    "hiddenCardNumber" : "511796******9169",
    "bankName" : "Alior Bank SA"
  }
}
```

<table border="1" id="bkmrk-response-parameters-" style="border-collapse: collapse; width: 100%; height: 1058.44px;"><tbody><tr style="height: 35.3906px;"><td bgcolor="#002060" colspan="3" style="height: 35.3906px; width: 100%;" width="353"><span style="font-family: Lato; color: #ecf0f1;">**Response parameters**</span>

</td></tr><tr style="height: 35.3906px;"><td bgcolor="#002060" style="width: 40.2574%; height: 35.3906px;" width="353"><span style="font-family: Lato; color: #ecf0f1;">**Parameter**</span>

</td><td bgcolor="#002060" style="width: 26.4092%; height: 35.3906px;" width="353"><span style="font-family: Lato; color: #ecf0f1;">**Type**</span>

</td><td bgcolor="#002060" style="width: 33.3333%; height: 35.3906px;" width="353"><span style="font-family: Lato; color: #ecf0f1;">**Description**</span>

</td></tr><tr style="height: 46.5938px;"><td style="width: 40.2574%; height: 46.5938px;">`amount`</td><td style="width: 26.4092%; height: 46.5938px;">number</td><td style="width: 33.3333%; height: 46.5938px;">Amount of the transferred cash of the currency in pennies \[1PLN = 100\].</td></tr><tr style="height: 46.5938px;"><td style="width: 40.2574%; height: 46.5938px;">`amountInUsDollar`</td><td style="width: 26.4092%; height: 46.5938px;">number</td><td style="width: 33.3333%; height: 46.5938px;">Amount of the transferred cash in pennies in USD currency \[1PLN = 100\].</td></tr><tr style="height: 46.5938px;"><td style="width: 40.2574%; height: 46.5938px;">`bigDecimalAmount`</td><td style="width: 26.4092%; height: 46.5938px;">number</td><td style="width: 33.3333%; height: 46.5938px;">Amount of the transferred cash with decimal precision.</td></tr><tr style="height: 46.5938px;"><td style="width: 40.2574%; height: 46.5938px;">`commission`</td><td style="width: 26.4092%; height: 46.5938px;">number</td><td style="width: 33.3333%; height: 46.5938px;">Amount of the commission added to the ordered transfer in pennies \[1PLN = 100\]</td></tr><tr style="height: 46.5938px;"><td style="width: 40.2574%; height: 46.5938px;">`bigDecimalCommission`</td><td style="width: 26.4092%; height: 46.5938px;">number</td><td style="width: 33.3333%; height: 46.5938px;">Amount of the commission added to the ordered transfer with decimal precision.</td></tr><tr style="height: 29.7969px;"><td style="width: 40.2574%; height: 29.7969px;">`orderId`</td><td style="width: 26.4092%; height: 29.7969px;">string</td><td style="width: 33.3333%; height: 29.7969px;">Unique transaction identifier.</td></tr><tr style="height: 80.1719px;"><td style="width: 40.2574%; height: 80.1719px;">`transactionId`</td><td style="width: 26.4092%; height: 80.1719px;">string</td><td class="tableblock halign-left valign-top" style="width: 33.3333%; height: 80.1719px;">This parameter is used to send you your own internal transaction identifier. This field is also sent by the [`webhook`](https://developer.verestro.com/books/payouts/page/technical-documentation#bkmrk-webhook) method.

</td></tr><tr style="height: 29.7969px;"><td style="width: 40.2574%; height: 29.7969px;">`createdDate`</td><td style="width: 26.4092%; height: 29.7969px;">string</td><td style="width: 33.3333%; height: 29.7969px;">Date of transaction order.</td></tr><tr style="height: 29.7969px;"><td style="width: 40.2574%; height: 29.7969px;">`fundingRrn`</td><td style="width: 26.4092%; height: 29.7969px;">string</td><td style="width: 33.3333%; height: 29.7969px;">Funding retrieval reference number.</td></tr><tr style="height: 29.7969px;"><td style="width: 40.2574%; height: 29.7969px;">`paymentRrn`</td><td style="width: 26.4092%; height: 29.7969px;">string</td><td style="width: 33.3333%; height: 29.7969px;">Payment retrieval reference number.</td></tr><tr style="height: 29.7969px;"><td style="width: 40.2574%; height: 29.7969px;">`arn`</td><td style="width: 26.4092%; height: 29.7969px;">string</td><td style="width: 33.3333%; height: 29.7969px;">Acquirering institution reference number.</td></tr><tr style="height: 46.5938px;"><td style="width: 40.2574%; height: 46.5938px;">`3DS`</td><td style="width: 26.4092%; height: 46.5938px;">boolean</td><td style="width: 33.3333%; height: 46.5938px;">The value: `true`/`false` informs whether 3DS was performed or not.</td></tr><tr style="height: 63.3906px;"><td style="width: 40.2574%; height: 63.3906px;">`revaluationResult`</td><td style="width: 26.4092%; height: 63.3906px;">object</td><td style="width: 33.3333%; height: 63.3906px;">Detailed information about revaluation between sender currency and receiver currency.</td></tr><tr style="height: 46.5938px;"><td style="width: 40.2574%; height: 46.5938px;">`revaluationResult.revaluationFundingAmount`</td><td style="width: 26.4092%; height: 46.5938px;">number</td><td style="width: 33.3333%; height: 46.5938px;">Amount of the funding transaction in `fundingCurrency` in pennies \[1PLN = 100\].</td></tr><tr style="height: 46.5938px;"><td style="width: 40.2574%; height: 46.5938px;">`revaluationResult.bigDecimalRevaluationFundingAmount`</td><td style="width: 26.4092%; height: 46.5938px;">number</td><td style="width: 33.3333%; height: 46.5938px;">Amount of the funding transaction in decimal precision.</td></tr><tr style="height: 46.5938px;"><td style="width: 40.2574%; height: 46.5938px;">`revaluationResult.fundingCurrency`</td><td style="width: 26.4092%; height: 46.5938px;">string</td><td style="width: 33.3333%; height: 46.5938px;">Currency code the same as sender’s card currency.</td></tr><tr style="height: 46.5938px;"><td style="width: 40.2574%; height: 46.5938px;">`revaluationResult.revaluationPaymentAmount`</td><td style="width: 26.4092%; height: 46.5938px;">number</td><td style="width: 33.3333%; height: 46.5938px;">Amount of the payment transaction in `paymentCurrency` in pennies \[1PLN = 100\].</td></tr><tr style="height: 46.5938px;"><td style="width: 40.2574%; height: 46.5938px;">`revaluationResult.bigDecimalRevaluationPaymentAmount`</td><td style="width: 26.4092%; height: 46.5938px;">number</td><td style="width: 33.3333%; height: 46.5938px;">Amount of the payment transaction in decimal precision.</td></tr><tr style="height: 46.5938px;"><td style="width: 40.2574%; height: 46.5938px;">`revaluationResult.paymentCurrency`</td><td style="width: 26.4092%; height: 46.5938px;">string</td><td style="width: 33.3333%; height: 46.5938px;">Currency code the same as receivers's card currency.</td></tr><tr style="height: 29.7969px;"><td style="width: 40.2574%; height: 29.7969px;">`revaluationResult.determineCurrencyRate`</td><td style="width: 26.4092%; height: 29.7969px;">object</td><td style="width: 33.3333%; height: 29.7969px;">Details about currency conversion.</td></tr><tr style="height: 29.7969px;"><td style="width: 40.2574%; height: 29.7969px;">`revaluationResult.determineCurrencyRate.from`</td><td style="width: 26.4092%; height: 29.7969px;">number</td><td style="width: 33.3333%; height: 29.7969px;">Currency coverted "from".</td></tr><tr style="height: 29.7969px;"><td style="width: 40.2574%; height: 29.7969px;">`revaluationResult.determineCurrencyRate.to`</td><td style="width: 26.4092%; height: 29.7969px;">number</td><td style="width: 33.3333%; height: 29.7969px;">Result of the conversion.</td></tr><tr style="height: 46.5938px;"><td style="width: 40.2574%; height: 46.5938px;">`revaluationResult.determineCurrencyRate.currencyRate`</td><td style="width: 26.4092%; height: 46.5938px;">number</td><td style="width: 33.3333%; height: 46.5938px;">Currency rate.</td></tr></tbody></table>

</details><details id="bkmrk-possible-errors203---0"><summary>Possible errors</summary>

<details id="bkmrk-203---non-authoritat-0"><summary>203 - Non-authoritative information</summary>

<p class="callout warning">**Important!** After you get 203 and if you don’t get a response (200 - succeeded or 500 - declined) within 60 seconds then please contact us.</p>

```JSON
HTTP/1.1 203 Non-Authoritative Information
```

</details><details id="bkmrk-401---unauthorized%7B-"><summary>401 - Unauthorized</summary>

```JSON
{
  "timestamp": "2023-03-29T19:16:01.288+00:00",
  "status": 401,
  "error": "Unauthorized",
  "path": "/api/v1/transactions/9609a08e-cd80-4e6e-8664-f1e6b2f2dc50"
}
```

</details><details id="bkmrk-404---not-foundhttp%2F-0"><summary>404 - Not found</summary>

```JSON
HTTP/1.1 404 Not Found
Content-Type: application/json
Content-Length: 51

{
  "errorStatus" : "ERROR_TRANSACTION_NOT_FOUND"
}
```

</details><details id="bkmrk-422---unprocessable--2"><summary>422 - Unprocessable entity</summary>

```JSON
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 1287

{
  "transactionId" : "TRX220132AM",
  "amount" : 1000,
  "amountInUsDollar" : 268,
  "bigDecimalAmount" : 10.0,
  "commission" : 200,
  "bigDecimalCommission" : 2.0,
  "orderId" : "00549d98-08cb-45d2-8673-4dcafa81f498",
  "createdDate" : "03-04-2018, 14:01",
  "fundingRrn" : "014011103023",
  "paymentRrn" : "014011103024",
  "arn" : "05411640143500000019325",
  "3DS" : true,
  "revaluationResult" : {
    "revaluationFundingAmount" : 1000,
    "bigDecimalRevaluationFundingAmount" : 10.0,
    "fundingCurrency" : "PLN",
    "revaluationPaymentAmount" : 1000,
    "bigDecimalRevaluationPaymentAmount" : 10.0,
    "paymentCurrency" : "PLN",
    "determineCurrencyRate" : {
      "from" : "PLN",
      "to" : "PLN",
      "currencyRate" : "1"
    }
  },
  "receiver" : {
    "firstName" : "John",
    "lastName" : "Novak",
    "provider" : "MASTERCARD",
    "hiddenCardNumber" : "557455******1623",
    "bankName" : "Alior Bank SA"
  },
  "sender" : {
    "firstName" : "Caroline",
    "lastName" : "Novak",
    "provider" : "MASTERCARD",
    "hiddenCardNumber" : "511796******9169",
    "bankName" : "Alior Bank SA"
  },
  "transactionStatus" : "DECLINED",
  "cardBlockType" : "TEMP",
  "cardBlockedUntil" : "2024-03-21T01:04:17.573",
  "errorStatus" : "ERROR_SENDER_CARD_IS_BLOCKED"
}
```

</details><details id="bkmrk-422---unprocessable--3"><summary>422 - Unprocessable entity CASH-CARD</summary>

```JSON
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
Content-Length: 1358

{
  "transactionId" : "TRX220132AM",
  "amount" : 1000,
  "amountInUsDollar" : 268,
  "bigDecimalAmount" : 10.0,
  "commission" : 200,
  "bigDecimalCommission" : 2.0,
  "orderId" : "00549d98-08cb-45d2-8673-4dcafa81f498",
  "createdDate" : "03-04-2018, 14:01",
  "fundingRrn" : "014011103023",
  "paymentRrn" : "014011103024",
  "arn" : "05411640143500000019325",
  "3DS" : false,
  "revaluationResult" : {
    "revaluationFundingAmount" : 1000,
    "bigDecimalRevaluationFundingAmount" : 10.0,
    "fundingCurrency" : "PLN",
    "revaluationPaymentAmount" : 1000,
    "bigDecimalRevaluationPaymentAmount" : 10.0,
    "paymentCurrency" : "PLN",
    "determineCurrencyRate" : {
      "from" : "PLN",
      "to" : "PLN",
      "currencyRate" : "1"
    }
  },
  "receiver" : {
    "firstName" : "John",
    "lastName" : "Novak",
    "provider" : "MASTERCARD",
    "hiddenCardNumber" : "557455******1623",
    "bankName" : "Alior Bank SA"
  },
  "sender" : {
    "firstName" : "Caroline",
    "lastName" : "Novak",
    "provider" : "CASH"
  },
  "transactionStatus" : "DECLINED",
  "merchantSettlementCurrency" : "USD",
  "fenigeCommissionInMerchantSettlementCurrency" : 0.05,
  "transactionAmountInMerchantSettlementCurrency" : 2.68,
  "cardBlockType" : "TEMP",
  "cardBlockedUntil" : "2024-03-21T01:04:18.165",
  "errorStatus" : "ERROR_SENDER_CARD_IS_BLOCKED"
}
```

</details><details id="bkmrk-500---internal-serve-2"><summary>500 - Internal server error</summary>

```JSON
HTTP/1.1 500 Internal Server Error
Content-Type: text/plain;charset=ISO-8859-1

PAYMENT_TRANSACTION_DECLINED:CODE_05
```

</details></details></details>
### Webhook

This method allow you to receive notification after the ordered transaction. After handling the request from Verestro system, you will be notified of the current status of the transaction. Then you can be sure that the transaction processing was finished and you can get the transaction details if you want to. This functionality is optional and it is not required to use Payout solution.

<p class="callout info">**Note:** To use the webhooks functionality, please notify Verestro Sales Department. After that we will configure URL address and a secret token which you will be using to communicate with webhook service. Please notice you must specify the URL - webhook will be sent to this address. The secret token will be generated by the Verestro employee and sent to the client.</p>

<details id="bkmrk-sequence-diagram-pre"><summary>Sequence diagram presenting webhook process</summary>

@startuml  
skinparam ParticipantPadding 30  
skinparam BoxPadding 30  
skinparam noteFontColor #FFFFFF  
skinparam noteBackgroundColor #1C1E3F  
skinparam noteBorderColor #1C1E3F  
skinparam noteBorderThickness 1  
skinparam sequence {  
ArrowColor #1C1E3F  
ArrowFontColor #1C1E3F  
ActorBorderColor #1C1E3F  
ActorBackgroundColor #FFFFFF  
ActorFontStyle bold  
ParticipantBorderColor #1C1E3F  
ParticipantBackgroundColor #1C1E3F  
ParticipantFontColor #FFFFFF  
ParticipantFontStyle bold  
LifeLineBackgroundColor #1C1E3F  
LifeLineBorderColor #1C1E3F  
}  
participant "Customer" as c  
participant "Verestro" as v  
c-&gt;v: Transaction request  
c&lt;-v: Response  
v-&gt;v: Transaction processing...  
v-&gt;c: Transaction processing finnished callback (webhook)  
c-&gt;v: Response HTTP Status 200 OK  
@enduml

</details>You must return HTTP status 200 OK after receiving webhook. Otherwise our server will retry the request. There are 3 attemps of requesting webhook. Every repeat is executed with 5 seconds interval excluding timeout from your server.

<p class="callout success">**Tip:** In order to protect client API by polling or other undesirable actions, the webhook service uses headers. If you want to use get webhook notification, you need to handle required headers on your side.</p>

<p class="callout success">**Tip:** To build `X-MERCHANT-SECRET` header:  
1. Concatenate secret token established by you and Verestro's employee with `orderId` of transaction  
2. Hash with SHA256 function result of above operation</p>

<details id="bkmrk-example-of-x-merchan"><summary>Example of X-MERCHANT-SECRET building</summary>

```
import hashlib

# secret token established by client with verestro's employee
secret = 'mNaU9TaK4m9myYYFBJgKu8slNH2fCKutJyzXwI'

# orderId received from webhook's request
order_id = 'c168a885-acfa-4a91-a1ad-ed7a042b7238'

# concatenate strings in correct order
concatenated = secret + order_id

# use SHA256 hashing function
hashed = hashlib.sha256(concatenated.encode('utf-8')).hexdigest()

# then compare 'hashed' variable with content of 'X-MERCHANT-SECRET' header
```

</details>There are three possible states of the webhook: `TRANSACTION_APPROVED`, `TRANSACTION_DECLINED` or `TRANSACTION_REVERSED`. Each of the webhooks is presented below:

<table border="1" id="bkmrk-headers-key-descript" style="border-collapse: collapse; width: 100%; height: 100.578px;"><tbody><tr style="height: 35.3906px;"><td bgcolor="#002060" colspan="2" style="height: 35.3906px; width: 100.124%;" width="353"><span style="font-family: Lato; color: #ecf0f1;">**Headers**</span>

</td></tr><tr style="height: 35.3906px;"><td bgcolor="#002060" style="width: 32.5309%; height: 35.3906px;" width="353"><span style="color: #ecf0f1; font-family: Lato;">**Key**</span>

</td><td bgcolor="#002060" style="width: 67.5927%; height: 35.3906px;" width="353"><span style="font-family: Lato; color: #ecf0f1;">**Description**</span>

</td></tr><tr style="height: 29.7969px;"><td style="width: 32.5309%; height: 29.7969px;">`X-MERCHANT-SECRET`</td><td style="width: 67.5927%; height: 29.7969px;">SHA256 Hash string composed from secret token and orderId placed in request body of this webhook</td></tr><tr><td style="width: 32.5309%;">`X-MERCHANT-TIMESTAMP`</td><td style="width: 67.5927%;">Timestamp of server response in UNIX format for instance: 1614023731</td></tr></tbody></table>

<details id="bkmrk-transaction_approved"><summary>TRANSACTION\_APPROVED</summary>

```
Content-Type: application/json
X-MERCHANT-SECRET: 3cbd17f561150a1394cabbe2b6031fd83f3f3081abe28c32b7fed16f32aebc4a
X-MERCHANT-TIMESTAMP: 1614800720
{
    "orderId": "c168a885-acfa-4a91-a1ad-ed7a042b7238",
    "transactionId": "TRX220132AM",
    "status": "APPROVED",
    "responseCode": "CODE_00",
    "amount": 900,
    "amountCurrency": "PLN",
    "amountInUsDollar": 248,
    "revaluationResult": {
      "revaluationFundingAmount": 900,
      "bigDecimalRevaluationFundingAmount": 9,
      "fundingCurrency": "PLN",
      "revaluationPaymentAmount": 900,
      "bigDecimalRevaluationPaymentAmount": 9,
      "paymentCurrency": "PLN",
      "determineCurrencyRate": {
        "from": "PLN",
        "to": "PLN",
        "currencyRate": "1"
      }
    },
    "commissionAmount": 46,
    "commissionCurrency": "PLN"
}
```

</details><details id="bkmrk-transaction_declined"><summary>TRANSACTION\_DECLINED</summary>

```
Content-Type: application/json
X-MERCHANT-SECRET: 3cbd17f561150a1394cabbe2b6031fd83f3f3081abe28c32b7fed16f32aebc4a
X-MERCHANT-TIMESTAMP: 1614800720

{
    "orderId": "42e8a03a-eb2e-4208-b99b-ac2ad6308498",
    "transactionId": "TRX220132AM",
    "status": "DECLINED",
    "responseCode": "CODE_05",
    "errorMessage": "FUNDING_TRANSACTION_DECLINED:CODE_05",
    "amount": 900,
    "amountCurrency": "PLN",
    "amountInUsDollar": 248,
    "revaluationResult": {
      "revaluationFundingAmount": 900,
      "bigDecimalRevaluationFundingAmount": 9,
      "fundingCurrency": "PLN",
      "revaluationPaymentAmount": 900,
      "bigDecimalRevaluationPaymentAmount": 9,
      "paymentCurrency": "PLN",
      "determineCurrencyRate": {
        "from": "PLN",
        "to": "PLN",
        "currencyRate": "1"
      }
    },
    "commissionAmount": 46,
    "commissionCurrency": "PLN",
    "merchantAdviceCode": "03 - Do not try again"
}
```

</details><details id="bkmrk-transaction_reversed"><summary>TRANSACTION\_REVERSED</summary>

```
Content-Type: application/json
X-MERCHANT-SECRET: 3cbd17f561150a1394cabbe2b6031fd83f3f3081abe28c32b7fed16f32aebc4a
X-MERCHANT-TIMESTAMP: 1614800720

{
    "orderId": "1b498361-f8db-406e-943b-ca2b12b7aa38",
    "transactionId": "TRX220132AM",
    "status": "REVERSED",
    "responseCode": "CODE_00",
    "amount": 1000,
    "amountCurrency": "PLN",
    "amountInUsDollar": 273,
    "revaluationResult": {
      "revaluationFundingAmount": 1000,
      "bigDecimalRevaluationFundingAmount": 10,
      "fundingCurrency": "PLN",
      "revaluationPaymentAmount": 262,
      "bigDecimalRevaluationPaymentAmount": 2.62,
      "paymentCurrency": "USD",
      "determineCurrencyRate": {
        "from": "PLN",
        "to": "USD",
        "currencyRate": "0.2616157"
      }
    },
    "commissionAmount": 1,
    "commissionCurrency": "PLN"
}
```

</details>

# Onboarding

This chapter is intended to present you the requirements that will allow you to use the Payout to Card solution in your Company. We have presented here what information is necessary to provide so that you can join the Payout to Card program and so that we can properly create the required corporate balance account for you thus allowing you to funds management and card issuing.

### <span style="font-family: Lato;">Business onboarding</span>

<table border="1" id="bkmrk-to-start-using-payto" style="border-collapse: collapse; width: 100%;"><tbody><tr><td bgcolor="#002060" style="width: 100%; height: 35.5px;" width="573">**<span style="font-family: Lato; color: #ecf0f1;">To start using Money Transfers via Card you need to go through a few on-boarding steps:</span>**

</td></tr><tr><td style="width: 100%;">1\. Please contact our sales - <span style="color: #3598db;">*salesteam@verestro.com* </span>

</td></tr><tr><td style="width: 100%;">2\. Please respond to some introduction question that will let us prepare proposal for you.

</td></tr><tr><td style="width: 100%;">3\. You will receive offer for card issuing and payouts processes.

</td></tr><tr><td style="width: 100%;">4\. If you accept the offer you will be asked to provide some company documents required for the AML verification process.

</td></tr><tr><td style="width: 100%;">5\. You need to perform KYB process to pass verification of your company.

</td></tr><tr><td style="width: 100%;">6\. And finally you will enable you your own balance in Verestro Payout to Card program.

</td></tr></tbody></table>

### Technical onboarding

After completing the business onboarding process, you will be granted the appropriate access. This will allow you to integrate with the API methods provided by us, as described in the [“How to integrate – API reference”](https://developer.verestro.com/books/payout-to-card/page/how-to-integrate-api-reference) section.

<p class="callout success">**Tip:** Please remember to inform us on which environment you want us to configure an account for you. Verestro Payout to Card offers two environments: <span lang="en-US">`TEST`</span> and <span lang="en-US">`PROD`</span>. </p>

<p class="callout warning">**Important!** Implementation of the <span lang="en-US">`PROD`</span> environment is work in progress...</p>