# Card Issuing and Core Banking

Verestro Antaca is responsible for card issuing and account opening. The system can perform KYC and eKYC of the user before card issuing. You can manage card and user balance through Antaca.

# Article

You can find more knowledge about products on this site.

# Payment schemes

In this document we describe how payment schemes (Mastercard and VISA) work.

Payment card business is a large global market, which was developed in the USA in the first half of XX century and has grown globally. In this document we will describe the main business principles and in the next chapters we will go into more details. We will focus mainly on Mastercard and VISA operations, as these are the largest payment schemes in the world and the main partners we work with.

#### Four Party Model

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

Let's start with the general relationships between the parties. In the Mastercard and VISA 4-party model (which is actually 5-party model) there are the following players:

**1. Cardholder** - has a contract with Card Issuer, which is usually a bank, financial institution, payment institution, credit union, etc. Cardholder keeps a card in a plastic or virtual form that he/she gets from Issuer. Cardholder makes a purchase transaction at Merchant or sometimes withdraws money from an ATM. In the case of an ATM transaction, the ATM operator (usually a bank) acts as Merchant in a standard purchase transaction.

- Cardholder is happy because he/she does not need to carry cash all the time and has money all the time in their pocket or phone.
- Cardholder has to pay card fees to Issuer for getting a payment card.

**2. Merchant** - delivers goods to Cardholder, but does not receive cash immediately, but accepts the card transaction, which gives him/her almost 100% confidence that he/she will receive money in a few hours or days.

- Merchant is happy because he/she sold goods, usually having sold more than Cardholder could afford with cash. Imagine the situation where you have to pay cash all the time. Would you always carry enough cash with you? What if you want to buy something, but you do not have enough cash?
- Merchant has to pay the so called "Merchant Fees" to Acquirer for processing the transaction. Usually, Merchant Fees are between 0,5-3% depending on transaction value, country, merchant segment, type of card etc. Merchant fees cover most, if not all, of the transaction processing costs. They usually include all the fees charged by Acquirer, Issuer, Mastercard or VISA for the transaction.

**3. Issuer** - Issuer is usually a bank, credit union or any other payment institution that delivers payment cards to cardholders (consumers or businesses). Issuer signs contracts with cardholders. On the other side of business, Issuer has a franchising or licensing contract with VISA and Mastercard and connects to their network using Issuing Processors. Verestro and our partners plays the role of Issuer and Issuer Processor in our card issuing or BIN sponsorship projects. During the transaction process, Issuer usually gets authorization, clearing and settlement messages that result in transfer of money from a cardholder account to Acquirer so that Acquirer could settle the transaction with Merchant.

- Issuer is happy because they charge card fees to Cardholder (for example monthly per card) and get transaction fees called Interchange Fee from Acquirer. Interchange fee is a very important part of Merchant Fees. In the European Union for consumer cards it is usually in the value of 0,2-0,3%, but in many countries, especially for business and credit cards, it can amount to 1-2% of the transaction value.
- Issuer has to cover costs of card issuing, which include: 
    - Cost of payment scheme (Mastercard or VISA) incl. monthly connection, license, authorization, clearing and many many other fees. This is usually the main part of Issuer's costs.
    - Cost of other processors incl. transaction authorisation, card maintenance, card tokenization, plastic card manufacturing, personalisation, delivery, etc.
    - Regulatory costs incl. payment license operations, Anti-Money Laundering processes, etc.
    - Various costs connected with maintaining a relationship with Cardholder incl. proper communications, SLAs, etc.

**4. Acquirer** - Acquirer is usually a bank or payment institution that signs contracts with merchants, settles payment transactions with merchants and has acquiring contracts with a payment scheme. Acquirer usually provides a payment terminal to merchant locations, and makes sure if it works and is ready for transactions.

- Acquirer is happy because they charge Merchant Fees that usually consist of transaction fees (0,5-3%), sometimes fixed fees per transaction (0,01-0,5 EUR) and monthly fees per terminal.
- Acquirer needs to cover various fees, including regulatory fees, payment scheme costs, cost of processors, terminal purchase and costs of operations.

**5. Payment Scheme** - Payment Scheme (i.e. Mastercard or VISA) are key for keeping the model running. They develop technical systems that issuers and acquirers are connected to, they process transactions, they develop the market. However, they are also the biggest beneficiaries of the market growth as every new transaction represents revenue for Mastercard and VISA.

#### Key Processes

There are several processes that take place during card and transaction processing, and here we will briefly describe the most important ones:

- **Card issuing process** - this process or set of processes consists of multiple actions that Card Issuer needs to perform to issue a payment card. They are the following: 
    - regulatory compliance - every card issuer in the world needs to comply with law, get license from a national bank or financial regulator, work according to their recommendations and rules,
    - Mastercard integration and licensing - it consists of a formal process, providing necessary cash collaterals, doing technical integration, getting security certifications etc.,
    - card creation process - after signing a contract by a user, Card Issuer needs to create a new card number (using BIN of the issuer - BIN = first 6 or 8 digits of card). When a card number (PAN = Primary Account Number) is created, the card can immediately work as a virtual card or can be sent for personalisation if it is a plastic card. Usually, after the user receives the card (virtual or plastic), the user starts the card activation process, sets the card PIN and can start using it.
- **Transaction process** - this process consists of several operations that result in transfer of money from Cardholder account to Merchant. They are the following: 
    - Authorization process is an action that ensures that Merchant can immediately get information if Cardholder has money on his/her card account and if this card is not stolen. The authorisation can happen online (a direct request to Issuer's system to check the balance and card status) or offline (in this case a chip on the card makes a decision if it can approve the transaction without asking Issuer's systems).
    - Clearing process is an action of payment scheme during which clearing files are delivered by acquirers to payment scheme and payment scheme calculates how much money each Acquirer should receive from each Issuer in the world.
    - Settlement process is a process of transferring money from issuers to acquirers and later to merchants so that finally Merchant receives the transaction amount, less Merchant Fees, on his/her bank account. Every Issuer and Acquirer has settlement bank accounts that are used for transferring money from or to. Payment Schemes operate those accounts using something like Direct Debit / Credit to transfer money between Settlement Accounts of various financial institutions.
    - 3DS - sometimes additional authentication mechanisms are used to ensure that the person initiating the card transaction is the actual cardholder. In the case of eCommerce transactions this process is called 3DS. During an Internet transaction, the user's browser opens the bank's website, where the user can authenticate the transaction using one-time passwords or other forms of authentication developed by Issuer. After the 3DS authentication is verified, Acquirer receives a special cryptogram that is included in the authorization message and validated later by Issuer during the authorization process.
    - Tokenization - tokenization is a process of exchanging a real card number into a token number (similar to a card number) to enable digital and contactless payments. Usually it is connected with transactions performed in cooperation with the so called X-Pays (i.e. Apple Pay, Google Pay, Fitbit Pay etc.). The process of tokenization requires an integration with Mastercard Digital Enablement System (MDES) or Visa Tokenization system (VTS) to enable tokenized payments.
    - Refund and reversal - special type of transactions that enable reversing payment transaction either immediately (reversal) or later (refund). Once this process has been initiated, Cardholder can receive money back after successful authorisation.
    - Chargeback - process of complaint management. It can be initiated by Issuer in case Cardholder informs Issuer that he/she did not do the transaction or did not authorize it, or goods were not delivered etc. The process is costly for Issuer and Acquirer but ensures security of the system for cardholders.
    - Card-to-card transactions and payouts - the so called "payment" or "credit transactions". In a standard purchase transaction money is transferred from Cardholder to Merchant. In a card-to-card transaction or payout transactions, the user gets money on his/her card or on the account linked to the card.

There are other important processes associated with payment systems and card transaction processing, but let's stop here and take a short break to understand these critical processes.

# Ranking of card issuing companies

How to choose a BIN sponsor and card issuing partner?

Choosing a BIN sponsor or card issuer is a difficult decision for many partners. Most of our partners do not come from the payment card business, so they learn by doing. In this chapter, we are going to describe the key decision factors of choosing a card issuer and make a simple ranking that we will be upgrading and updating in the coming months and years, as not all information is available to us immediately. On purpose, we will not compare other companies to us, it would not be fair to include Verestro - our goal is to educate in this article.

There are the following key decision factors in choosing a card issuing partner:

**1. REVENUE SHARE** - Cards issued for my users bring various revenue streams. Are they shared with me?

- - Does the card issuer share 100% of interchange with me?
    - What is the currency conversion rate that the card issuer shares with me?
    - How can I impact and earn on ATM withdrawal fees?
    - <span style="font-weight: 400;">How can I impact and earn on various consumer fees?</span>
    - Can the partner help me with getting the Mastercard or VISA marketing and financial support in the short and long run?

**2. COSTS** - Obvious point.

- - What are fixed and variable fees?
    - What is the level of fees in case of low volumes and high volumes?
    - Is there any opportunity to minimize costs as the business grows?
    - Read this article for more info on standard card issuing costs: [Card issuing - financial details](https://developer.verestro.com/books/knowledge-center/page/card-issuing-financial-details "Card issuing - financial details")

**3. FUNCTIONALITY &amp; SERVICE** - a very important point. Critical in the long run.

1. - Does the partner have mandatory functionalities?
    - Does the partner offer currencies that I need for my users?
    - What are other products that can increase usability or profit that the partner offers? 
        - Maybe a loyalty program?
        - Any insurance offers and additional benefits that could be sold to customers?
        - Perhaps invoice scanning and expense management?
        - Maybe white label solutions?
        - Card reload mechanisms?
        - Payouts to cards?
        - etc.
    - Does the partner offer quick access to a developer zone or a test environment?
    - Does the partner make their APIs public?

**3. SECURITY AND FINANCIAL STABILITY** - a critical point. Maybe it should be the first one.

- - Is the partner a small start-up, burning money or a payment institution generating profits? Can you imagine what would happen to your portfolio and users in case of bankruptcy or hostile takeover?
    - Who are the shareholders of the partner? Are these venture funds or strategic, long term investors?
    - Does the card issuer make their financial statements public?
    - Does the partner offer support in solving PCI DSS issues (Payment Card Industry Data Security Standards)?
    - Is the partner audited annually?
    - Does the partner work with banks and other large financial institutions or focus only on small, high-risk startups?

Here's an initial comparison of the best known card issuers in the European Union (grades: low - high):

<table border="1" id="bkmrk-name-country-revenue" style="border-collapse: collapse; width: 100%; height: 330px;"><tbody><tr style="height: 61px;"><td style="width: 16.687268%; height: 61px;">**Name**</td><td style="width: 16.687268%; height: 61px;">**Country**</td><td style="width: 16.687268%; height: 61px;">**Revenue Share**</td><td style="width: 16.687268%; height: 61px;">**Costs**</td><td style="width: 16.687268%; height: 61px;">**Functionality &amp; Service**</td><td style="width: 16.687268%; height: 61px;">**Security &amp; Financial Stability**</td></tr><tr style="height: 29.6px;"><td style="width: 16.6873%; height: 29.6px;">Treezor.com</td><td style="width: 16.6873%; height: 29.6px;">France</td><td style="width: 16.6873%; height: 29.6px;">Medium</td><td style="width: 16.6873%; height: 29.6px;">High</td><td style="width: 16.6873%; height: 29.6px;">Medium</td><td style="width: 16.6873%; height: 29.6px;">Medium</td></tr><tr style="height: 29.6px;"><td style="width: 16.6873%; height: 29.6px;">Swan.io</td><td style="width: 16.6873%; height: 29.6px;">Denmark</td><td style="width: 16.6873%; height: 29.6px;">Medium</td><td style="width: 16.6873%; height: 29.6px;">High</td><td style="width: 16.6873%; height: 29.6px;">Medium</td><td style="width: 16.6873%; height: 29.6px;">Medium</td></tr><tr style="height: 29.6px;"><td style="width: 16.6873%; height: 29.6px;">Dipocket.org</td><td style="width: 16.6873%; height: 29.6px;">Lithuania</td><td style="width: 16.6873%; height: 29.6px;">High</td><td style="width: 16.6873%; height: 29.6px;">Medium</td><td style="width: 16.6873%; height: 29.6px;">Low</td><td style="width: 16.6873%; height: 29.6px;">Low</td></tr><tr style="height: 45px;"><td style="width: 16.687268%; height: 45px;">Solarisgroup.com</td><td style="width: 16.687268%; height: 45px;">Germany</td><td style="width: 16.687268%; height: 45px;">Medium</td><td style="width: 16.687268%; height: 45px;">High</td><td style="width: 16.687268%; height: 45px;">Medium</td><td style="width: 16.687268%; height: 45px;">Medium</td></tr><tr style="height: 29.6px;"><td style="width: 16.6873%; height: 29.6px;">Wallester.com</td><td style="width: 16.6873%; height: 29.6px;">Estonia</td><td style="width: 16.6873%; height: 29.6px;">Medium</td><td style="width: 16.6873%; height: 29.6px;">Medium</td><td style="width: 16.6873%; height: 29.6px;">High</td><td style="width: 16.6873%; height: 29.6px;">Medium</td></tr><tr style="height: 29.6px;"><td style="width: 16.6873%; height: 29.6px;">Stripe</td><td style="width: 16.6873%; height: 29.6px;">USA</td><td style="width: 16.6873%; height: 29.6px;">Low</td><td style="width: 16.6873%; height: 29.6px;">High</td><td style="width: 16.6873%; height: 29.6px;">High</td><td style="width: 16.6873%; height: 29.6px;">High</td></tr><tr style="height: 29.6px;"><td style="width: 16.6873%; height: 29.6px;">Weavr.io</td><td style="width: 16.6873%; height: 29.6px;">Malta</td><td style="width: 16.6873%; height: 29.6px;">Medium</td><td style="width: 16.6873%; height: 29.6px;">Medium</td><td style="width: 16.6873%; height: 29.6px;">Low</td><td style="width: 16.6873%; height: 29.6px;">Medium</td></tr><tr style="height: 46.4px;"><td style="width: 16.6873%; height: 46.4px;">[Verestro](https://developer.verestro.com/verestro.com "Verestro")</td><td style="width: 16.6873%; height: 46.4px;">Poland</td><td style="width: 16.6873%; height: 46.4px;">Make your own assessment</td><td style="width: 16.6873%; height: 46.4px;">Make your own assessment</td><td style="width: 16.6873%; height: 46.4px;">Make your own assessment</td><td style="width: 16.6873%; height: 46.4px;">Make your own assessment</td></tr></tbody></table>

Source: Financial Stability results based on 2022 or 2023 results available in Internet; all other data from publicly available sources. Please make your own assessment.

# Regulatory and license impact on card issuing

Legal issues related to regulatory or payment scheme rules often arise in questions we receive from our partners and clients. In this article I would like to summarize key dependencies, limitations and rules that have a very important impact on payment accounts opening, card issuing and also acquiring or money transfer activities.

When you are launching a payment institution, you have several areas to cover. One of the most important of them is a legal and rules area. Usually this impact can be divided into three main groups of activities: legal requirements, anti-money laundering requirements (which is a specific type of legal requirements) and payment scheme rules. Let me deep dive into each of them.

##### Legal requirements

To operate payment activities, almost in any country you need to get a payment license. There are various types of payment licenses depending on the country, so here I would like to summarize the most important details. In many cases you can hear about EMI (Electronic Money Institution license), Bank (Banking license), Credit Institution, Acquiring Institution etc. These requirements are usually connected with operational activities that the company needs to fulfill to perform payment operations for other entities. They consist of:

- Regulatory requirements in the areas of security, Know Your Customer, AML, liquidity operations, organizational structure etc.
- Audits performed by regulator
- Risk of penalties for both the company and sometimes persons involved in payment companies
- Outsourcing activities compliance
- Local laws that forbid processing customer or transaction data outside of the country
- etc.

It is important to understand details of such requirements and to follow changes of law and rules on a regular basis.

From the business point of view those requirements force us to :

- Officially register contracts with various partners at the regulator
- Get an approval for particular actions outsourced to partners
- Perform regular monitoring of payment activities done with cards issued for users of our partners
- Follow the national and EU sanction lists
- Being ready to block any transaction, account or card at any time

For our partners - just make sure that you follow the rules we inform you about. They are critical for our activity, licenses, so in fact they are securing your business.

##### AML and KYC requirements

AML (Anti-Money Laundering) and KYC (Know Your Customers) are part of legal requirements but it is worth presenting them as a separate group because they usually have the biggest impact on operations. The main goal of these rules is to ensure that payment organizations are not used to launder money, support terrorist or illegal activities. They also allow governments to monitor a payment activity area which may be helpful in fighting crime activities.

Key areas of impact of those requirements can be summarized as follows:

- Payment institution is obliged to perform KYC requirements as defined by the regulator - usually consisting of collected proofs of user identity verification (documents, videos, selfie, talks, and other measures)
- In case of business customers and business accounts, not only Board Members but also Beneficiaries of the companies need to go through a KYC and sanction list screening. Beneficiary is defined usually as a person with above 25% shares
- At any moment a payment institution must be ready to present these documents to the regulator
- Persons and entities placed on sanction lists cannot use services of a payment company
- Active monitoring of payment transactions for all users is required
- Sometimes proofs of income can be required

It is interesting that AML and KYC requirements do not block us from issuing cards or opening payment accounts for partners located outside the European Union with our payment companies licensed in the European Union. We are allowed to perform payment activities for Brazil, US, China citizens, as well as the Polish, German or French ones.

Make sure that you collect user documents and provide them during the user registration to us to fulfill those requirements.

##### Payment Scheme requirements

Payment Schemes (Mastercard, VISA or others) have separate requirements that must be followed by their partners and licensees. These requirements are similar to the previous ones but not always the same. Key requirements that do have impact on business are:

- We are licensed for a particular country or region. In our case it is the European Union countries (in fact the European Economic Area, which is a slightly different area). It means that with our European licenses we can issue cards for people residing, having addresses or working in the European Union. In case we would like to issue cards for people or entities from outside the European Union we have to get special Mastercard approval which is not impossible but may be difficult to achieve.
- We must follow payment scheme requirements on sanction lists and scan users and beneficiaries against OFAC (US Office of Foreign Assets Control) and United Nations sanction lists.
- We must be ready to follow Mastercard technical and rules requirements that sometimes may have impact on technical setup and use cases of your users.
- In case of mandates we need to be ready to implement on time necessary system updates to reach compliance with the Mastercard network.

##### Problematic areas

Usually problems in a business discussion come in the following areas:

- Can we issue cards for non-EU citizens? Answer: generally yes, but sometimes there may be problems, the majority of your business must be in Europe, your user addresses or office should be in Europe etc.
- What documents do we need to transfer to you during registration? Answer: selfie, international passport is usually a minimum.

Following regulatory, AML and payment scheme rules is critical for payment companies. We do not have a choice. This is part of the game of card issuing and we must follow requirements. However, it is good that such rules exist. They make our customers' money safer and minimize much bigger risks of running or supporting illegal activities.

Thanks for reading.

# PCI DSS & other security requirements

Very often customers ask questions connected with security. In this article we would like to summarize key requirements connected with **Payment Card Industry Data Security Standards** (PCI DSS). There are other rules that we and our partners need to follow (like GDPR for example) but it will be the topic for another article.

The most important question that needs to be answered before going into details of PCI DSS requirements is - **Am I actually processing payment card data?**

Key PCI DSS requirements mentioned below apply only in case that the partner has access to card number (PAN - Primary Account Number), expiry data or other related card data. If the partner does not touch them, if the partner cannot see those numbers there is only one requirement - a simple Self Assessment Questionnaire (SAQ) needs to be fulfilled to confirm that the partner is compliant with PCI DSS requirements.

It is very important that you choose the correct way of integration with the card issuing platform. If you use our mobile SDKs or white label products, usually you will not have access to card data and will be able to approve your project just after fulfilling SAQ mentioned above. So please consider this way of integration to avoid additional costs and risks of PCI DSS compliance. However, if you connect via API, which is a usual way of integration, you will have to comply with security rules. Please read this section twice. **This is the most important** - choice of integration method will be decisive if you have to or not go through annual external audits and all hassle connected with PCI DSS.

Assuming you do process card data, depending on what your role is, different levels will be applied to you. You can be a **merchant** or a **service provider**. In simple terms, if you do the work for yourself then you are a **merchant** if you want to further provide the service (intermediary) you are most likely a **service provider**. In card issuing projects you will rather be a service provider because you offer cards to your users. Let me give some examples:

**Service Provider** - wallet, crypto wallet, money transfer organisation offering cards to own users etc.

**Merchant** - an insurance company that wants to use a card to send money to their users, a lending company that wants to send a card to users, a corporation or SME giving business payment cards to their employees etc.

**Who is according to PCI DSS "Merchant**"  
PCI DSS, or the Payment Card Industry Data Security Standard, defines a merchant as any entity that accepts payment cards (such as credit cards and debit cards) as a form of payment. The term "merchant" can encompass a wide range of businesses and organizations, including traditional retail stores, e-commerce websites, restaurants, hotels, and service providers that handle cardholder data.

Under PCI DSS, merchants are required to comply with a set of security standards and practices to protect the payment card data they handle. These security measures are designed to ensure the confidentiality and integrity of cardholder data, reduce the risk of data breaches, and protect both customers and the payment card industry as a whole.  
PCI DSS compliance requirements can vary depending on the merchant's size and the volume of card transactions they process. Merchants are typically categorized into different levels based on their transaction volume, with higher-volume merchants facing more stringent compliance requirements.

There are 4 levels of compliance and requirements depending on volumes of cards and transactions.

<table id="bkmrk-level-of-pci-dss-you" style="font-weight: 400;"><tbody><tr><td width="141">Level of PCI DSS

</td><td width="236">Your business does

</td><td width="226">What you should do

</td></tr><tr><td width="141">4

</td><td width="236">· Less than 20 000 eCommerce transactions per year

· Less than 1 million other transactions per year

</td><td width="226">· Complete an annual Self-Assessment Questionnaire (SAQ)

· Conduct quarterly network scans by an Approved Scanning Vendor (ASV)

</td></tr><tr><td width="141">3

</td><td width="236">· 20 000 – 1 million transactions per year

</td><td width="226">· Complete an annual Self-Assessment Questionnaire (SAQ)

· Conduct quarterly network scans by an Approved Scanning Vendor (ASV)

</td></tr><tr><td width="141">2

</td><td width="236">· 1-6 million transactions per year

</td><td width="226">· Complete an annual Self-Assessment Questionnaire (SAQ) or ROC conducted by a QSA

· Conduct quarterly network scans by an Approved Scanning Vendor (ASV)

</td></tr><tr><td width="141">1

</td><td width="236">· 6 million + transactions per year

</td><td width="226">· Complete an annual internal audit

· Conduct quarterly network scans by an Approved Scanning Vendor (ASV)

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

**Who is according to PCI DSS "Service Provider"**  
According to the Payment Card Industry Data Security Standard (PCI DSS), a Service Provider is defined as any business or entity that is not a payment card brand (such as Visa or Mastercard) and is involved in the processing, storage, or transmission of payment card data on behalf of another organization. Service Providers play a crucial role in the payment card ecosystem, as they offer various services to help businesses accept and process card payments more effectively and securely.

Service Providers can include a wide range of businesses, such as:

1. Payment processors
2. Payment gateways
3. Hosting providers
4. Managed security service providers
5. Data storage companies
6. Point-of-sale (POS) system providers
7. Customer relationship management (CRM) software providers
8. Software-as-a-Service (SaaS) providers

Service providers are categorized based on the services they provide and their interactions with payment card data. Here are some common classifications of service providers based on PCI DSS:

<table id="bkmrk-level-of-pci-dss-you-0" style="font-weight: 400;"><tbody><tr><td width="141">Level of PCI DSS

</td><td width="236">Your business does

</td><td width="226">What you should do

</td></tr><tr><td width="141">2

</td><td width="236">· &lt; 300 000 transactions per year

</td><td width="226">· Complete an annual Self-Assessment Questionnaire (SAQ)

· Conduct quarterly network scans by an Approved Scanning Vendor (ASV)

</td></tr><tr><td width="141">1 (Verestro has 1 level of PCI DSS)

</td><td width="236">· &gt; 300 000 transactions per year

</td><td width="226">· Complete annual internal audit conducted by a Qualified Security Assessor (QSA)

· Conduct quarterly PCI ASV scans

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

Verestro has the 1<sup>st</sup> level Service Provider of PCI DSS, which means that we have to go through quarterly PCI ASV scans and an annual external audit performed by certified PCI DSS assessors. In accordance with the principles of PCI DSS, Verestro is obliged to check if the partner is working in compliance with the PCI rules, so we will be checking what the level of transactions and cards in your case is.

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

So let's remind our two possible scenarios:

**Scenario 1** (The partner does not have any access to unencrypted PAN numbers) -&gt; THIS IS THE BEST AND RECOMMENDED SCENARIO. In this scenario you will most likely use our SDKs and admin panel and full encryption of card data. Verestro will guide which Self-Assessment Questionnaire ([SAQ A for merchants](https://listings.pcisecuritystandards.org/documents/SAQ_A_v3.pdf)) is appropriate and ask a few questions (from SAQ). The document will have to be signed by the partner.

**Scenario 2** (The partner can access unencrypted PAN numbers) -&gt; in this scenario:

- Verestro will provide a Self-Assessment Questionnaire (SAQ), and ask a few questions. The document will have to be signed by the partner.
- The partner will perform quarterly PCI ASV ([Approved Scanning Vendors](https://listings.pcisecuritystandards.org/assessors_and_solutions/approved_scanning_vendors)) scans   
    (cost around 1k EUR quarterly or less) - The partner can choose any provider from the PCI Security Standards Council (PCI SSC) or Verestro can recommend a supplier.
- Until the partner reaches 0,3 mln transactions/interactions annually with PAN numbers, the partner does not need to undergo an annual internal audit (in extreme situations, it is possible to require PCI internal audit from the partner).

If the partner plans to achieve 0,3 million transactions/interactions, there are two options:

- either the partner will move to a scenario that does not touch card numbers using some technology changes
- or the partner should perform an annual internal audit done by a PCI auditor (QSA)

If you would like to discuss your requirements in more detail and receive more information, please contact us.

Thanks for reading.

# Multicurrency cards - 3 implementation options

Multi-currency topic is an interesting and important concept of card issuing that usually requires some explanation. Because of the very big market of currency conversion and usually very high fees of universal banks connected with international transactions, it became popular to implement multi-currency cards. Actually the first **Revolut** use case, heavily promoted several years ago, was connected with this topic. So let's go into details.

There is actually one problem that we want to solve when thinking of implementing multi-currency cards - how to enable the best and most **effective card payments in an international environment**? There are various approaches to this problem:

##### Scenario 1 - multi-currency cards and accounts

In this example we offer users multiple payment accounts in various currencies.

1. The user gets a single payment card connected with all accounts.
2. In case the user pays with currency X, the authorisation system recognises transaction currency and debits account of currency X.
3. In case there is no money on this account, system debits another (default) currency.

This example is very often used, but it has a few disadvantages. The first is that the user must perform currency conversion before. It is an action before his/her travel and actually it is an unnecessary action from the logic's perspective. It should be more convenient for the user to have one account and cheap currency conversion during every transaction. But usually consumers like the solution because they can manage this currency problem in advance, see FX rate and can make decisions on how much money to convert.

Implementation of this scenario is not easy because card issuing companies either need to enable multi-currency functionality with Mastercard / VISA or to implement multiple settlement accounts with payment organizations and manage conversions accordingly based on transaction currency. There are additional fees that Mastercard and VISA charge for this service which can make this implementation costly.

##### Scenario 2 - currency conversion on a single account

Another way of solving the currency conversion topic is to think about how to enable the cheapest conversion during a transaction. In this example the user does not have to convert currency before his travel. He just uses his card while traveling. I personally like this approach the most because it is easier for me but in reality many customers prefer scenario 1.

In this scenario, to have dynamic rates, there is a need for online FX API integration and dynamic management of rates during authorisation. Usually card issuers use static conversion rates offered by Mastercard and VISA but this leads to some additional costs and margins. Ensuring dynamic currency conversion during authorization and proper conversion management may be difficult to achieve.

##### Scenario 3 - multiple cards for different currencies

The third way of managing the multi-currency topic today in the virtual card environment is issuing multiple cards to multiple accounts in various currencies. In today's world this is easily achievable as the cost of card issuing went heavily down. It works in the way that users have several cards, connected with various accounts and card visuals, visible in **Apple Pay** or **Google Pay** with the currency of a particular card. The user can choose a card which is the most convenient for him/her.

In this scenario we need to offer an inexpensive currency conversion mechanism as the user needs to manage balances on each account separately and perform conversion in advance.

This is actually the cheapest scenario of implementation.

While thinking about the multi-currency topic, please consider various scenarios and ways of solving problems. Sometimes the default plan (scenario 1) can be very costly from the transaction processing perspective because of additional fees of payment schemes.

Thanks for reading.

# How to prepare for a card issuing project?

Do you want to issue cards to your users? In this article we describe what is required on your side to implement virtual or plastic cards in your applications.

Let's imagine you are a fintech, crypto wallet, lendtech or any other company with a concrete target segment, some or thousands of users and you have a mobile application for your customers. You have decided to go live with card issuance in order to increase revenue and user loyalty. Below we describe the main decisions and steps you need to take to get ready for a card issuing program:

1. **Decide on a card issuing partner** - check out other articles we have on this topic in the Knowledge Center. Make sure that the partner has the necessary functionalities, legal requirements and flexibility that you can accept. Check your partner's financial standing. Contact us for more details.
2. **Analyse and describe your use cases** - describe user flows, develop some initial graphs of how key processes will work. Focus on user onboarding, Know Your Customer steps, card generation and activation, card management and transaction flows. Read the Developer Zone requirements during this step to make sure you are ready to integrate without difficult customisations.
3. **Check the legal environment** - try to analyse and understand the regulatory environment. Check if you can fulfill KYC requirements and how you can collect data from users. It is important that you submit a user selfie and document photos to the card issuer during the verification process. If you are working with us, please make sure that you have a European entity or branch in the EU to sign a contract with us for card issuing.
4. **Verify API integration** - go to the Developer Zone and analyse APIs or SDKs that you will have to connect to. If you want to avoid PCI DSS audits and associated costs, consider using SDKs. It is highly recommended if you have a large group of users.
5. **Make P&amp;L analysis** - consider the revenues from card issuing and the costs of this product. Make sure you understand unit economics. You can use articles in our Knowledge Center to start this work. Choose an affordable partner - do not think that if something is more expensive, it is better in quality. The card issuing business is a cost-based business where low level unit economics matter, especially cost per card and cost per transaction. Revenue share from interchange fees or currency conversions is even more important than costs.

If you have checked these points, you are ready to sign a contract. Contact us sooner, let's work together. We can advise you on many of these points to build the best possible program for you. We have extensive experience in more than 30 countries on 5 continents. Make use of this knowledge to get started.

Thanks for reading.

# Card Lifecycle Management

Once launching [**card issuing**](https://www.verestro.com/card-issuing) projects, our customers usually forget that it is a long-term activity that requires constant verification and improvements. It is very important that you understand and manage your card holders and use best practices in card lifecycle management. Let me summarize key activities from a timeline perspective.

**Stage 1 - choosing a card issuing partner**

Obvious step. Everybody focuses on financials and technical integration. Very few people check value-added services and other products. Almost no one is aware of PCI DSS &amp; other security requirements that will make your life easier on stage 4 and later ones. Another common mistake is that you do not check the financial stability of your card issuing partner as if it is not important for your business and users.

**Stage 2 - implementation**

Obviously important. No comments. Check Dev Zone and implement. Make sure your developers read specs carefully. Make sure you understand AML and KYC regulations so that you can comply with rules and the project can be built on strong fundamentals. A common mistake is not to consider Stage 4 - card lifecycle management processes are forgotten.

**Stage 3 - launch**

Everybody focuses on this moment, plans campaigns, distributes cards. And usually this is the last implementation step of this new product. It is a mistake.

**Stage 4 - card lifecycle management**

Once you are up and running, it is very important that you are able to monitor your portfolio, create reports, organise personalised campaigns and manage your portfolio in a very active way. There are several rules to follow in order to maximise your portfolio's earnings and performance. The most important ones are summarised below:

- **Portfolio Manager** - have people that will be responsible for the management of your portfolio. 1 person is enough at the beginning. Make sure these people understand goals and work to make your cardholders active.
- **Reporting** **system**- make sure you have a flexible reporting system that gives you information not only about the number of issued cards and transactions, but more importantly on the behaviour of various customer groups: 
    - have reports how many customers used the card after 1-2 days, be able to find the user IDs,
    - have reports with customers that used the card after 5 days, 15 days, 30 days,
    - have reports on inactive customer groups.
- **Actions** - be ready to act basing on the user behaviour 
    - once you see that your customer is not using the card after 1-2 days - send him/her a notification or an educational reminder,
    - once you see that the customer is not using the card for 15 days - maybe you should send a small digital gift to the customer and deliver it if he/she starts using card,
    - if you see an inactive customer after 30 days - ask them why they are not using the card; maybe you will get a correct feedback.
- **Reporting** - again and again check if your actions work correctly. What is their success rate? How are your customers changing their behaviour?
- **P&amp;L analysis** - make a detailed analysis from a financial perspective, incentivise users to do transactions that are bringing more revenue, think of increasing monthly fees for non-active users.
- **Quality reporting** - check the quality of your services, ask users for feedback regularly, collect information, analyse it, make actions to improve.
- **Value-added services** - think of launching new services that can improve performance of your portfolio. Maybe a voucher-based ending, card-to-card money transfers, loyalty programs etc. Ask us for best practices and tools that are easy to use.
- **Education** (super important) - never underestimate the importance of educational messages. You can teach customers how to use the card on the internet, tell them how to tokenise the card in Apple or Google Pay, show them how to pay at ATMs. Card issuers tend to forget how cheap and profitable it is to work on user education. Do not assume that everyone everywhere uses payment cards the way you use them today. People sometimes do not know how to use 3DS, they are afraid to use it, etc. Work on that.
- Learn, change, improve...

Card issuing is a long-term activity. Please do not think that you will launch it and everything will work properly. You should be constantly working to attract more users and teach existing users how to use the cards so that they add real value to your business. Good luck!

Thanks for reading.

# VISA or Mastercard?

<span style="font-weight: 400;">Sometimes our customers ask if it is better to issue **VISA** or **Mastercard cards**. In this article we would like to answer this question. </span>

#### <span style="font-weight: 400;">Main payment schemes</span>

<span style="font-weight: 400;">There are two main **payment schemes** in the card area that have almost monopolized global card business - VISA and Mastercard. Next to them there are several local schemes, sometimes going global that are also worth thinking of in more sophisticated global projects (like UnionPay China, JCB Japan, EC Karte Germany etc.) but in general in majority of projects you will do the business decision if you prefer to issue VISA or Mastercard cards. </span>

<span style="font-weight: 400;">In one sentence the answer is - usually it does not matter. But if you go into details, depending on the country or type of the program there may be some important differences worth considering.</span>

#### <span style="font-weight: 400;">Key decision points</span>

<span style="font-weight: 400;">Below we present some important decision points:</span>

1. **Financial and marketing support**<span style="font-weight: 400;"> - depending on the country and type of program VISA or Mastercard can decide to support your program financially or from some marketing assets. If so, it makes sense to consider this as an important factor in the decision making process. Check with your card issuing partner if there are such possibilities. </span>
2. **Interchange differences**<span style="font-weight: 400;"> - in some countries (outside of the European Union) there are slight but important differences in Interchange Fees which in the end means that you can earn more from every transaction. Check with your card issuer if such a situation exists on your market. If you are going to offer cards globally, it may also be possible that inter-regional (inter-continental) transactions will be more profitable in one payment scheme. So it is worth checking.</span>
3. **Cost factors**<span style="font-weight: 400;"> - usually fees connected with a card issuing program will be dictated by your card issuer or BIN Sponsor but in some cases a card issuer may have different fees depending on the cost of VISA or Mastercard transaction fees. </span>
4. **Special local or global card benefits programs**<span style="font-weight: 400;"> - both Mastercard and VISA are developing various loyalty, discount, value added services that can make your program more interesting for users. In Poland, for example, Mastercard is running a very attractive card benefit and loyalty program called "Priceless Specials". It is worth checking as it may be an important value added for your portfolio and users that may be much more important than any financial details.</span>
5. **Brand and acceptance**<span style="font-weight: 400;"> - in 95% of countries there is no visible difference in acceptance and brand between VISA and Mastercard. But in some cases it exists. For example if you are going to issue cards in Hungary - Mastercard is much more popular and customers are used to it. It is worth checking before making a decision.</span>
6. **Educational and consulting support** <span style="font-weight: 400;">- it can be valuable help. In various projects, countries or regions payment schemes can have services or people that can help you a lot in defining a good value proposition and important details of a card issuing program. This may be very valuable as very often employees of Mastercard and VISA are very professional, have a lot of knowledge and can help you in developing your portfolio. If you have such support, try to use it. </span>
7. **Shareholding connections**<span style="font-weight: 400;"> - in some cases (like Verestro) one of the payment organizations (in our case - Mastercard) will be a shareholder of your partner. It may be very valuable as you will have in-depth support of the payment scheme and card issuer. It may be useful in various situations, difficult cases connected with rules etc. Make use of such cases, if you can. </span>

#### <span style="font-weight: 400;">Conclusion</span>

<span style="font-weight: 400;">Those are the main differences. It is worth considering. In the majority of cases your partner in [**card issuing**](https://www.verestro.com/card-issuing) will have some preferences and sometimes there will be no choice. But it is certainly worth considering when deciding which **card issuer** and **payment scheme** to choose. </span>

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

# Prepaid, debit or credit cards - the main differences

<span style="font-weight: 400;">Before launching a **[card issuing](https://www.verestro.com/card-issuing) program**, our customers consider which **card product** to use. In this article we will summarize the key differences and considerations. </span>

<span style="font-weight: 400;">There are three main groups of **payment cards**: pre-paid, debit and credit cards. Below we summarize **the most important differences**.</span>

#### **Prepaid cards**

- <span style="font-weight: 400;">user has to reload a card account to use a card (like in debit cards by the way)</span>
- <span style="font-weight: 400;">you can issue anonymous, non-reloadable gift cards</span>
- <span style="font-weight: 400;">in some cases merchants block BINs of prepaid cards more often than for debit or credit cards</span>
- <span style="font-weight: 400;">you can have consumer and business prepaid cards</span>
- <span style="font-weight: 400;">in many countries, from legal perspective, there is no difference between prepaid and debit cards</span>

#### **Debit cards**

<span style="font-weight: 400;">This is the biggest group of cards in the world:</span>

- <span style="font-weight: 400;">user has to have a payment account or current account connected with a card</span>
- <span style="font-weight: 400;">user has to go through a **KYC** (Know Your Customer) process</span>
- <span style="font-weight: 400;">user has to reload a payment account to use card</span>
- <span style="font-weight: 400;">usually you cannot issue anonymous cards, because in general they are always reloadable</span>
- <span style="font-weight: 400;">sometimes, if you give a loan to your customer, a debit card can work like a credit card</span>
- <span style="font-weight: 400;">you can have consumer or business debit cards</span>
- <span style="font-weight: 400;">you can have Gold or Platinum debit cards</span>

#### **Credit cards**

- <span style="font-weight: 400;">user applies for credit and gets it in the form of a card</span>
- <span style="font-weight: 400;">usually connected with a revolving credit (something like credit line) and a grace period (no interest for 40-50 days)</span>
- <span style="font-weight: 400;">because of the credit, the user needs to go through KYC and credit scoring, so it is more difficult to issue than prepaid or debit cards</span>
- <span style="font-weight: 400;">you can have Gold, Platinum or World Elite credit cards</span>
- <span style="font-weight: 400;">you can have consumer or business credit cards</span>
- <span style="font-weight: 400;">usually an interchange fee is a bit higher than in case of debit cards</span>
- <span style="font-weight: 400;">sometimes approval rates for transactions are higher, some merchants (car rental) require credit cards from their customers</span>
- <span style="font-weight: 400;">because credit line is connected with this product, usually it is more profitable than a prepaid or debit portfolio</span>

<span style="font-weight: 400;">These are the main differences between the above mentioned products. In most cases, you should be thinking about **debit cards** because they give you the same benefits as **prepaid** ones, and you can convert them into **credit cards** by giving loans to your customers.</span>

# Tips to avoid problems when implementing card issuing

So you have a good business case for [**issuing cards**](https://www.verestro.com/card-issuing) for your customers and you found a perfect vendor who can provide formal and technical services in this area. Right after signing the contract you’re ready to implement. What now?

Now it’s time to make sure that the implementation will be as smooth as possible and you and your team won’t get stuck on some of the common problems that may happen in the project. Of course each vendor has his own approach, but let us explain how to avoid some of them based on [**Verestro**](https://www.verestro.com/)’s experience.

#### **Preparing everything for you takes a moment**

Depending on your particular setup we will need 4-8 weeks to prepare everything for you. From dedicated environments so that your customers and their cards will always be safe and secure, to ensuring that you will be able to use the cards in **Apple** and **Google wallets** and that your proper logo will appear in the 3DS confirmation screen when customers will be paying online. In the meantime you can focus on understanding all the **APIs** using Sandbox environment and make sure that your team is ready for the work in front of them – for example by analyzing the documentation carefully. Our services will be available for you one by one, so you don’t need to wait full 8 weeks to start implementation – usually first work on your side starts after 2-3 weeks from the kickoff meeting.

#### **Test and adapt**

Everyone is always eager to launch the product to final customers – that’s obvious. But it’s good to plan an extensive **testing phase** that will limit the potential volume of incidents that may happen once you’re live. A simple successful transaction done in ecommerce and brick and mortar POS is a very good prognosis, but should not be the end of testing phase. Take into account different scenarios and edge cases (like reversals and refunds – or even partial reversals). Take into account that there are many players in the world of payments and that a simple transaction is actually a connection of several backend systems (acquirer, issuer, payment network, additional vendors). The more you test, the less surprises will be there in the end.

#### **Knowledge and understanding is key**

**Issuing cards** and **processing transactions** is unfortunately not like riding a bike – it’s easy to forget. During the project with Verestro you’ll learn a lot about the world of payments and cards. Make sure this knowledge is gathered on your side and distributed between team members.

#### **Plan your MVP**

Rome wasn’t built in a day. Best banks did not simply appear in a moment. Issuing cards is a vast topic that requires a lot of **iterations** to make sure the basics are solid. It’s always good to start with essentials:

- Create user
- Create their balance
- Issue first card
- Digitize the card in Apple/Google Wallet
- Make first eCommerce transaction (with 3DS)
- Make first POS transaction
- Run ‘friends&amp;family’ phase within your company
- Then start adding features and more functionalities

If you’ll start focusing on ‘nice-to-have’ features too early in the process, you may loose sight of more basic processes what may cause delays in the whole project.

Having all of that in mind should make your **project more streamlined and effective**.

**Author:** [**Adrian Durkalec**](https://www.linkedin.com/in/adriandurkalec/)

# BIN Range or Separate BIN in Card Issuing

Our customers usually ask if it makes sense to issue cards on **a separate BIN** fully dedicated for a particular project or just use **BIN range** and share it with other partners. Let me focus on this topic in this short article.

##### BIN range

There are not so many disadvantages of dedicating a BIN range for your project. In many cases this decision will be much better. Key reasons:

- The project is cheaper as we do not need to implement a new BIN with Mastercard or VISA for you. It is a saving of around 20.000 EUR and monthly maintenance costs are cheaper as well (500-1000 EUR monthly).
- The project is faster for the same reason. It is a saving of around 3-4 months.
- The setup of the BIN range is easier from an operational perspective, so you and we do not consume more mandays for the project.

The only slight disadvantage in such an approach is that there may be a situation when this BIN gets compromised because of some user behavior. It is a very rare situation but it could happen. If you share the BIN with other customers, there is a risk that you will have to change the BIN and cards for customers because of the actions of other customers. We believe that this risk is very small - it has never happened in our history.

##### <span style="font-weight: 400;">Separate BIN</span>

Some people believe that if they have "own" or "dedicated" BIN, the project will be much better. In reality it is not so. It is only more expensive and slower (see above). There is more work and some additional risks connected with the new BIN setup. However, the **advantage of a separate BIN** is the same as mentioned above - you do not share the BIN with other partners, so in case of BIN compromise, you will know that it happens because of your actions.

I do not see any additional big differences, disadvantages or benefits of using a separate BIN.

Thanks for reading.

# IBANs, cards, balances - how to manage all of this?

Once you are starting a payment account and/or card issuing project you need to learn key definitions and relations between those various parameters.

**Balance ID** - this is a real "account" in the Verestro system. This number is connected with User ID and means that the user has an account and balance in our system. The user can keep money on this Balance ID. Of course, one user can have multiple balances but a single balance can belong to one user only

**IBAN** - this number is often mixed with Balance ID. IBAN is a number through which the user can receive money to his balance via wire transfer. IBAN is not a balance ID. Generally it does not make sense to have more than one IBAN for one balance. Normally you issue one IBAN for one balance. Usually a user can have more IBANs and balances if he wants to keep money on separate accounts, in various currencies etc.

**Card number** - easier to understand, just a card number issued to a particular balance ID (not to IBAN!). A user can have multiple cards connected to one balance ID.

Once preparing to project with Verestro, please learn the above definitions. More info here: [https://developer.verestro.com/shelves/card-issuing-ibans](https://developer.verestro.com/shelves/core-system)

# Issuing cards in various currencies

Verestro and its partners can issue cards in multiply currencies. Depending on the currency it is easier or more difficult but it is possible to issue cards in multiply currencies. Let me explain how to do it in this article.

Firstly, let's discuss that to issuing cards in particular currency (let's say CZK) means that user has an account in CZK and when he is paying 100 CZK his account gets debited with 100 CZK. To achieve this situation normally the card issuer needs to implement Settlement Service with Mastercard or VISA in CZK. This means that card issuer will have to send 100 CZK to Mastercard after the transaction so that Mastercard could transfer it to acquiring institution and later to merchant. Once this Settlement Service is enabled everything works well but the problem exists if issuer does not have Settlement Service in particular currency or sometimes such Settlement Service does not even exist and issuer must settle money in USD or EUR. Sometimes it is not worth spending money and time on new Settlement Service implementation as it can cost 25-40k euros.

In such situation we can implement Internal Settlement with partner in particular currency. It means that users will keep money in CZK, users will be charged 100 CZK if they pay 100 CZK but all money transfers between Verestro payment institutions and our partners will be happening in EUR. There will be some FX risks connected with this approach but they can be covered through a bit higher fees for users.

There is only one exception to this rule - it is necessary that we can hold money in this new currency in the banks where we hold accounts. It is necessary that accounts are stored in this particular currency to avoid difficult fluctuations.

Ask us for Internal Settlement if you are interested in card issuing in multiply currencies.

# What steps should be taken to start a card issuing project with Verestro outside the European Economic Area?

What steps should be taken to start a card issuing project with Verestro outside the European Economic Area?

At Verestro, we are focused on simplifying global fintech space by building a multifunctional, multi-BIN-sponsor, multi-processor, multi-acquiring, multi-bank platform. Our final target is to offer payment and financial services globally in any country in the world. Today we are offering card management, tokenization and payments on 5 continents. We store above 5 mln cards and tokens. In the group we process over 2 bln USD in payment transactions annually.

If you are interested in issuing cards outside of Europe, we can start a project immediately. Normally such a process works in the following way:

1\. You contact us and we talk about your plans.

2\. You can start integration with our Sandbox immediately using the tech documentation and APIs released in our Developer Zone [https://developer.verestro.com/](https://developer.verestro.com/).

3\. We sign a contract to cover the services.

4\. We search for BIN sponsors relevant for markets where you operate unless we have them already integrated and commercially ready.

5\. You can issue cards, enable payouts to cards or enable other payments once you finalize your technical integration and we are ready with the chosen BIN sponsor on the particular market.

6\. We take care of all operations, settlements. You take care of your go-to-market strategy, frontend, marketing, pricing, etc.

The big advantage of such an approach is that your platform is not dependent on a single BIN sponsor, you can work with multiple partners. You can also migrate the program easily to your own BINs once it grows and you become a direct Principal Member of Mastercard or VISA.

# What are the legal and payment scheme rules for launching a prepaid card program without KYC?

Recently we have been asked the question: “What are the options for a merchant or cafeteria to launch a **card program** based on **prepaid cards** (such as **lunch cards and gift cards**) that doesn't require a [**KYC process**](https://developer.verestro.com/books/knowledge-center/page/kyc-and-kyb-requirements-in-card-issuing)?”

There are a lot of misleading pieces of data regarding prepaid cards and gift cards. Those issues are mainly caused by differences between the legal environment and [**Mastercard or VISA**](https://developer.verestro.com/books/knowledge-center/page/visa-or-mastercard) rules. In this article we would like to go deeper into this topic and explain what is possible and what is not possible.

### Key regulatory and scheme requirements for prepaid card programs

##### Let’s start with key rules:

1\. **PSD2** (legal environment in Europe) and **AML** law say that payment institutions have to know their customers so full KYC must apply. Sometimes, depending on the country, some limited KYC rules are possible in case a payment institution issues a payment instrument with payment or transaction limits i.e. non-reloadable gift cards. We work in compliance with the Polish law which states that it is possible to issue anonymous cards only in case:

a. Value of monthly transactions is limited to 150 EUR

b. Value of such card is limited to 150 EUR

c. Only POS and eCommerce transactions are allowed

2\. **Mastercard and VISA rules** claim that in case of specific non-reloadable prepaid cards it is possible to issue anonymous cards. It requires special approval for the program.

3\. In some specific use cases ([**expense management**](https://developer.verestro.com/books/knowledge-center/page/what-employee-benefits-can-be-offered-via-the-verestro-business-control), lunch cards) it is possible to perform KYB of the company selling prepaid cards only. In such a case money on account must belong to the company and the company can issue such cards with limited KYC to its employees or users.

### Implementing reloadable and non-reloadable gift cards

Taking the above rules into account, we can imagine the following scenarios:

##### Scenario 1 – non-reloadable gift cards with limits up to 150 EUR with limited acceptance

It is possible to [**issue cards**](https://developer.verestro.com/shelves/core-system) for such programs after approval of the payment scheme.

##### Scenario 2 – reloadable gift cards for the company and its business expenses

It is possible to sell **gift cards connected to the business account** of the company (after KYB) assuming payments are connected with expenses or specific use cases of this company.

Please [**contact us**](https://www.verestro.com) if you want to issue similar programs with simplified KYC rules. We will advise on the best scenario and try to find ways to **quickly launch a prepaid card program** that meets your business needs.

# Card Program – in-house or via BaaS?

When launching a new **card program**, you must decide whether to do it yourself or hire a **BIN sponsor** or processor and outsource the program to an external entity. This article will address this question, arguing that **flexibility and speed-to-market are the most important decision factors**.

Let’s start with the definition of a card program and its various parts. Building a new card program requires making decisions in the following areas:

- **Regulatory license** – all areas of licensing, relations with the local regulator, anti-money laundering (AML) topics, etc.
- **Card scheme licenses** – relations with Mastercard and Visa, settlement processes with Mastercard and Visa, AML and security-related topics
- **Technology** – choosing a card management system and/or [**card issuing**](https://developer.verestro.com/shelves/core-system) processing system. Either in a form of software or a service provided by an external partner. If you are building software **in-house**, you need to think about software certification with Mastercard and Visa. If you are **buying software**, you need to think about long-term dependencies on your technical vendors.
- **Security** – ensuring compliance with Payment Card Industry Data Security Standards including regular external audits performed by external auditors
- **Card production and delivery** – choosing a provider of plastic cards and solving logistic related problems of cards being delivered to users
- **Settlements and collaterals** – exchanging money with [**Mastercard or Visa**](https://developer.verestro.com/books/knowledge-center/page/visa-or-mastercard) schemes, hiring banks that need to act as settlement agents, ensuring money is processed on time and all collaterals are paid
- **Operations** – ensuring smooth customer service operations including exchange of information with payment schemes, other banks, processing chargebacks &amp; user claims

Building a new card program is almost like building a bank. You need a lot of competences, technology pieces, licenses etc. Obviously, it takes both money and time. It is impossible to run your own card program without 10-20 people being engaged in daily operations, scheme and regulatory compliance, not even talking about technology.

On the other hand, you have the possibility to start a program with a BIN Sponsor or **Banking-as-a-Service (BaaS) partner** who will be responsible for all those actions. In this case, you will have quick time-to-market but you will have to pay variable fees for those actions.

The answer to which is better is not actually that difficult. In our opinion, the best scenario is to choose a partner with whom you can **quickly start** (BIN sponsor) and convert your program to a direct license once it grows. This means you can **start issuing cards in 3-4 months** without high entry costs. You can start building a portfolio and earning first revenue. Once your portfolio reaches around 500,000 cards, it will be worth investing in your own licenses.

Launching card issuing quickly and cost-effectively is critical. While an in-house solution would cost €2.4 million over two years, leveraging **Card as a Service (CaaS) / BaaS dramatically reduces both time and initial investment to just €0.2 million**, with deployment in 3-4 months. This is the clear choice for agility and financial prudence.

Once you start a project with us, we ensure the flexibility of your development in the long run. **We can act as a BIN sponsor** and once you are willing to have your own licenses we can either help you in getting a **Mastercard or Visa affiliate license** or transfer your cards to your own principal membership. Once the cards are issued under your own license, **we will act as an issuing processor**, and you will only cover technology-related costs. This approach is flexible because it gives you the option to issue cards not only on your own license, but also to use **our BIN sponsorship** for various projects. This approach offers the best entry costs, the quickest time to market, and highly flexible development scenarios.

If you need more information about our work process, please [**contact us**](https://www.verestro.com).

# Reverse solicitation – marketing & promotion of card issuing in multiple countries

<span style="font-weight: 400;">One of the limitations in **global card issuing** and **account opening** activities is connected with licenses and regulations for particular countries. Payment institutions have Mastercard or VISA licenses for particular countries as this is the way **Mastercard** and **VISA** systems work. In the European Union it is possible to get a license for the whole region but in other countries and regions you must get a license per country.</span>

<span style="font-weight: 400;">This makes the process of [**card issuing**](https://www.verestro.com/card-issuing) difficult in today’s digital economy because you usually do promotional and marketing activities in multiple countries. You have users from Europe, Asia, Africa, Americas and other continents. It would not be smart to limit your payment services only to users from particular countries.</span>

<span style="font-weight: 400;">This is a critical point and you should be discussing this point with your **card issuer** at the beginning of your cooperation with them. The answer to this problem is not easy or white-black. There are some important considerations that we present below:</span>

- <span style="font-weight: 400;">**Multi card issuing and multi card processing** – we believe that integrations with multiple card issuers that have licenses in multiple countries is critical for the success of global programs. Verestro works with payment organizations in multiple countries and solves this problem globally. In such cases, those problems disappear.</span>
- <span style="font-weight: 400;">**Regulatory compliance** – your payment institution must check if it is legally possible to open a payment account and provide payment cards to users from many countries. In case of our BIN sponsor we are allowed to open payment instruments and accounts to users from multiple countries assuming we fulfill AML requirements</span>
- <span style="font-weight: 400;">**Mastercard and VISA rules** – Mastercard and VISA give licenses for particular countries. It is impossible to get a license for all countries. There are some specific processes to get approval for program in other countries than you have payment scheme license but it is not clear in fact and there are some risks for every program</span>

<span style="font-weight: 400;">There are some **general rules** that you should follow as our partner so let us describe it:</span>

1. <span style="font-weight: 400;">You should be able to prove that the main focus of your marketing actions is in Europe if your card issuer is based in the EU. We may ask some additional questions. Mastercard can have a look at places where transactions are happening etc. Try to focus on Europe.</span>
2. <span style="font-weight: 400;">You should be able to provide proof that even if we are distributing cards to consumers living abroad there is an economic interest of those people in Europe. Maybe they travel to Europe, maybe they have employees in Europe etc.</span>
3. <span style="font-weight: 400;">If you are distributing cards to companies, make sure they have headquarters or offices located and registered in Europe.</span>
4. <span style="font-weight: 400;">The best would be that your users have resident addresses in the European Union that they are registering during card on-boarding. This solves all the problems.</span>
5. <span style="font-weight: 400;">We would like to be aware of your marketing activities in countries outside of Europe. It is important that we are aware, maybe we inform local Mastercard so that they are aware.</span>

<span style="font-weight: 400;">Our intention in the long run is to solve this problem by working with multiple partners globally and grow with licenses to other countries together with our customers. Don’t hesitate to **contact us** if you want to do global card issuing business.</span>

# Introduction

<span style="color: #1c1e3f;">To meet the needs and expectations of its customers, Verestro has developed a flexible infrastructure, allowing it to issue cards to fintech, merchants, companies, payment institutions or banks. We can provide digital issuing services for licensed payment and banking institutions or using our partner network, BIN sponsors to companies without payment licenses.</span>

<span style="color: #1c1e3f;">Verestro provides its customers with a range of services based on the applicable laws, directives and guidelines of card issuers such as Mastercard and Visa. Meeting these guidelines based on security standards including PCI DSS, 4 steps must be followed to deliver the card to the user:</span>

<div drawio-diagram="861"><img src="https://developer.verestro.com/uploads/images/drawio/2022-06/drawing-15-1655879802.png" alt=""/></div>

## <span style="color: #1c1e3f;">Create User</span>

<span style="color: #1c1e3f;">The first step to be fulfilled is to register the user in Verestro infrastructure in order to maintain his data in accordance with PCI DSS guidelines and secure the subsequent communication. Depending on the customer's needs to fulfill this step, there is a possibility of delivering a dedicated mobile application or, in case of already existing system, implementing SDK in own application or server-server connection in cases when the application is not necessary. Regardless of the path chosen, Verestro provides its customers with a dedicated Administration Panel to facilitate the management and monitoring of its customers.</span>

### <span style="color: #1c1e3f;">White Label Application</span>

<span style="color: #1c1e3f;">To meet the needs of the most demanding customers, Verestro has developed a mobile application for iOS and android. The application has a modular design which, in the shortest possible time, can be personalized to the required functionalities, branded according to the guidelines and published in production. More about this solution can be found in [White Label Application](https://developer.verestro.com/books/white-label-application).</span>

### <span style="color: #1c1e3f;">Mobile SDKs</span>

<span style="color: #1c1e3f;">Customers with their own infrastructure and well-established products who want to provide their users with new mobile functionalities in a fast and easy way, including secure payment instruments, may use dedicated SDKs. Verestro team actively supports their implementation and leads through necessary certification processes. More on SDK based implementation can be found in [User Lifecycle &amp; Card Management SDK](https://developer.verestro.com/books/user-lifecycle-card-management-api-sdk).</span>

### <span style="color: #1c1e3f;">Life Cycle API</span>

<span style="color: #1c1e3f;">Customers who, similarly to the above case, want to expand their offer with competitive functionalities, where mobile application is not applicable, can use dedicated backend solution in server-server connection. LC API created for this purpose in a safe and easy to implement way allows to meet this requirement. More about LC API can be found in [User Lifecycle &amp; Card Management API](https://developer.verestro.com/books/user-lifecycle-card-management-api-sdk).</span>

## <span style="color: #1c1e3f;">KYC</span>

<span style="color: #1c1e3f;">In order to meet the requirements of card issuers, legal regulations and international directives Verestro supports the KYC (Known Your User) process aimed at verification of the customer to whom the services and payment instruments will be offered. As in the case of user registration, here, too, there is the flexibility of adjusting this solution both from the user's side in the mobile application and the processing of the application itself.</span>

### <span style="color: #1c1e3f;">Manual KYC Process</span>

<span style="color: #1c1e3f;">The standard Verestro solution makes it possible to collect the necessary data and photos of documents and persons in the mobile application and send the thus prepared request via a secure channel to the Verestro infrastructure. This process is supported both in the implementation of the [White Label Application](https://developer.verestro.com/books/white-label-application/page/overview) and/or implementation of [SDK](https://developer.verestro.com/books/user-lifecycle-card-management-api-sdk) in the customer application. All KYC data are available through a dedicated [Administration Panel](https://developer.verestro.com/books/administration-panel/page/overview), through which the client at a specific access level verifies the data submitted by users.</span>

### <span style="color: #1c1e3f;">Automatic eKYC</span>

<span style="color: #1c1e3f;">As KYC process requires customisations and flexibility, Verestro platform enables integration of external entities supporting this process. With the implementation of which it is possible to achieve full automation and thus reduce user verification time to a minimum. With KYC verification automation, the user can have a working payment device within 3-5 minutes of installing the application on their phone.</span>

### <span style="color: #1c1e3f;">External KYC</span>

<span style="color: #1c1e3f;">For institutions that are expanding their offerings to include card issuance and already have a KYC process in place, LC API is a dedicated channel from setting KYC status with the user more about it in [User Lifecycle &amp; Card Management API](https://developer.verestro.com/books/user-lifecycle-card-management-api-sdk).</span>

## <span style="color: #1c1e3f;">Create Balance</span>

<span style="color: #1c1e3f;">The third step that brings the user closer to obtaining the card is the creation of a balance / account for the user, which is a dedicated place that maintains the current balance of available funds in a specific currency. Depending on the customer's needs, the user can have a virtually unlimited number of balances.</span>

### <span style="color: #1c1e3f;">Automatic</span>

<span style="color: #1c1e3f;">The most commonly used solution is to automatically create the balance as soon as the user gets a positive KYC verification status. With this approach, the user receives the balance in the currency defined within the project.</span>

### <span style="color: #1c1e3f;">Manual</span>

<span style="color: #1c1e3f;">A client can create a balance for a user on demand or enable the user to do so themselves. Regardless of the implementation method, the process of creating balances is available in a dedicated mobile application, the provided SDK, from the server-to-server connection and through a dedicated admin panel. More on balance management can be found in [Card Management System](https://developer.verestro.com/books/card-management-system "Card Management System").</span>

## <span style="color: #1c1e3f;">Create Card</span>

<span style="color: #1c1e3f;">The final step is to create a card linked to the previously created balance. Verestro provides its customers with the ability to generate virtual and physical cards for its users. With the implementation of the application in the minimum configuration specified by Mastercard, where the user has a modern e-banking system along with a stylistically attractive physical representation of a virtual card. Processes related to issuing and managing cards are available in [Card Management System](https://developer.verestro.com/books/card-management-system). </span>

# Intro slides

[![image-1652783341545.png](https://developer.verestro.com/uploads/images/gallery/2022-05/scaled-1680-/image-1652783341545.png)](https://developer.verestro.com/uploads/images/gallery/2022-05/image-1652783341545.png)

[![image-1652781451990.png](https://developer.verestro.com/uploads/images/gallery/2022-07/scaled-1680-/image-1652781451990.png)](https://developer.verestro.com/uploads/images/gallery/2022-07/image-1652781451990.png)

[![image-1652783128613.png](https://developer.verestro.com/uploads/images/gallery/2022-05/scaled-1680-/image-1652783128613.png)](https://developer.verestro.com/uploads/images/gallery/2022-05/image-1652783128613.png)

#### <span style="color: #34495e;">**Architecture**</span>

##### <span style="color: #34495e;">**API implementation**</span>

<span style="color: #34495e;">**[![Card_Issuing.png](https://developer.verestro.com/uploads/images/gallery/2025-08/scaled-1680-/card-issuing.png)](https://developer.verestro.com/uploads/images/gallery/2025-08/card-issuing.png)**</span>

##### <span style="color: #34495e;">**SDK implementation**</span>

[![Card_Issuing_SDK.png](https://developer.verestro.com/uploads/images/gallery/2025-08/scaled-1680-/card-issuing-sdk.png)](https://developer.verestro.com/uploads/images/gallery/2025-08/card-issuing-sdk.png)

# Overview

<span style="color: #1c1e3f;">Verestro Card Management System is called ANTACA. The platform provides solutions for creating and managing users' accounts (called "balances"), processing eKYC (user authentication process) and issuing payment cards generated for them. </span>

<span style="color: #1c1e3f;">CMS Antaca provides dedicated services for:</span>

- <span style="color: #1c1e3f;">end-user mobile applications,</span>
- <span style="color: #1c1e3f;">server-to-server connections helpful in integration with existing customer databases,</span>
- <span style="color: #1c1e3f;">administrative panel, necessary from the point of view of financial institutions in the process of issuing cards and managing their clients' funds.</span>

<span style="color: #1c1e3f;">CMS Antaca supports all necessary use cases for various digital and plastic card issuing. It supports integration with multiple issuing processors and can be connected with the one chosen by Verestro partner. </span>

### <span style="color: #1c1e3f;">Introduction to Card Issuing process</span>

<span style="color: #1c1e3f;">With the CMS Antaca you can offer your customers two types of cards:</span>

1. <span style="color: #1c1e3f;">Virtual card - Digital card without any physical components.</span>
2. <span style="color: #1c1e3f;">Physical card – The traditional plastic payment card.</span>

<span style="color: #1c1e3f;">To be able to issue a card for a user, 4 requirements must be met:</span>

1. <span style="color: #1c1e3f;">You have to integrated with Verestro platform using JWE token (described below) or [other integration methods (API, SDK, White Label)](https://developer.verestro.com/books/introduction/page/integration-with-verestro).</span>
2. <span style="color: #1c1e3f;">User must exist in Verestro database called DataCore. Make sure you register user via[ User Lifecycle API &amp; SDK](https://developer.verestro.com/books/user-lifecycle-card-management-api-sdk).</span>
3. <span style="color: #1c1e3f;">User must be strongly verified according to KYC. You can use Verestro KYC (see below) or own KYC process.</span>
4. <span style="color: #1c1e3f;">The user must have a User Balance under which the card will be generated.</span>

<span style="color: #1c1e3f;">After those 4 steps you can issue a card for the User.</span>

<span style="color: #1c1e3f;">Below we describe this process step by step:</span>

- <span style="color: #1c1e3f;">Step 1. Configuration &amp; JWE Security,</span>
- <span style="color: #1c1e3f;">Step 2. User Lifecycle API &amp; SDK,</span>
- <span style="color: #1c1e3f;">Step 3. User registration &amp; KYC,</span>
- <span style="color: #1c1e3f;">Step 4. Create User Balance (account),</span>
- <span style="color: #1c1e3f;">Step 5. Card issuing.</span>


### <span style="color: #1c1e3f;">Terminology</span>

<table border="1" id="bkmrk-name-description-cus" style="border-collapse: collapse; width: 100%; height: 1404.4px;"><tbody><tr style="height: 49.2px;"><td bgcolor="#1C1E3F" style="width: 21.1605%;" width="353"><span style="color: #ecf0f1;">**Name**</span>  
</td><td bgcolor="#1C1E3F" style="width: 78.9383%;" width="353"><span style="color: #ecf0f1;">**Description**</span>

</td></tr><tr style="height: 80px;"><td style="width: 21.1605%; height: 80px;"><span style="color: #1c1e3f;">Customer</span></td><td style="width: 78.9383%; height: 80px;"><span style="color: #1c1e3f;">Institution which is using Verestro products. This institution decides which SDK should be used and how transaction should be processed. Basicly Customer can be called Verestro client.</span></td></tr><tr style="height: 147.2px;"><td style="width: 21.1605%; height: 147.2px;"><span style="color: #1c1e3f;">User</span></td><td style="width: 78.9383%; height: 147.2px;"><span style="color: #1c1e3f;">User which is using Payment Hub Application. It is root of entity tree. User is identified in Wallet Server by some unique identifier which is provided after registration. User can have access to his data and operations based on session. User’s session is created after device pairing is performed. When session expires then user authentication have to be performed. Session is valid 10 minutes, however it is configurable parameter.</span></td></tr><tr style="height: 80px;"><td style="width: 21.1605%; height: 80px;"><span style="color: #1c1e3f;">Card</span></td><td style="width: 78.9383%; height: 80px;"><span style="color: #1c1e3f;">Card belongs to the user. User can have many cards. Card is identified via internal id given after storing card on Wallet Server. Whole PAN is stored on Wallet Server which has PCI DSS certificate.</span></td></tr><tr style="height: 113.6px;"><td style="width: 21.1605%; height: 113.6px;"><span style="color: #1c1e3f;">Device</span></td><td style="width: 78.9383%; height: 113.6px;"><span style="color: #1c1e3f;">Device belongs to user. When user starts using application after installation then device pairing is performed. After pairing device with some unique id, unique device installation id is generated and this installation is assigned to user. It is possible to have one active installation on specific device for specific user.</span></td></tr><tr style="height: 113.6px;"><td style="width: 21.1605%; height: 113.6px;"><span style="color: #1c1e3f;">Session Token</span></td><td style="width: 78.9383%; height: 113.6px;"><span style="color: #1c1e3f;">Token which defines User. It is an authorization way of the User. This entity is created after paring device and this is needed to perform any actions in the application. When session is expired then user authentication needs to be performed. Session is valid 10 minute s, however it is configurable parameter.</span></td></tr><tr style="height: 46.4px;"><td style="width: 21.1605%; height: 46.4px;"><span style="color: #1c1e3f;">Sender</span></td><td style="width: 78.9383%; height: 46.4px;"><span style="color: #1c1e3f;">Verestro Wallet user which triggers transaction to the Receiver (check User description).</span></td></tr><tr style="height: 197.6px;"><td style="width: 21.1605%; height: 197.6px;"><span style="color: #1c1e3f;">Receiver</span></td><td style="width: 78.9383%; height: 197.6px;"><span style="color: #1c1e3f;">Receiver can be identified in Wallet Server (Internal) or may be an entity that does not exist in Wallet Server (External).</span>

<span style="color: #1c1e3f;">◦ Internal – this type of Receiver has his own unique identifier just like sender. It can also act as a Sender in the transaction process,</span>

<span style="color: #1c1e3f;">◦ External – this type of Receiver does not exist in Wallet Server. Transfers that are made to this type of Receiver require the entering of his card data by Sender.</span>

</td></tr><tr style="height: 96.8px;"><td style="width: 21.1605%; height: 96.8px;"><span style="color: #1c1e3f;">Mid</span></td><td style="width: 78.9383%; height: 96.8px;"><span style="color: #1c1e3f;">Merchant identifier. This entity is representing Merchant in Acquirer’s system. Customer have to provide the mid information to enable mid configuration in the Verestro system. Required to process 3DS authentication via Verestro System.</span></td></tr><tr style="height: 96.8px;"><td style="width: 21.1605%; height: 96.8px;"><span style="color: #1c1e3f;">Acquirer</span></td><td style="width: 78.9383%; height: 96.8px;"><span style="color: #1c1e3f;">External institution responsible for processing transaction and 3ds requests ordered by the Verestro Payment Hub App. Acquirer connects with banks / card issuers and returns information whether the ordered action on a given card is possible.</span></td></tr><tr style="height: 63.2px;"><td style="width: 21.1605%; height: 63.2px;"><span style="color: #1c1e3f;">PAN</span></td><td style="width: 78.9383%; height: 63.2px;"><span style="color: #1c1e3f;">(Primary Account Number) It is 14-19 (usually 16) digits number which is a unique identifier of the payment card issued to the customer's account.</span></td></tr><tr style="height: 80px;"><td style="width: 21.1605%; height: 80px;"><span style="color: #1c1e3f;">Wallet Server</span></td><td style="width: 78.9383%; height: 80px;"><span style="color: #1c1e3f;">Provides the backend services to support Mobile Payment Application via Verestro Wallet SDK and is responsible for managing users, devices, cards , device tokens, storing transactions history and communication with Acquirers.</span>  
</td></tr><tr style="height: 96.8px;"><td style="width: 21.1605%; height: 96.8px;"><span style="color: #1c1e3f;">PCI DSS</span></td><td style="width: 78.9383%; height: 96.8px;"><span style="color: #1c1e3f;">PCI DSS (Payment Card Industry Data Security Standard) is a security standard used in environments where the data of payment cardholders is processed. The standard covers meticulous data processing control and protection of users against violations.</span></td></tr><tr style="height: 113.6px;"><td style="width: 21.1605%; height: 113.6px;"><span style="color: #1c1e3f;">IBAN</span></td><td style="width: 78.9383%; height: 113.6px;"><span style="color: #1c1e3f;">IBAN (International Bank Account Number) is an international standard for bank account numbering that allows you to transfer funds to foreign accounts and to receive transfers from foreign entities to domestic bank accounts. One of the assumptions of the IBAN standard is to simplify the system of cross-border transfers.</span></td></tr><tr style="height: 29.6px;"><td style="width: 21.1605%; height: 29.6px;"><span style="color: #1c1e3f;">QR</span></td><td style="width: 78.9383%; height: 29.6px;"><span style="color: #1c1e3f;">A QR code (quick response code) is a two-dimensional barcode. [Check here for more details.](https://en.wikipedia.org/wiki/QR_code)</span>

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

## <span style="color: #1c1e3f;">Configuration &amp; JWE Security</span>

<span style="color: #1c1e3f;">To start the implementation, it is necessary to configure the payment processor. If we are using issuing processors already integrated with Verestro the process is simple and after quick information gathering (name of partner, BIN range, currency, remoteURL) a new card program can be setup for our partner. </span>

<span style="color: #1c1e3f;">You can communicate with the CMS Antaca API in three different dedicated channels:</span>

1. <span style="color: #1c1e3f;">Mobile Application - Methods strarting with /Customers : designed for the mobile applications that use a session token sent in the header of each request. More about the possibilities of generating these tokens in the section [White Label Application Overview](https://developer.verestro.com/books/white-label-application/page/overview).</span>
2. <span style="color: #1c1e3f;">Server-to-server - methods starting with /Secure : this communication channel is protected by the x509 certificate. To start an implementation based on this communication channel, it is necessary to generate your own CSR and send it to Verestro. Verestro will sign it and return a valid certification in a response.</span>
3. <span style="color: #1c1e3f;">Administrator and Customer Service (rarely used by partners) - methods starting with /admin : designed for the administration panel provided by Verestro.</span>

### <span style="color: #1c1e3f;">Additional data encryption &amp; integration</span>

<span style="color: #1c1e3f;">Some requests and responses contain sensitive data, to additionally secure the connection we require JSON Web Encryption (JWE).</span>

<div bis_size="{"x":150,"y":2884,"w":840,"h":346,"abs_x":500,"abs_y":3097}" class="table-wrap" id="bkmrk-normal-encrypted-som"><table border="1" class="wrapped confluenceTable tablesorter tablesorter-default stickyTableHeaders" role="grid" style="border-collapse: collapse; width: 100%; border-color: #000000;"><colgroup><col></col><col></col><col></col></colgroup><thead class="tableFloatingHeaderOriginal"><tr class="tablesorter-headerRow" role="row"><th aria-disabled="false" aria-label=": No sort applied, activate to apply an ascending sort" aria-sort="none" class="confluenceTh tablesorter-header sortableHeader tablesorter-headerUnSorted" data-column="0" role="columnheader" scope="col" tabindex="0">  
</th><th aria-disabled="false" aria-label="normal: No sort applied, activate to apply an ascending sort" aria-sort="none" class="confluenceTh tablesorter-header sortableHeader tablesorter-headerUnSorted" data-column="1" role="columnheader" scope="col" tabindex="0"><div bis_size="{"x":438,"y":2890,"w":263,"h":16,"abs_x":788,"abs_y":3103}" class="tablesorter-header-inner"><span style="color: #1c1e3f;">normal</span></div></th><th aria-disabled="false" aria-label="encrypted: No sort applied, activate to apply an ascending sort" aria-sort="none" class="confluenceTh tablesorter-header sortableHeader tablesorter-headerUnSorted" data-column="2" role="columnheader" scope="col" tabindex="0"><div bis_size="{"x":717,"y":2890,"w":263,"h":16,"abs_x":1067,"abs_y":3103}" class="tablesorter-header-inner"><span style="color: #1c1e3f;">encrypted</span></div></th></tr></thead><tbody aria-live="polite" aria-relevant="all"><tr role="row"><td class="confluenceTd"><span style="color: #1c1e3f;">Example of request with sensitive data.</span></td><td class="confluenceTd"><div bis_size="{"x":438,"y":2920,"w":263,"h":101,"abs_x":788,"abs_y":3133}" class="content-wrapper">  
<div bis_size="{"x":438,"y":2941,"w":263,"h":80,"abs_x":788,"abs_y":3154}" class="code panel pdl conf-macro output-block" data-hasbody="true" data-macro-name="code"><div bis_size="{"x":438,"y":2941,"w":263,"h":80,"abs_x":788,"abs_y":3154}" class="codeContent panelContent pdl"><div bis_size="{"x":438,"y":2941,"w":263,"h":80,"abs_x":788,"abs_y":3154}"><div bis_size="{"x":438,"y":2941,"w":263,"h":80,"abs_x":788,"abs_y":3154}" class="syntaxhighlighter sh-confluence nogutter  js" id="bkmrk-%7B-%C2%A0%C2%A0%22cardno%22%3A%C2%A0%2255554"><table border="0" cellpadding="0" cellspacing="0"><tbody><tr><td class="code"><div bis_size="{"x":447,"y":2948,"w":245,"h":67,"abs_x":797,"abs_y":3161}" class="container" title="Hint: double-click to select code"><div bis_size="{"x":463,"y":2948,"w":213,"h":16,"abs_x":813,"abs_y":3161}" class="line number1 index0 alt2"><span style="color: #1c1e3f;">`{`</span></div><div bis_size="{"x":463,"y":2964,"w":213,"h":33,"abs_x":813,"abs_y":3177}" class="line number2 index1 alt1"><span style="color: #1c1e3f;">`  ``"cardNo"``: ``"5555444455554444"`</span></div><div bis_size="{"x":463,"y":2998,"w":213,"h":16,"abs_x":813,"abs_y":3211}" class="line number3 index2 alt2"><span style="color: #1c1e3f;">`}`</span></div></div></td></tr></tbody></table>

</div></div></div></div></div></td><td class="confluenceTd"><div bis_size="{"x":718,"y":2924,"w":263,"h":80,"abs_x":1068,"abs_y":3137}" class="content-wrapper"><div bis_size="{"x":718,"y":2924,"w":263,"h":80,"abs_x":1068,"abs_y":3137}" class="code panel pdl conf-macro output-block" data-hasbody="true" data-macro-name="code"><div bis_size="{"x":718,"y":2924,"w":263,"h":80,"abs_x":1068,"abs_y":3137}" class="codeContent panelContent pdl"><div bis_size="{"x":718,"y":2924,"w":263,"h":80,"abs_x":1068,"abs_y":3137}"><div bis_size="{"x":718,"y":2924,"w":263,"h":80,"abs_x":1068,"abs_y":3137}" class="syntaxhighlighter sh-confluence nogutter  js" id="bkmrk-%7B-%C2%A0%C2%A0%22payload%22%3A%C2%A0%22very"><table border="0" cellpadding="0" cellspacing="0"><tbody><tr><td class="code"><div bis_size="{"x":726,"y":2931,"w":245,"h":67,"abs_x":1076,"abs_y":3144}" class="container" title="Hint: double-click to select code"><div bis_size="{"x":742,"y":2931,"w":213,"h":16,"abs_x":1092,"abs_y":3144}" class="line number1 index0 alt2"><span style="color: #1c1e3f;">`{`</span></div><div bis_size="{"x":742,"y":2948,"w":213,"h":33,"abs_x":1092,"abs_y":3161}" class="line number2 index1 alt1"><span style="color: #1c1e3f;">`  ``"payload"``: ``"very long JWE token"`</span></div><div bis_size="{"x":742,"y":2981,"w":213,"h":16,"abs_x":1092,"abs_y":3194}" class="line number3 index2 alt2"><span style="color: #1c1e3f;">`}`</span></div></div></td></tr></tbody></table>

</div></div></div></div></div></td></tr><tr role="row"><td class="confluenceTd"><span style="color: #1c1e3f;">Example ofresponse with sensitive data.</span></td><td class="confluenceTd"><div bis_size="{"x":438,"y":3058,"w":263,"h":147,"abs_x":788,"abs_y":3271}" class="content-wrapper"><div bis_size="{"x":438,"y":3058,"w":263,"h":147,"abs_x":788,"abs_y":3271}" class="code panel pdl conf-macro output-block" data-hasbody="true" data-macro-name="code"><div bis_size="{"x":438,"y":3058,"w":263,"h":147,"abs_x":788,"abs_y":3271}" class="codeContent panelContent pdl"><div bis_size="{"x":438,"y":3058,"w":263,"h":147,"abs_x":788,"abs_y":3271}"><div bis_size="{"x":438,"y":3058,"w":263,"h":147,"abs_x":788,"abs_y":3271}" class="syntaxhighlighter sh-confluence nogutter  js" id="bkmrk-%7B-%C2%A0%C2%A0%22id%22%3A-1125%2C-%C2%A0%C2%A0%22t"><table border="0" cellpadding="0" cellspacing="0"><tbody><tr><td class="code"><div bis_size="{"x":447,"y":3064,"w":245,"h":134,"abs_x":797,"abs_y":3277}" class="container" title="Hint: double-click to select code"><div bis_size="{"x":463,"y":3064,"w":213,"h":16,"abs_x":813,"abs_y":3277}" class="line number1 index0 alt2"><span style="color: #1c1e3f;">`{`</span></div><div bis_size="{"x":463,"y":3081,"w":213,"h":16,"abs_x":813,"abs_y":3294}" class="line number2 index1 alt1"><span style="color: #1c1e3f;">`  ``"id"``: 1125,`</span></div><div bis_size="{"x":463,"y":3098,"w":213,"h":16,"abs_x":813,"abs_y":3311}" class="line number3 index2 alt2"><span style="color: #1c1e3f;">`  ``"type"``: ``"1125"``,`</span></div><div bis_size="{"x":463,"y":3115,"w":213,"h":16,"abs_x":813,"abs_y":3328}" class="line number4 index3 alt1"><span style="color: #1c1e3f;">`  ``"cvv"``: ``"123"``,`</span></div><div bis_size="{"x":463,"y":3131,"w":213,"h":33,"abs_x":813,"abs_y":3344}" class="line number5 index4 alt2"><span style="color: #1c1e3f;">`  ``"cardNo"``: ``"5555444455554444"``,`</span></div><div bis_size="{"x":463,"y":3165,"w":213,"h":16,"abs_x":813,"abs_y":3378}" class="line number6 index5 alt1"><span style="color: #1c1e3f;">`  ``"exp"``: ``"2026-01-31"`</span></div><div bis_size="{"x":463,"y":3182,"w":213,"h":16,"abs_x":813,"abs_y":3395}" class="line number7 index6 alt2"><span style="color: #1c1e3f;">`}`</span></div></div></td></tr></tbody></table>

</div></div></div></div></div></td><td class="confluenceTd"><div bis_size="{"x":718,"y":3058,"w":263,"h":80,"abs_x":1068,"abs_y":3271}" class="content-wrapper"><div bis_size="{"x":718,"y":3058,"w":263,"h":80,"abs_x":1068,"abs_y":3271}" class="code panel pdl conf-macro output-block" data-hasbody="true" data-macro-name="code"><div bis_size="{"x":718,"y":3058,"w":263,"h":80,"abs_x":1068,"abs_y":3271}" class="codeContent panelContent pdl"><div bis_size="{"x":718,"y":3058,"w":263,"h":80,"abs_x":1068,"abs_y":3271}"><div bis_size="{"x":718,"y":3058,"w":263,"h":80,"abs_x":1068,"abs_y":3271}" class="syntaxhighlighter sh-confluence nogutter  js" id="bkmrk-%7B-%C2%A0%C2%A0%22payload%22%3A%C2%A0%22very-0"><table border="0" cellpadding="0" cellspacing="0"><tbody><tr><td class="code"><div bis_size="{"x":726,"y":3064,"w":245,"h":67,"abs_x":1076,"abs_y":3277}" class="container" title="Hint: double-click to select code"><div bis_size="{"x":742,"y":3064,"w":213,"h":16,"abs_x":1092,"abs_y":3277}" class="line number1 index0 alt2"><span style="color: #1c1e3f;">`{`</span></div><div bis_size="{"x":742,"y":3081,"w":213,"h":33,"abs_x":1092,"abs_y":3294}" class="line number2 index1 alt1"><span style="color: #1c1e3f;">`  ``"payload"``: ``"very long JWE token"`</span></div><div bis_size="{"x":742,"y":3115,"w":213,"h":16,"abs_x":1092,"abs_y":3328}" class="line number3 index2 alt2"><span style="color: #1c1e3f;">`}`</span></div></div></td></tr></tbody></table>

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

</div>### <span style="color: #1c1e3f;">JWE configuration</span>

<span style="color: #1c1e3f;">To setup connection we need from you enc and alg from JWE parameters. Acceptable values are:</span>

- <span style="color: #1c1e3f;">Algorithm used by Verestro to encipher content of message (enc) - A256GCM,</span>
- <span style="color: #1c1e3f;">Algorithm used by Verestro to encipher encryption key (alg) - RSA-OAEP-256,</span>
- <span style="color: #1c1e3f;">Algorithm needed from you to encipher content of message (enc) - A256GCM,</span>
- <span style="color: #1c1e3f;">Allowed algorithms for key encryption (alg) - RSA-OAEP-256 or RSA-OAEP.</span>

<span style="color: #1c1e3f;">Recommended JWE libraries for various programming languages:</span>

- <span style="color: #1c1e3f;">[PHP](https://web-token.spomky-labs.com/),</span>
- <span style="color: #1c1e3f;">[JAVA](https://connect2id.com/products/nimbus-jose-jwt).</span>

<span style="color: #1c1e3f;">Request</span>

<span style="color: #1c1e3f;">To process encrypted message you need to perform a few additional steps on top of standard message processing:</span>

- <span style="color: #1c1e3f;">Add headlines:</span>
    - <span style="color: #1c1e3f;">**Public-Key** through which you can transfer to us your public key encoded b64 (more details below),</span>
    - <span style="color: #1c1e3f;">**Encrypted-Request** headline confirming message encryption in both directions or **Encrypt-Response** when you need to get the encrypted response only; value true or false,</span>
- <span style="color: #1c1e3f;">Download Verestro Public Key - see in technical API specs on which endpoint,</span>
- <span style="color: #1c1e3f;">Use Verestro Public Key to create JWE and transfer data table in payload,</span>
- <span style="color: #1c1e3f;">Use token (string) received in Verestro response in point 3 below key encryption key in payload.</span>

<div bis_size="{"x":150,"y":3826,"w":840,"h":22,"abs_x":500,"abs_y":4039}" id="bkmrk-dodatkowe-info"><span style="color: #1c1e3f;">Additional information:</span></div><div bis_size="{"x":150,"y":3853,"w":840,"h":44,"abs_x":500,"abs_y":4066}" id="bkmrk-dla-metod-typu-get-p"><div bis_size="{"x":150,"y":3853,"w":840,"h":44,"abs_x":500,"abs_y":4066}">- <span style="color: #1c1e3f;">for GET methods avoid point 2, 3, 4 above (headlines mentioned in point 1 are still necessary),</span>
- <span style="color: #1c1e3f;">for empty POST methods (without "body") use same rules as for GET message.<s>  
    </s></span>

</div></div><span style="color: #1c1e3f;">Response</span>

<span style="color: #1c1e3f;">After sending to CMS Antaca encrypted request you will receive from us encrypted message:</span>

1. <span style="color: #1c1e3f;">Decipher token, which can be found in response below payload key (use your private key to perform this action),</span>
2. <span style="color: #1c1e3f;">After decipher action you can see response in unencrypted form.</span>

<div bis_size="{"x":150,"y":4064,"w":840,"h":0,"abs_x":500,"abs_y":4277}" id="bkmrk-odszyfruj-token%2C-kt%C3%B3"></div><span style="color: #1c1e3f;">Additional information:</span>

<div bis_size="{"x":150,"y":4106,"w":840,"h":156,"abs_x":500,"abs_y":4319}" id="bkmrk-odpowiedzi-szyfrujem">- <span style="color: #1c1e3f;">Response are encrypted only in case of success - HTTP 20X,</span>
- <span style="color: #1c1e3f;">The only exception from the above mentioned rule is code 204 No content,</span>
- <span style="color: #1c1e3f;">In case of errors (i.e. validation errors) you will receive unencrypted response,</span>  
    
    - <span style="color: #1c1e3f;">ENCRYPTION\_REQUIRED,</span>
    - <span style="color: #1c1e3f;">INVALID\_PUBLIC\_KEY,</span>
    - <span style="color: #1c1e3f;">INVALID\_PAYLOAD,</span>
    - <span style="color: #1c1e3f;">CANT\_DECRYPT\_PAYLOAD.</span>

</div><span style="color: #1c1e3f;">Example request:</span>

<div bis_size="{"x":150,"y":4323,"w":840,"h":562,"abs_x":500,"abs_y":4536}" id="bkmrk-co-mia%C5%82o-zosta%C4%87-wys%C5%82"><div bis_size="{"x":150,"y":4323,"w":840,"h":562,"abs_x":500,"abs_y":4536}"><div bis_size="{"x":150,"y":4323,"w":840,"h":562,"abs_x":500,"abs_y":4536}" class="table-wrap"><table border="1" class="fixed-table wrapped confluenceTable tablesorter tablesorter-default stickyTableHeaders" role="grid" style="border-collapse: collapse; width: 100%; border-color: #000000;"><colgroup><col></col><col></col><col></col></colgroup><thead class="tableFloatingHeaderOriginal"><tr class="tablesorter-headerRow" role="row"><th aria-disabled="false" aria-label="Co miało zostać wysłane: No sort applied, activate to apply an ascending sort" aria-sort="none" class="confluenceTh tablesorter-header sortableHeader tablesorter-headerUnSorted" data-column="0" role="columnheader" scope="col" tabindex="0"><div bis_size="{"x":158,"y":4329,"w":263,"h":16,"abs_x":508,"abs_y":4542}" class="tablesorter-header-inner"><span style="color: #1c1e3f;">Correct request</span></div></th><th aria-disabled="false" aria-label="Co zostało wysłane: No sort applied, activate to apply an ascending sort" aria-sort="none" class="confluenceTh tablesorter-header sortableHeader tablesorter-headerUnSorted" data-column="1" role="columnheader" scope="col" tabindex="0"><div bis_size="{"x":438,"y":4329,"w":263,"h":16,"abs_x":788,"abs_y":4542}" class="tablesorter-header-inner"><span style="color: #1c1e3f;">Sent request (incorrect)</span></div></th><th aria-disabled="false" aria-label="Co dotarło do naszego api (po odszyfrowaniu kluczem prywatnym): No sort applied, activate to apply an ascending sort" aria-sort="none" class="confluenceTh tablesorter-header sortableHeader tablesorter-headerUnSorted" data-column="2" role="columnheader" scope="col" tabindex="0"><div bis_size="{"x":717,"y":4329,"w":263,"h":33,"abs_x":1067,"abs_y":4542}" class="tablesorter-header-inner"><span style="color: #1c1e3f;">Received by CMS Antaca (after decipher action with private key)</span></div></th></tr></thead><thead class="tableFloatingHeader"></thead><tbody aria-live="polite" aria-relevant="all"><tr role="row"><td class="confluenceTd">```
{"card_no" : 1337}
```

</td><td class="confluenceTd"><span style="color: #1c1e3f;">{"payload" : "eyJhbGciOiJSU0EtT0FFUC0yNTYiLCJlbmMiOiJBMjU2R0NNIn0.rdUrW12XCZQgLFDJ-2zAHWYYnaAanctceE1-Y6yJUplX0B2dLu-bvYOEJ83KxxUs-ZjA41R4PmAVilx1cTF4pv-7CZR0\_ki85XRATBYF2-MvZdcC81fHy2QPU\_ZsAEWAW00a1wKJmuEsgPB2m1aLZ7oK4fC1hciep4PyAtuWQRYHjhNb-UDT41\_gDKTbnSGTwheL7S0mAJ\_HsKfnZFHYUrM77UcxQGZKnH7Mzqvndf9THiMo0-3MWliYFDAm1bqN2\_KTIoBNCprYjFnyIXPCjib73bjWX\_P2ip5Ul84cngbQmFVzc7o91JrpJvYou1INS7zL4XKLFcADN4nZ\_9ePWsm5\_kX5SOMyUyEhOC9gusrLNAJ0MHaIFHni8WqnMAWM3\_MC4OQDYetKax5bnHK6x42\_5eFaf6ZmzmioKny5aGm-4Vo8TEu691FmPxglhyenWlMhvBvf6ZeVsy58Ofr0mi3TXjwYbAyas7m6sncxZu1FhEJ4da6gtNjmjuKdikOOntu8V71QQ07nczNqfGlUv0RcUc9uKJq5je4b9BEbK9WuQcroxmALqC4HTt1xhICHrVUA0d\_t3fglhS2n7wNaKKCFq70ZWIrpdTaBd35kdVQOEjZgCavSjbZOzgOzcEqS6P2Blm7bZ7ZZBmnfk8y8M4m0xWoQNTmLC6nqz9bSbME.UEryKNClDxQZpyWu.6Lw\_5CcZ9HiVxHfi\_XTAFw.pYbQ6tdmQYe1kiPonm1GhA"}</span></td><td class="confluenceTd">```
{"card_no" : 1337}
```

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

</div></div></div><span style="color: #1c1e3f;">Example response:</span>

<div bis_size="{"x":150,"y":4947,"w":840,"h":697,"abs_x":500,"abs_y":5160}" id="bkmrk-co-powiniene%C5%9B-otrzym"><div bis_size="{"x":150,"y":4947,"w":840,"h":697,"abs_x":500,"abs_y":5160}" class="table-wrap"><table border="1" class="fixed-table wrapped confluenceTable tablesorter tablesorter-default stickyTableHeaders" role="grid" style="border-collapse: collapse; width: 100%; border-color: #000000;"><colgroup><col></col><col></col><col></col></colgroup><thead class="tableFloatingHeaderOriginal"><tr class="tablesorter-headerRow" role="row"><th aria-disabled="false" aria-label="Co powinieneś otrzymać: No sort applied, activate to apply an ascending sort" aria-sort="none" class="confluenceTh tablesorter-header sortableHeader tablesorter-headerUnSorted" data-column="0" role="columnheader" scope="col" tabindex="0"><div bis_size="{"x":158,"y":4953,"w":263,"h":16,"abs_x":508,"abs_y":5166}" class="tablesorter-header-inner"><span style="color: #1c1e3f;">Correct response</span></div></th><th aria-disabled="false" aria-label="Co wysłaliśmy: No sort applied, activate to apply an ascending sort" aria-sort="none" class="confluenceTh tablesorter-header sortableHeader tablesorter-headerUnSorted" data-column="1" role="columnheader" scope="col" tabindex="0"><div bis_size="{"x":438,"y":4953,"w":263,"h":16,"abs_x":788,"abs_y":5166}" class="tablesorter-header-inner"><span style="color: #1c1e3f;">Sent response by CMS Antaca</span></div></th><th aria-disabled="false" aria-label="Co otrzymałeś?: No sort applied, activate to apply an ascending sort" aria-sort="none" class="confluenceTh tablesorter-header sortableHeader tablesorter-headerUnSorted" data-column="2" role="columnheader" scope="col" tabindex="0"><div bis_size="{"x":717,"y":4953,"w":263,"h":16,"abs_x":1067,"abs_y":5166}" class="tablesorter-header-inner"><span style="color: #1c1e3f;">Received by you</span></div></th></tr></thead><tbody aria-live="polite" aria-relevant="all"><tr role="row"><td class="confluenceTd">```
{"card_no" : 1338}
```

</td><td class="confluenceTd"><span style="color: #1c1e3f;">{"payload" : "eyJhbGciOiJSU0EtT0FFUC0yNTYiLCJlbmMiOiJBMjU2R0NNIn0.iPmvEKtMAMrrEiR89vlwsL77ZfqxXrcMiy-bx3z6\_7HAo\_\_aQzBpMVDtLyj3kTHYWxen8bhPuVyebXyaIHL20sekFzcIFFzvaGoyQYU6zOK8tPv81tgixQe8SDnEr5v9VWBfiHxtPvqlpQIig2is5ynBkyqjdpQWEagR3MpqpATGl7f-omG82Jq0OwZByWI8I6P89hczwgK37F-MUnQDxcRUM3RagbHKNeIcfmPdJpNeqFZHe45y4wUkTWN0uzW72qydkN\_4uM9fy0nrUpgsJNbtJGAVIUVmDz4pIZkiI1zyGbfZX-PT7Wh9UNM06gEUf4i2goZY-m4wPB0n2zXvxzcEdfTH27iPp-aKiJjfJpYb\_ZnHyklk\_\_gZlAy9r7W0594dY-eBJ\_iUa5aeDsFS2TIfsfjMJsL8NRWY2noiTw5lsneD8dwvr6N\_rYcWoFXDyWXHoRitSSd2iYrB80gbeSOBW0wfKtPxNIZrR0uDhkE8FouS5Pk7QBw412kd43GtrEpAijqn3ne7MNUpCtuNfJ8e\_NdGDLTR7CSHhC0jfFlchpIvklF42o216NO-OnyJsjdv1w4\_w1ugs61fTHDl8lgBalOjOxauKwIvJJOyFdWmpjlXuzJhrray7ov25uh2ibvFv3Gfd2iuGUnLIZzYBOTT8ftGWTCGXTDvVOvzGbs.c3qMNb2Bne-7g0Wz.PInghFM6Q8Gn0p4Tlebig32s-ZrpLqTMqQDlpXLLYx0iq-StrKco\_HrjdN4MxondP4CicCgseIjcV8JR29jKYX-nqKdchEYq\_vVIzFHcNI\_Mx7y1el192QbMyx6b0Gbj5L79wpuB7qCUqTBNhJZ2c07PuyPsewcNwglvnc-OrA-2vL6lJnBi5ZGH8gBH1cZCgmbrMpZGNFPG3oFpOn9JPzmnvQxe9tvSFFj5989A8d\_XMHP-ZQ.dJZxnBRxJeMKswDsCA3cXA"}</span></td><td class="confluenceTd"><span style="color: #1c1e3f;">Check yourself by using Private Key included in the response.</span>

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

</div></div>## <span style="color: #1c1e3f;">User Lifecycle API &amp; SDK</span>

<span style="color: #1c1e3f;">Once Verestro configured a project for your program and you are ready to authenticate with us using JWE token you will need to register users on our platform.</span>

<span style="color: #1c1e3f;">Please check the following components:</span>

- <span style="color: #1c1e3f;">If you want to integrate directly from mobile appliacations or integrate server-to-server - [User Lifecycle and Card Management API &amp;SDK](https://developer.verestro.com/books/user-lifecycle-card-management-api-sdk).</span>

## <span style="color: #1c1e3f;">User registration &amp; KYC</span>

<span style="color: #1c1e3f;">Once you registered users on our platform and would like to create accounts and issue cards for them you need to perform KYC. There are three alternative scenarios:</span>

- <span style="color: #1c1e3f;">You can use the Verestro KYC API in the verification process of your users.</span>
    - <span style="color: #1c1e3f;">Users can register from the level of the mobile application using the SDK method [/customers/me/register](https://developer.verestro.com/books/card-issuing-and-core-banking/page/technical-documentation).</span>
    - <span style="color: #1c1e3f;">You can also use a dedicated method in the server-to-server connection to initiate the verification of your users [/secure/customers/(customerid)/register](https://developer.verestro.com/books/card-issuing-and-core-banking/page/technical-documentation-4Wl).</span>
- <span style="color: #1c1e3f;">If you already have KYC verification process on your side, just update the KYC flag for the user using User Lifecycle &amp; Card Management API.</span>

<span style="color: #1c1e3f;">Once you registered users and performed KYC you can initiate account (called "balance") creation.</span>

## <span style="color: #1c1e3f;">Create User Balance</span>

<span style="color: #1c1e3f;">It is main account balance that is connected with user account and card. Main User Balance attributes are currency, balance value and balance state. In order to create User Balance make sure user got through KYC process. KYC process can be either manual or automated. It can be performed by partner or Verestro. It is highly recommended that User Balance is hold by Verestro but we can approve projects where partner holds User Balance.</span>

<span style="color: #1c1e3f;">In order to create any payment card at Verestro CMS you have to create User Balance first. Payment card issued for particular User Balance cannot be moved to another balance later.</span>

<span style="color: #1c1e3f;">There is an important rule - one user can have multiply balances and for every balance user can have multiply payment cards. </span>

<span style="color: #1c1e3f;">[![Diagram bez tytułu.jpg](https://developer.verestro.com/uploads/images/gallery/2023-01/scaled-1680-/diagram-bez-tytulu.jpg)](https://developer.verestro.com/uploads/images/gallery/2023-01/diagram-bez-tytulu.jpg)</span>


<span style="color: #1c1e3f;">To create User Balance use the following methods:</span>

- <span style="color: #1c1e3f;">in case of server-to-server connection [/secure/customers/(customerid)/balances](https://developer.verestro.com/books/card-issuing-and-core-banking/page/technical-documentation-4Wl),</span>
- <span style="color: #1c1e3f;">in case of integration through mobile application [/customers/me/balances](https://developer.verestro.com/books/card-issuing-and-core-banking/page/technical-documentation).</span>

<span style="color: #1c1e3f;">For more information about account / balance management please check technical APIs.</span>

## <span style="color: #1c1e3f;">Card issuing</span>

<span style="color: #1c1e3f;">With the Antaca API you can offer your customers three types of cards:</span>

- <span style="color: #1c1e3f;">Virtual card - Digital card without any physical components.</span>
- <span style="color: #1c1e3f;">Physical card – The traditional plastic payment card.</span>

<span style="color: #1c1e3f;">To be able to issue a card for a user, 3 requirements must be met:</span>

- <span style="color: #1c1e3f;">User must exist in a PCI DSS compliant **Data Core** system in Verestro. Make sure you register user via [User Lifecycle API &amp; SDK](https://developer.verestro.com/books/user-lifecycle-card-management-api-sdk).</span>
- <span style="color: #1c1e3f;">User must be strongly verified according to **KYC.** You can use Verestro KYC or own KYC process.</span>
- <span style="color: #1c1e3f;">The user must have a **User Balance** under which the card will be generated.</span>
- <span style="color: #1c1e3f;">After those 3 steps you can issue a card for the user.</span>

### <span style="color: #1c1e3f;">Virtual card</span>

<span style="color: #1c1e3f;">If the API receives the request, it will create a 16-digit PAN (Permanent Account Number), CVC2 (Card Verification Code), and Expiry Date. You can then deliver this information to your customer. </span>

<span style="color: #1c1e3f;">@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 user as u  
participant "mobile app" as m  
participant antaca as a  
participant datacore as d  
participant "payment processor" as t  
u-&gt;m: 1. generate card  
m-&gt;a: 2. generate card(userID, SaldoID, configuration ID)  
a-&gt;t: 3. generate card(cardholder, terminal)  
t--&gt;a: 4. card data  
a-&gt;d: 5. store card  
d--&gt;a: 6. status  
a--&gt;m: 7. status  
@enduml</span>

### <span style="color: #1c1e3f;">Physical card</span>

<span style="color: #1c1e3f;">@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 user as u  
participant "mobile app" as m  
participant antaca as a  
participant "payment processor" as t  
participant "card personalization institution" as ac  
u-&gt;m: 1. order card  
m-&gt;a: 2. OrderCard(delivery address, userID, SaldoID, configuration ID)  
a-&gt;t: 3. OrderCard(cardholder, delivery address, terminal)  
t--&gt;a: 4. status  
a--&gt;m: 5. status  
t-&gt;t: 6. GeneratePAN and prepare binary file  
t-&gt;ac: 7. order card  
t-&gt;t: 8. Generate orderCardReport  
a-&gt;t: 9. get orderCardReport  
t--&gt;a: 10. orderCardReport  
a-&gt;a: 11. connect card with user and saldo  
a-&gt;t: 12. linkCard(trackingNo, reference)  
t--&gt;a: 13. status  
a-&gt;t: 14. getAllLinkedCards  
t--&gt;a: 15. full card data  
a-&gt;a: 16. store card in DC  
ac--&gt;u: 17. delivery card  
u-&gt;m: 18. activate card  
m-&gt;a: 19. activateCard  
a-&gt;t: 20. activateCard  
t--&gt;a: 21. status  
a-&gt;t: 22. update PIN (wPIN)  
t--&gt;a: 23. status  
a-&gt;a: 24. update status in DC  
@enduml</span>

### <span style="color: #1c1e3f;">Actions</span>

#### <span style="color: #1c1e3f;">Create virtual</span>

<span style="color: #1c1e3f;">This method enables creation of virtual payment card for already created user and balance.</span>

<span style="color: #1c1e3f;">Availability</span>

<table border="1" id="bkmrk-collection-url-authe" style="border-collapse: collapse; width: 100%; border-color: #000000;"><tbody><tr><td style="width: 19.9749%;"><span style="color: #1c1e3f;">Collection</span></td><td style="width: 19.9749%;"><span style="color: #1c1e3f;">URL</span></td><td style="width: 19.9749%;"><span style="color: #1c1e3f;">Authentication</span></td><td style="width: 19.9749%;"><span style="color: #1c1e3f;">Encryption required</span></td><td style="width: 19.9768%;"><span style="color: #1c1e3f;">Available for admin roles</span></td></tr><tr><td style="width: 19.9749%;"><span style="color: #1c1e3f;">Customer</span></td><td style="width: 19.9749%;"><span style="color: #1c1e3f;">**POST**<span style="text-decoration: underline;"> </span>[<span style="text-decoration: underline;">/customers<wbr>/me<wbr>/cards<wbr>/virtual</wbr></wbr></wbr></span>](https://cardissuing.upaidtest.pl/api/documentation/#/customerCards/post_customers_me_cards_virtual)</span>

<span style="color: #1c1e3f;">or for an asynchronous process</span>

<span style="color: #1c1e3f;">**POST**<span style="text-decoration: underline;"> </span>[<span style="text-decoration: underline;">/customers<wbr>/me<wbr>/cards<wbr>/virtual<wbr>/async</wbr></wbr></wbr></wbr></span>](https://cardissuing.upaidtest.pl/api/documentation/#/customerCardsAsync/post_customers_me_cards_virtual_async)</span>

</td><td style="width: 19.9749%;"><span style="color: #1c1e3f;">Session token </span></td><td style="width: 19.9749%;"><span style="color: #1c1e3f;">YES\* - JWE </span>

<span style="color: #1c1e3f;">\*for an asynchronous process NO</span>

</td><td style="width: 19.9768%;"><span style="color: #1c1e3f;">N/A</span></td></tr><tr><td style="width: 19.9749%;"><span style="color: #1c1e3f;">Admin</span></td><td style="width: 19.9749%;"><span style="color: #1c1e3f;">**POST** [/admin<wbr>/customers<wbr>/{customerId}<wbr>/cards<wbr>/virtual</wbr></wbr></wbr></wbr>](https://cardissuing.upaidtest.pl/api/documentation/#/Admin%20-%20Cards/post_admin_customers__customerId__cards_virtual)</span></td><td style="width: 19.9749%;"><span style="color: #1c1e3f;">Session token</span></td><td style="width: 19.9749%;"><span style="color: #1c1e3f;">YES\* - JWE </span></td><td style="width: 19.9768%;"><span style="color: #1c1e3f;">Admin, Manager</span></td></tr><tr><td style="width: 19.9749%;"><span style="color: #1c1e3f;">API</span></td><td style="width: 19.9749%;"><span style="color: #1c1e3f;">**POST**<span style="text-decoration: underline;"> </span>[<span style="text-decoration: underline;">/secure<wbr>/customers<wbr>/{customerId}<wbr>/cards<wbr>/virtual</wbr></wbr></wbr></wbr></span>](https://cardissuing.upaidtest.pl/api/documentation/#/customerCards/post_secure_customers__customerId__cards_virtual)</span>

<span style="color: #1c1e3f;">or for an asynchronous process</span>

<span style="color: #1c1e3f;">**POST**<span style="text-decoration: underline;"> </span>[<span style="text-decoration: underline;">/secure<wbr>/customers<wbr>/{customerId}<wbr>/cards<wbr>/virtual<wbr>/async</wbr></wbr></wbr></wbr></wbr></span>](https://cardissuing.upaidtest.pl/api/documentation/#/customerCardsAsync/post_secure_customers__customerId__cards_virtual_async)</span>

</td><td style="width: 19.9749%;"><span style="color: #1c1e3f;">x509 certificate</span></td><td style="width: 19.9749%;"><span style="color: #1c1e3f;">YES\* - JWE </span>

<span style="color: #1c1e3f;">\*for an asynchronous process NO</span>

</td><td style="width: 19.9768%;"><span style="color: #1c1e3f;">N/A</span></td></tr></tbody></table>

#### <span style="color: #1c1e3f;">Lock</span>

<span style="color: #1c1e3f;">This functionality enables temporary or fixed blocking of already issued cards. After card being blocked every authorisation request will be rejected. While using this method you need to inform CMS Antaca about reasons of card blocking. List of reasons is described below in the table.</span>

<table border="1" class="confluenceTable" id="bkmrk-code-no-card-stop-re" style="border-collapse: collapse; width: 100%; border-color: #000000;"><colgroup><col style="width: 15.8459%;"></col><col style="width: 46.942%;"></col><col style="width: 37.2915%;"></col></colgroup><tbody><tr style="height: 46.5938px;"><td class="confluenceTd" style="height: 46.5938px;"><span style="color: #1c1e3f;">Code No</span></td><td class="confluenceTd" style="height: 46.5938px;"><span style="color: #1c1e3f;">Card stop reason</span></td><td class="confluenceTd" style="height: 46.5938px;"><span style="color: #1c1e3f;">irreversible</span></td></tr><tr style="height: 29.7969px;"><td class="confluenceTd" style="height: 29.7969px;"><span style="color: #1c1e3f;">1</span></td><td class="confluenceTd" style="height: 29.7969px;"><span style="color: #1c1e3f;">Card lost</span></td><td class="confluenceTd" style="height: 29.7969px;"><span style="color: #1c1e3f;">YES</span></td></tr><tr style="height: 29.7969px;"><td class="confluenceTd" style="height: 29.7969px;"><span style="color: #1c1e3f;">2</span></td><td class="confluenceTd" style="height: 29.7969px;"><span style="color: #1c1e3f;">Card stolen</span></td><td class="confluenceTd" style="height: 29.7969px;"><span style="color: #1c1e3f;">YES</span></td></tr><tr style="height: 29.7969px;"><td class="confluenceTd" style="height: 29.7969px;"><span style="color: #1c1e3f;">3</span></td><td class="confluenceTd" style="height: 29.7969px;"><span style="color: #1c1e3f;">Pending query</span></td><td class="confluenceTd" style="height: 29.7969px;"><span style="color: #1c1e3f;">NO</span></td></tr><tr style="height: 29.7969px;"><td class="confluenceTd" style="height: 29.7969px;"><span style="color: #1c1e3f;">4</span></td><td class="confluenceTd" style="height: 29.7969px;"><span style="color: #1c1e3f;">Card consolidation</span></td><td class="confluenceTd" style="height: 29.7969px;"><span style="color: #1c1e3f;">NO</span></td></tr><tr style="height: 29.7969px;"><td class="confluenceTd" style="height: 29.7969px;"><span style="color: #1c1e3f;">5</span></td><td class="confluenceTd" style="height: 29.7969px;"><span style="color: #1c1e3f;">Card inactive</span></td><td class="confluenceTd" style="height: 29.7969px;"><span style="color: #1c1e3f;">YES</span></td></tr><tr style="height: 29.7969px;"><td class="confluenceTd" style="height: 29.7969px;"><span style="color: #1c1e3f;">6</span></td><td class="confluenceTd" style="height: 29.7969px;"><span style="color: #1c1e3f;">PIN tries exceeded</span></td><td class="confluenceTd" style="height: 29.7969px;"><span style="color: #1c1e3f;">NO</span></td></tr><tr style="height: 29.7969px;"><td class="confluenceTd" style="height: 29.7969px;"><span style="color: #1c1e3f;">7</span></td><td class="confluenceTd" style="height: 29.7969px;"><span style="color: #1c1e3f;">Suspected fraud</span></td><td class="confluenceTd" style="height: 29.7969px;"><span style="color: #1c1e3f;">NO</span></td></tr><tr style="height: 29.7969px;"><td class="confluenceTd" style="height: 29.7969px;"><span style="color: #1c1e3f;">8</span></td><td class="confluenceTd" style="height: 29.7969px;"><span style="color: #1c1e3f;">Card replaced</span></td><td class="confluenceTd" style="height: 29.7969px;"><span style="color: #1c1e3f;">YES</span></td></tr><tr><td><span style="color: #1c1e3f;">11</span></td><td><span style="color: #1c1e3f;">Offline PIN attempts exceeded</span></td><td><span style="color: #1c1e3f;">NO</span></td></tr></tbody></table>

<span style="color: #1c1e3f;">Availability</span>

<table border="1" id="bkmrk-collection-url-authe-0" style="border-collapse: collapse; width: 100%; border-color: #000000;"><tbody><tr><td style="width: 19.9749%;"><span style="color: #1c1e3f;">Collection</span></td><td style="width: 19.9749%;"><span style="color: #1c1e3f;">URL</span></td><td style="width: 19.9749%;"><span style="color: #1c1e3f;">Authentication</span></td><td style="width: 19.9749%;"><span style="color: #1c1e3f;">Encryption required</span></td><td style="width: 19.9768%;"><span style="color: #1c1e3f;">Available for admin roles</span></td></tr><tr><td style="width: 19.9749%;"><span style="color: #1c1e3f;">Customer</span></td><td style="width: 19.9749%;"><span style="color: #1c1e3f;">**POST** [/customers<wbr>/me<wbr>/cards<wbr>/{cardId}<wbr>/lock</wbr></wbr></wbr></wbr>](https://cardissuing.upaidtest.pl/api/documentation/#/customerCards/post_customers_me_cards__cardId__lock)</span>

</td><td style="width: 19.9749%;"><span style="color: #1c1e3f;">Session token </span></td><td style="width: 19.9749%;"><span style="color: #1c1e3f;">NO</span>

</td><td style="width: 19.9768%;"><span style="color: #1c1e3f;">N/A</span></td></tr><tr><td style="width: 19.9749%;"><span style="color: #1c1e3f;">Admin</span></td><td style="width: 19.9749%;"><span style="color: #1c1e3f;">Administrator blocks the card through the core of the administration panel</span></td><td style="width: 19.9749%;"><span style="color: #1c1e3f;">N/A</span></td><td style="width: 19.9749%;"><span style="color: #1c1e3f;">N/A</span></td><td style="width: 19.9768%;"><span style="color: #1c1e3f;">N/A</span></td></tr><tr><td style="width: 19.9749%;"><span style="color: #1c1e3f;">API</span></td><td style="width: 19.9749%;"><span style="color: #1c1e3f;">**POST** [/secure<wbr>/customers<wbr>/{userId}<wbr>/cards<wbr>/{cardId}<wbr>/lock</wbr></wbr></wbr></wbr></wbr>](https://cardissuing.upaidtest.pl/api/documentation/#/Secure%20-%20Customer%20Cards/post_secure_customers__userId__cards__cardId__lock)</span>

</td><td style="width: 19.9749%;"><span style="color: #1c1e3f;">x509 certificate</span></td><td style="width: 19.9749%;"><span style="color: #1c1e3f;">NO</span>

</td><td style="width: 19.9768%;"><span style="color: #1c1e3f;">N/A</span></td></tr></tbody></table>

#### <span style="color: #1c1e3f;">Unlock</span>

<span style="color: #1c1e3f;">This functionality enables unblocking previously blocked card. It works in case the card was not blocked with Code No 1, 2, 5 or 8 described in the above table (card lost, card stolen, card inactive or card replaced). CMS Antaca does not need reasons for card unblocking.</span>

<span style="color: #1c1e3f;">Availability</span>

<table border="1" id="bkmrk-collection-url-authe-1" style="border-collapse: collapse; width: 100%; border-color: #000000;"><tbody><tr><td style="width: 19.9749%;"><span style="color: #1c1e3f;">Collection</span></td><td style="width: 19.9749%;"><span style="color: #1c1e3f;">URL</span></td><td style="width: 19.9749%;"><span style="color: #1c1e3f;">Authentication</span></td><td style="width: 19.9749%;"><span style="color: #1c1e3f;">Encryption required</span></td><td style="width: 19.9768%;"><span style="color: #1c1e3f;">Available for admin roles</span></td></tr><tr><td style="width: 19.9749%;"><span style="color: #1c1e3f;">Customer</span></td><td style="width: 19.9749%;"><span style="color: #1c1e3f;">**POST** [/customers<wbr>/me<wbr>/cards<wbr>/{cardId}<wbr>/unlock</wbr></wbr></wbr></wbr>](https://cardissuing.upaidtest.pl/api/documentation/#/customerCards/post_customers_me_cards__cardId__unlock)</span>

</td><td style="width: 19.9749%;"><span style="color: #1c1e3f;">Session token </span></td><td style="width: 19.9749%;"><span style="color: #1c1e3f;">NO</span>

</td><td style="width: 19.9768%;"><span style="color: #1c1e3f;">N/A</span></td></tr><tr><td style="width: 19.9749%;"><span style="color: #1c1e3f;">Admin</span></td><td style="width: 19.9749%;"><span style="color: #1c1e3f;">Administrator unblocks the card through the core of the administration panel</span></td><td style="width: 19.9749%;"><span style="color: #1c1e3f;">N/A</span></td><td style="width: 19.9749%;"><span style="color: #1c1e3f;">N/A</span></td><td style="width: 19.9768%;"><span style="color: #1c1e3f;">N/A</span></td></tr><tr><td style="width: 19.9749%;"><span style="color: #1c1e3f;">API</span></td><td style="width: 19.9749%;"><span style="color: #1c1e3f;">**POST** [/secure<wbr>/customers<wbr>/{userId}<wbr>/cards<wbr>/{cardId}<wbr>/unlock</wbr></wbr></wbr></wbr></wbr>](https://cardissuing.upaidtest.pl/api/documentation/#/Secure%20-%20Customer%20Cards/post_secure_customers__userId__cards__cardId__unlock)</span>

</td><td style="width: 19.9749%;"><span style="color: #1c1e3f;">x509 certificate</span></td><td style="width: 19.9749%;"><span style="color: #1c1e3f;">NO</span>

</td><td style="width: 19.9768%;"><span style="color: #1c1e3f;">N/A</span></td></tr></tbody></table>

#### <span style="color: #1c1e3f;">Remove</span>

<span style="color: #1c1e3f;">This functionality enables card deletion from CMS Antaca. Deleted card cannot be restored. </span>

<span style="color: #1c1e3f;">Availability</span>

<table border="1" id="bkmrk-collection-url-authe-2" style="border-collapse: collapse; width: 100%; border-color: #000000;"><tbody><tr><td style="width: 19.9749%;"><span style="color: #1c1e3f;">Collection</span></td><td style="width: 19.9749%;"><span style="color: #1c1e3f;">URL</span></td><td style="width: 19.9749%;"><span style="color: #1c1e3f;">Authentication</span></td><td style="width: 19.9749%;"><span style="color: #1c1e3f;">Encryption required</span></td><td style="width: 19.9768%;"><span style="color: #1c1e3f;">Available for admin roles</span></td></tr><tr><td style="width: 19.9749%;"><span style="color: #1c1e3f;">Customer</span></td><td style="width: 19.9749%;"><span style="color: #1c1e3f;">**DELETE**<span style="text-decoration: underline;"> </span>[/customers<wbr>/me<wbr>/cards<wbr>/{cardId}</wbr></wbr></wbr>](https://cardissuing.upaidtest.pl/api/documentation/#/customerCards/delete_customers_me_cards__cardId_)</span>

</td><td style="width: 19.9749%;"><span style="color: #1c1e3f;">Session token </span></td><td style="width: 19.9749%;"><span style="color: #1c1e3f;">NO</span>

</td><td style="width: 19.9768%;"><span style="color: #1c1e3f;">N/A</span></td></tr><tr><td style="width: 19.9749%;"><span style="color: #1c1e3f;">Admin</span></td><td style="width: 19.9749%;"><span style="color: #1c1e3f;">Administrator delete the card through the core of the administration panel</span></td><td style="width: 19.9749%;"><span style="color: #1c1e3f;">N/A</span></td><td style="width: 19.9749%;"><span style="color: #1c1e3f;">N/A</span></td><td style="width: 19.9768%;"><span style="color: #1c1e3f;">N/A</span></td></tr><tr><td style="width: 19.9749%;"><span style="color: #1c1e3f;">API</span></td><td style="width: 19.9749%;"><span style="color: #1c1e3f;">Other APIs remove the card via LC or directly in DC</span>

</td><td style="width: 19.9749%;"><span style="color: #1c1e3f;">N/A</span></td><td style="width: 19.9749%;"><span style="color: #1c1e3f;">N/A</span>

</td><td style="width: 19.9768%;"><span style="color: #1c1e3f;">N/A</span></td></tr></tbody></table>

#### <span style="color: #1c1e3f;">Get full data</span>

<span style="color: #1c1e3f;">This functionality enables receiving full card data (PAN, Expiry Date, CVC2 or CVV). Access to those data for user should be always connected with additional authorisation by user (fingerprint, application PIN).</span>

<span style="color: #1c1e3f;">Availability</span>

<table border="1" id="bkmrk-collection-url-authe-3" style="border-collapse: collapse; width: 100%; border-color: #000000; height: 191.2px;"><tbody><tr style="height: 46.4px;"><td style="width: 19.9749%; height: 46.4px;"><span style="color: #1c1e3f;">Collection</span></td><td style="width: 19.9749%; height: 46.4px;"><span style="color: #1c1e3f;">URL</span></td><td style="width: 19.9749%; height: 46.4px;"><span style="color: #1c1e3f;">Authentication</span></td><td style="width: 19.9749%; height: 46.4px;"><span style="color: #1c1e3f;">Encryption required</span></td><td style="width: 19.9768%; height: 46.4px;"><span style="color: #1c1e3f;">Available for admin roles</span></td></tr><tr style="height: 57.6px;"><td style="width: 19.9749%; height: 57.6px;"><span style="color: #1c1e3f;">Customer</span></td><td style="width: 19.9749%; height: 57.6px;"><span style="color: #1c1e3f;">**GET** [/customers<wbr>/me<wbr>/cards<wbr>/{id}</wbr></wbr></wbr>](https://cardissuing.upaidtest.pl/api/documentation/#/customerCards/get_customers_me_cards__id_)</span>

</td><td style="width: 19.9749%; height: 57.6px;"><span style="color: #1c1e3f;">Session token </span></td><td style="width: 19.9749%; height: 57.6px;"><span style="color: #1c1e3f;">YES</span>

</td><td style="width: 19.9768%; height: 57.6px;"><span style="color: #1c1e3f;">N/A</span></td></tr><tr style="height: 63.2px;"><td style="width: 19.9749%; height: 63.2px;"><span style="color: #1c1e3f;">Admin</span></td><td style="width: 19.9749%; height: 63.2px;"><span style="color: #1c1e3f;">Administrator cannot view the full details of the cards</span></td><td style="width: 19.9749%; height: 63.2px;"><span style="color: #1c1e3f;">N/A</span></td><td style="width: 19.9749%; height: 63.2px;"><span style="color: #1c1e3f;">N/A</span></td><td style="width: 19.9768%; height: 63.2px;"><span style="color: #1c1e3f;">N/A</span></td></tr><tr style="height: 24px;"><td style="width: 19.9749%; height: 24px;"><span style="color: #1c1e3f;">API</span></td><td style="width: 19.9749%; height: 24px;"><span style="color: #1c1e3f;">**GET** [/secure<wbr>/customers<wbr>/{customerId}<wbr>/cards<wbr>/{id}</wbr></wbr></wbr></wbr>](https://cardissuing.upaidtest.pl/api/documentation/#/customerCards/get_secure_customers__customerId__cards__id_)</span>

</td><td style="width: 19.9749%; height: 24px;"><span style="color: #1c1e3f;">x509 certificate</span></td><td style="width: 19.9749%; height: 24px;"><span style="color: #1c1e3f;">YES</span>

</td><td style="width: 19.9768%; height: 24px;"><span style="color: #1c1e3f;">N/A</span></td></tr></tbody></table>

#### <span style="color: #1c1e3f;">Reset CVV</span>

<span style="color: #1c1e3f;">This functionality enables generation of new CVC2 or CVV number for virtual.</span>

<span style="color: #1c1e3f;">Availability</span>

<table border="1" id="bkmrk-collection-url-authe-4" style="border-collapse: collapse; width: 100%; border-color: #000000;"><tbody><tr><td style="width: 19.9749%;"><span style="color: #1c1e3f;">Collection</span></td><td style="width: 19.9749%;"><span style="color: #1c1e3f;">URL</span></td><td style="width: 19.9749%;"><span style="color: #1c1e3f;">Authentication</span></td><td style="width: 19.9749%;"><span style="color: #1c1e3f;">Encryption required</span></td><td style="width: 19.9768%;"><span style="color: #1c1e3f;">Available for admin roles</span></td></tr><tr><td style="width: 19.9749%;"><span style="color: #1c1e3f;">Customer</span></td><td style="width: 19.9749%;"><span style="color: #1c1e3f;">**POST**[ /customers/me/cards/{cardId}/cvv](https://cardissuing.upaidtest.pl/api/documentation/#/customerCards/post_customers_me_cards__cardId__cvv)</span>

</td><td style="width: 19.9749%;"><span style="color: #1c1e3f;">Session token </span></td><td style="width: 19.9749%;"><span style="color: #1c1e3f;">YES</span>

</td><td style="width: 19.9768%;"><span style="color: #1c1e3f;">N/A</span></td></tr><tr><td style="width: 19.9749%;"><span style="color: #1c1e3f;">Admin</span></td><td style="width: 19.9749%;"><span style="color: #1c1e3f;">**POST** [/admin<wbr>/cards<wbr>/{cardId}<wbr>/cvv</wbr></wbr></wbr>](https://cardissuing.upaidtest.pl/api/documentation/#/Admin%20-%20Cards/post_admin_cards__cardId__cvv)</span></td><td style="width: 19.9749%;"><span style="color: #1c1e3f;">Session token</span></td><td style="width: 19.9749%;"><span style="color: #1c1e3f;">YES</span></td><td style="width: 19.9768%;"><span style="color: #1c1e3f;">Admin, Manager, Employee</span></td></tr><tr><td style="width: 19.9749%;"><span style="color: #1c1e3f;">API</span></td><td style="width: 19.9749%;"><span style="color: #1c1e3f;">N/A</span></td><td style="width: 19.9749%;"><span style="color: #1c1e3f;">N/A</span></td><td style="width: 19.9749%;"><span style="color: #1c1e3f;">N/A</span></td><td style="width: 19.9768%;"><span style="color: #1c1e3f;">N/A</span></td></tr></tbody></table>

#### <span style="color: #1c1e3f;">Order physical card</span>

<span style="color: #1c1e3f;">This functionality enables ordering plastic card. Process of card personalisation can take up to 48 hours depending on chosen personalisation center. Additionally card will be transferred to user by courier or post office. Physical card ordered by this functionality will be inactive until activation action.</span>

<p class="callout info"><span style="color: #1c1e3f;">The DEV/BETA environment does not support physical card order testing.</span></p>

<span style="color: #1c1e3f;">Availability</span>

<table border="1" id="bkmrk-collection-url-authe-5" style="border-collapse: collapse; width: 100%; border-color: #000000;"><tbody><tr><td style="width: 19.9749%;"><span style="color: #1c1e3f;">Collection</span></td><td style="width: 19.9749%;"><span style="color: #1c1e3f;">URL</span></td><td style="width: 19.9749%;"><span style="color: #1c1e3f;">Authentication</span></td><td style="width: 19.9749%;"><span style="color: #1c1e3f;">Encryption required</span></td><td style="width: 19.9768%;"><span style="color: #1c1e3f;">Available for admin roles</span></td></tr><tr><td style="width: 19.9749%;"><span style="color: #1c1e3f;">Customer</span></td><td style="width: 19.9749%;"></td><td style="width: 19.9749%;"><span style="color: #1c1e3f;">Session token </span></td><td style="width: 19.9749%;"><span style="color: #1c1e3f;">YES</span>

</td><td style="width: 19.9768%;"><span style="color: #1c1e3f;">N/A</span></td></tr><tr><td style="width: 19.9749%;"><span style="color: #1c1e3f;">Admin</span></td><td style="width: 19.9749%;">  
</td><td style="width: 19.9749%;"><span style="color: #1c1e3f;">Session token</span></td><td style="width: 19.9749%;"><span style="color: #1c1e3f;">YES</span></td><td style="width: 19.9768%;"><span style="color: #1c1e3f;">Admin, Manager, Employee</span></td></tr><tr><td style="width: 19.9749%;"><span style="color: #1c1e3f;">API</span></td><td style="width: 19.9749%;">  
</td><td style="width: 19.9749%;"><span style="color: #1c1e3f;">x509 certificate</span></td><td style="width: 19.9749%;"><span style="color: #1c1e3f;">YES</span></td><td style="width: 19.9768%;"><span style="color: #1c1e3f;">N/A</span></td></tr></tbody></table>


##### <span style="color: #1c1e3f;">Link card</span>

<span style="color: #1c1e3f;">Around 48 hours after card ordering it will be visible in user resources. After Verestro receives confirmation from personalisation center that card was personalised CMS Antaca connects card with user account and balance. From this moment it can be visible for user and can be activated.</span>

#### <span style="color: #1c1e3f;">Set PIN</span>

<span style="color: #1c1e3f;">This functionality is available for physical and virtual cards. It enables setting up PIN that is used for face-to-face transactions (POS and ATM). In the case of virtual cards - for ATM withdrawals.</span>

<table border="1" id="bkmrk-%2A-po-ustawieniu-nowe" style="border-collapse: collapse; width: 100%; border-color: #000000; border-style: solid;"><tbody><tr><td style="width: 99.8765%;"><span style="color: #1c1e3f;">**IMPORTANT:**</span>

- <span style="color: #1c1e3f;">After setting up new PIN it is required to perform standard chip &amp; pin transactions (recommended on ATM) to transfer PIN to chip on the plastic to be able to process off-line PIN transactions.</span>
- <span style="color: #1c1e3f;">Majority of POS terminals verifies offline PIN what can result in message "Incorrect PIN" on terminal. User should be informed about it.</span>
- <span style="color: #1c1e3f;">In case of contactless transactions online PIN will be used in all cases so user will not receive "Incorrect PIN" message on terminal.</span>

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

<span style="color: #1c1e3f;">Availability</span>

<table border="1" id="bkmrk-collection-url-authe-7" style="border-collapse: collapse; width: 100%; border-color: #000000;"><tbody><tr><td style="width: 19.9749%;"><span style="color: #1c1e3f;">Collection</span></td><td style="width: 19.9749%;"><span style="color: #1c1e3f;">URL</span></td><td style="width: 19.9749%;"><span style="color: #1c1e3f;">Authentication</span></td><td style="width: 19.9749%;"><span style="color: #1c1e3f;">Encryption required</span></td><td style="width: 19.9768%;"><span style="color: #1c1e3f;">Available for admin roles</span></td></tr><tr><td style="width: 19.9749%;"><span style="color: #1c1e3f;">Customer</span></td><td style="width: 19.9749%;"><span style="color: #1c1e3f;">**POST** https://prepaidapi.upaid.pl/customers/me/cards/{cardId}/pin</span>

</td><td style="width: 19.9749%;"><span style="color: #1c1e3f;">Session token </span></td><td style="width: 19.9749%;"><span style="color: #1c1e3f;">YES</span>

</td><td style="width: 19.9768%;"><span style="color: #1c1e3f;">N/A</span></td></tr><tr><td style="width: 19.9749%;"><span style="color: #1c1e3f;">Admin</span></td><td style="width: 19.9749%;"><span style="color: #1c1e3f;">N/A</span></td><td style="width: 19.9749%;"><span style="color: #1c1e3f;">N/A</span></td><td style="width: 19.9749%;"><span style="color: #1c1e3f;">N/A</span></td><td style="width: 19.9768%;"><span style="color: #1c1e3f;">N/A</span></td></tr><tr><td style="width: 19.9749%;"><span style="color: #1c1e3f;">API</span></td><td style="width: 19.9749%;"><span style="color: #1c1e3f;">N/A</span></td><td style="width: 19.9749%;"><span style="color: #1c1e3f;">N/A</span></td><td style="width: 19.9749%;"><span style="color: #1c1e3f;">N/A</span></td><td style="width: 19.9768%;"><span style="color: #1c1e3f;">N/A</span></td></tr></tbody></table>

#### <span style="color: #1c1e3f;">Activate card</span>

<span style="color: #1c1e3f;">This functionality enables activation of previously ordered physical card. Card transactions will not work until card is activated. </span>

<span style="color: #1c1e3f;">Availability</span>

<table border="1" id="bkmrk-collection-url-authe-8" style="border-collapse: collapse; width: 100%; border-color: #000000;"><tbody><tr><td style="width: 19.9749%;"><span style="color: #1c1e3f;">Collection</span></td><td style="width: 19.9749%;"><span style="color: #1c1e3f;">URL</span></td><td style="width: 19.9749%;"><span style="color: #1c1e3f;">Authentication</span></td><td style="width: 19.9749%;"><span style="color: #1c1e3f;">Encryption required</span></td><td style="width: 19.9768%;"><span style="color: #1c1e3f;">Available for admin roles</span></td></tr><tr><td style="width: 19.9749%;"><span style="color: #1c1e3f;">Customer</span></td><td style="width: 19.9749%;"></td><td style="width: 19.9749%;"><span style="color: #1c1e3f;">Session token </span></td><td style="width: 19.9749%;"><span style="color: #1c1e3f;">NO</span>

</td><td style="width: 19.9768%;"><span style="color: #1c1e3f;">N/A</span></td></tr><tr><td style="width: 19.9749%;"><span style="color: #1c1e3f;">Admin</span></td><td style="width: 19.9749%;">  
</td><td style="width: 19.9749%;"><span style="color: #1c1e3f;">Session token </span></td><td style="width: 19.9749%;"><span style="color: #1c1e3f;">NO</span></td><td style="width: 19.9768%;"><span style="color: #1c1e3f;">Admin, Manager, Employee</span></td></tr><tr><td style="width: 19.9749%;"><span style="color: #1c1e3f;">API</span></td><td style="width: 19.9749%;">  
</td><td style="width: 19.9749%;"><span style="color: #1c1e3f;">x509 certificate</span></td><td style="width: 19.9749%;"><span style="color: #1c1e3f;">NO</span></td><td style="width: 19.9768%;"><span style="color: #1c1e3f;">N/A</span></td></tr></tbody></table>

#### <span style="color: #1c1e3f;">Lock outside</span>

<span style="color: #1c1e3f;">This functionality enables blocking of card in CMS Antaca on request of external entities (MC or VISA or acquirers). It can be used in case user entered incorrect PIN 3 times or in other fraud related actions. This lock cannot be removed if card was blocked by Code No 1, 2, 5, 8 (see below). The table below contains all possible reasons of card lock.</span>

<table border="1" class="confluenceTable" id="bkmrk-code-no-card-stop-re-0" style="border-collapse: collapse; width: 100%; border-color: #000000;"><colgroup><col style="width: 9.49165%;"></col><col style="width: 28.127%;"></col><col style="width: 40.0095%;"></col><col style="width: 22.3732%;"></col></colgroup><tbody><tr style="height: 46.5938px;"><td class="confluenceTd" style="height: 46.5938px;"><span style="color: #1c1e3f;">Code No</span></td><td class="confluenceTd" style="height: 46.5938px;"><span style="color: #1c1e3f;">Card lock reason</span></td><td class="confluenceTd" style="height: 46.5938px;"><span style="color: #1c1e3f;">Failure Action Code on POS/ATM</span></td><td class="confluenceTd" colspan="1" style="height: 46.5938px;"><span style="color: #1c1e3f;">Irreversible</span></td></tr><tr style="height: 29.7969px;"><td class="confluenceTd" style="height: 29.7969px;"><span style="color: #1c1e3f;">1</span></td><td class="confluenceTd" style="height: 29.7969px;"><span style="color: #1c1e3f;">Card lost</span></td><td class="confluenceTd" style="height: 29.7969px;"><span style="color: #1c1e3f;">2008</span></td><td class="confluenceTd" colspan="1" style="height: 29.7969px;"><span style="color: #1c1e3f;">YES</span></td></tr><tr style="height: 29.7969px;"><td class="confluenceTd" style="height: 29.7969px;"><span style="color: #1c1e3f;">2</span></td><td class="confluenceTd" style="height: 29.7969px;"><span style="color: #1c1e3f;">Card stolen</span></td><td class="confluenceTd" style="height: 29.7969px;"><span style="color: #1c1e3f;">2009</span></td><td class="confluenceTd" colspan="1" style="height: 29.7969px;"><span style="color: #1c1e3f;">YES</span></td></tr><tr style="height: 29.7969px;"><td class="confluenceTd" style="height: 29.7969px;"><span style="color: #1c1e3f;">3</span></td><td class="confluenceTd" style="height: 29.7969px;"><span style="color: #1c1e3f;">Pending query</span></td><td class="confluenceTd" style="height: 29.7969px;"><span style="color: #1c1e3f;">1000</span></td><td class="confluenceTd" colspan="1" style="height: 29.7969px;"><span style="color: #1c1e3f;">NO</span></td></tr><tr style="height: 29.7969px;"><td class="confluenceTd" style="height: 29.7969px;"><span style="color: #1c1e3f;">4</span></td><td class="confluenceTd" style="height: 29.7969px;"><span style="color: #1c1e3f;">Card consolidation</span></td><td class="confluenceTd" style="height: 29.7969px;"><span style="color: #1c1e3f;">1016</span></td><td class="confluenceTd" colspan="1" style="height: 29.7969px;"><span style="color: #1c1e3f;">NO</span></td></tr><tr style="height: 29.7969px;"><td class="confluenceTd" style="height: 29.7969px;"><span style="color: #1c1e3f;">5</span></td><td class="confluenceTd" style="height: 29.7969px;"><span style="color: #1c1e3f;">Card inactive</span></td><td class="confluenceTd" style="height: 29.7969px;"><span style="color: #1c1e3f;">1018</span></td><td class="confluenceTd" colspan="1" style="height: 29.7969px;"><span style="color: #1c1e3f;">YES</span></td></tr><tr style="height: 29.7969px;"><td class="confluenceTd" style="height: 29.7969px;"><span style="color: #1c1e3f;">6</span></td><td class="confluenceTd" style="height: 29.7969px;"><span style="color: #1c1e3f;">PIN tries exceeded</span></td><td class="confluenceTd" style="height: 29.7969px;"><span style="color: #1c1e3f;">1006</span></td><td class="confluenceTd" colspan="1" style="height: 29.7969px;"><span style="color: #1c1e3f;">NO</span></td></tr><tr style="height: 29.7969px;"><td class="confluenceTd" style="height: 29.7969px;"><span style="color: #1c1e3f;">7</span></td><td class="confluenceTd" style="height: 29.7969px;"><span style="color: #1c1e3f;">Suspected fraud</span></td><td class="confluenceTd" style="height: 29.7969px;"><span style="color: #1c1e3f;">1002</span></td><td class="confluenceTd" colspan="1" style="height: 29.7969px;"><span style="color: #1c1e3f;">NO</span></td></tr><tr style="height: 29.7969px;"><td class="confluenceTd" style="height: 29.7969px;"><span style="color: #1c1e3f;">8</span></td><td class="confluenceTd" style="height: 29.7969px;"><span style="color: #1c1e3f;">Card replaced</span></td><td class="confluenceTd" style="height: 29.7969px;"><span style="color: #1c1e3f;">1011</span></td><td class="confluenceTd" colspan="1" style="height: 29.7969px;"><span style="color: #1c1e3f;">YES</span></td></tr></tbody></table>

## <span style="color: #1c1e3f;">Corporations</span>

### Corporate Onboarding Process

The entire lifecycle begins with the mandatory submission and approval of corporate documents, followed by the setup of financial tools.

#### Know Your Business (KYB) and Corporate Approval

Before any financial operations can be set up, the corporation must successfully pass a Know Your Business (KYB) verification. This phase is crucial for regulatory compliance and fraud prevention.

1. **Document Submission:** The corporation provides all required legal and ownership documents.
    
    
    - The submitted documents are reviewed by a compliance team to verify the identity and legitimacy of the business.
2. **Approval:** Upon successful verification, the corporation is formally approved and can proceed to the next phase. If the documentation is insufficient or a risk is identified, the corporation will be rejected or placed on hold.

#### Account and Balance Creation

Once the corporate is approved, a new account is created to hold and manage all financial instruments.

1. **Account Creation:** After creating a corporation via API, `dcCorporationId` is returned to use for balance and card creation.
    
    
    - **Endpoint:** `<span class="opblock-summary-method">POST</span><span class="opblock-summary-path" data-path="/lifecycle/v1/corporations"><a class="nostyle">/lifecycle<wbr>/v1<wbr>/corporations</wbr></wbr></a></span>`
2. **Balance:** The balance is created with a starting value of zero. Funds can be loaded into this balance via bank transfer or other approved methods.
    
    
    - **Endpoint:** `<span class="opblock-summary-method">POST</span><span class="opblock-summary-path" data-path="/secure/balances"><a class="nostyle">/secure<wbr>/balances</wbr></a></span>` Endpoint requires the `dcCorporationId` parameter.

#### Card Issuance

With a corporate balance, the company can now issue payment cards to its authorized employees. These cards are linked to the corporate balance and are used for business-related expenses.

1\. **Virtual card**

- - **Endpoint:** `<span class="opblock-summary-method">POST</span><span class="opblock-summary-path" data-path="/secure/cards/virtual"><a class="nostyle">/secure<wbr>/cards<wbr>/virtual</wbr></wbr></a></span>`

Endpoint requires the `dcCorporationId` parameter.

**2. Physical card**.

- - **Endpoint:** `<span class="opblock-summary-method">POST</span><span class="opblock-summary-path" data-path="/secure/cards/physical"><a class="nostyle">/secure<wbr>/cards<wbr>/physical</wbr></wbr></a></span>`
    - **Endpoint:** `<span class="opblock-summary-method">POST</span><span class="opblock-summary-path" data-path="/secure/cards/physical"><a class="nostyle">/secure<wbr>/cards<wbr>/physical_with_pin</wbr></wbr></a></span>`

Endpoints require the `dcCorporationId` parameter.

[![corporation_onboarding.png](https://developer.verestro.com/uploads/images/gallery/2025-08/scaled-1680-/corporation-onboarding.png)](https://developer.verestro.com/uploads/images/gallery/2025-08/corporation-onboarding.png)

## <span style="color: #1c1e3f;">More information on Partner Balances and Deposit Requirements</span>

### <span style="color: #1c1e3f;">Partner Balance</span>

<span style="color: #1c1e3f;">The partner balance is used in Verestro deployments together with the partner and BIN sponsor. The partner balance secures the financial liquidity of the BIN sponsor in the settlement process, while giving the partner the opportunity to manage the balances of its users.</span>

### <span style="color: #1c1e3f;">Partner Credit Balance</span>

<span style="color: #1c1e3f;">Partner Credit Balance is used to process transactions of Partner especially in cases where User Balance is hold by Verestro. Examples of such projects are many standard projects where Partner is not financial institution or e-Wallet and does not hold User Balances on its side.</span>

<span style="color: #1c1e3f;">The main reason to use Partner Credit Balance is limiting transactions performed by Partner's users to funds hold on Partner Credit Balance. Verestro and its BIN sponsors cannot risk processing transactions without having funds available so this deposit needs to be used to enable transactions in such cases.</span>

<span style="color: #1c1e3f;">Partner through Verestro Administration Panel has access to actual level of Partner Credit Balance and can reload it by sending banking transfer to BIN Sponsor cooperating with Verestro. Partner can receive notification via e-email if Partner Credit Balance goes below pre-defined level.</span>

<span style="color: #1c1e3f;">@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 Partner as p  
participant "Issuer Bank" as b  
participant "Licensed Issuer" as i  
participant Antaca as a  
actor "End users" as u  
p-&gt;b: 1. bank transfer  
b-&gt;b: 2. accounting of funds  
b--&gt;i: 3. accounting of funds  
i-&gt;a: 4. top up credit balance  
p-&gt;a: 5. top up user balance  
a-&gt;a: 6. charge credit balance  
alt  
a-&gt;a: 7. top up user balance  
a--&gt;p: 8. success  
else insufficient funds  
a--&gt;p: 9. fail (insufficient funds)  
end  
@enduml</span>

### <span style="color: #1c1e3f;">Partner Deposit Balance</span>

<span style="color: #1c1e3f;">Partner Deposit Balance is used alternatively to Partner Credit Balance. Partner Deposit Balance is used to process transactions of Partner especially in cases where User Balance is not hold by Verestro. Examples of such projects are the ones with other wallet providers that already hold user balance or project where Verestro through its partners acts as BIN Sponsor or Principal Member for Affiliate Partner.</span>

<span style="color: #1c1e3f;">The main reason to use Partner Deposit Balance is limiting transactions performed by Partner's users to funds hold on Partner Deposit Balance. Verestro and its BIN sponsors cannot risk processing transactions without having funds available so this deposit needs to be used to enable transactions in such cases.</span>

<span style="color: #1c1e3f;">Partner through Verestro Administration Panel has access to actual level of Partner Deposit Balance and can reload it by sending banking transfer to BIN Sponsor cooperating with Verestro. Partner can receive notification via e-email if Partner Deposit Balance goes below pre-defined level.</span>

<span style="color: #1c1e3f;">@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 Partner as p  
participant "Issuer Bank" as b  
participant "Licensed Issuer" as i  
participant Antaca as a  
participant "Payment cloud" as mc  
participant "POS/ATM" as pos  
actor "End users" as u  
p-&gt;b: 1. bank transfer  
b-&gt;b: 2. accounting of funds  
b--&gt;i: 3. accounting of funds  
i-&gt;a: 4. top up deposit balance  
u-&gt;pos: 5. make payment  
pos-&gt;mc: 6. payment authorization  
mc-&gt;a: 7. payment authorization  
a-&gt;a: 8. charge deposit balance  
alt Sufficient deposit funds  
a-&gt;a: 9. lock user funds  
alt Sufficient user funds  
a--&gt;mc: 10. authorization success  
mc--&gt;pos: 11. authorization success  
pos--&gt;u: 12. success  
else Insufficient user funds  
a--&gt;mc: 13. authorization fail  
mc--&gt;pos: 14. authorization fail  
pos--&gt;u: 15. fail  
end  
else Insufficient deposit funds  
a--&gt;mc: 16. authorization fail  
mc--&gt;pos: 17. authorization fail  
pos--&gt;u: 18. fail  
end  
@enduml</span>


### <span style="color: #1c1e3f;">Balance Summary in Administration Panel</span>

<span style="color: #1c1e3f;">Summary Balances are a control tool used for accounting and liquidity verification reasons. They are presented in Administration Panel in every currency used in the project.</span>

#### <span style="color: #1c1e3f;">Users</span>

<span style="color: #1c1e3f;">Presents sum of all User Balances in particular currency.</span>

#### <span style="color: #1c1e3f;">Wallet</span>

<span style="color: #1c1e3f;">Presents sum of all User Balances and all Partner Balances in particular currency.</span>

### <span style="color: #1c1e3f;">Actions</span>

#### <span style="color: #1c1e3f;">Create user balance</span>

<span style="color: #1c1e3f;">This functionality enables creation of user balance in particular currency.</span>

#### <span style="color: #1c1e3f;">Create Partner Deposit Balance or Partner Credit Balance</span>

<span style="color: #1c1e3f;">Not used in standard projects. This functional enables Partner creation of new Partner Deposit Balance or Partner Credit Balance for particular projects.</span>

#### <span style="color: #1c1e3f;">Get User Balance</span>

<span style="color: #1c1e3f;">Enables getting user balance and list of cards connected to this balance (account).</span>

#### <span style="color: #1c1e3f;">Get Partner Deposit Balance or Partner Credit Balance</span>



<span style="color: #1c1e3f;">This functional enables Partner getting information of Partner Deposit Balance or Partner Credit Balance for particular projects.</span>

#### <span style="color: #1c1e3f;">Reload Partner Deposit Balance or Partner Credit Balance</span>


<span style="color: #1c1e3f;">Not used in standard project. This functional enables Verestro to reload Partner Deposit Balance or Partner Credit Balance for particular projects. It is used by Verestro.</span>

#### <span style="color: #1c1e3f;">Reload user balance</span>

<span style="color: #1c1e3f;">This functionality enables reloading User Balance. </span>

## <span style="color: #1c1e3f;">Fee management</span>

<span style="color: #1c1e3f;">Fee Management System documentation: [Fee Management Platform | Verestro Developer Zone.](https://developer.verestro.com/books/fee-management-system)</span>

<span style="color: #1c1e3f;">It is possible to setup various fees charged to users for card issuing and account management activities. Fees can be setup through administration panel by customer or dedicated Verestro customer services. Fees can be managed in two ways:</span>

1. <span style="color: #1c1e3f;">Partner can setup own fee management system and charge users completely outside of Verestro system</span>
2. <span style="color: #1c1e3f;">Partner can use Verestro fee management module available in Administration Panel</span>

<span style="color: #1c1e3f;">There are various fees that can be configured via Administration Panel:</span>

- <span style="color: #1c1e3f;">fee for account creating</span>
- <span style="color: #1c1e3f;">fee for card creating</span>
- <span style="color: #1c1e3f;">monthly / weekly / daily fee per card</span>
- <span style="color: #1c1e3f;">POS transaction fees (fixed and percantage)</span>
- <span style="color: #1c1e3f;">eCom transaction fees</span>
- <span style="color: #1c1e3f;">ATM transaction fees</span>
- <span style="color: #1c1e3f;">Money transfer fee (IBAN Transfer)</span>
- <span style="color: #1c1e3f;">Currency conversion fees</span>
- <span style="color: #1c1e3f;">and others</span>

<span style="color: #1c1e3f;">There is implementation on-going to have conditional fees like - "*if users do 1000 eur transaction monthly we do not charge monthly fee*".</span>

<span style="color: #1c1e3f;">Please consult Verestro sales or Project Manager in case you need more information. </span>

## <span style="color: #1c1e3f;">Other functionalities</span>

<span style="color: #1c1e3f;">You can find additional methods in API descriptions:</span>

- <span style="color: #1c1e3f;">[API used for server-to-server connections](https://developer.verestro.com/books/card-issuing-and-core-banking/page/technical-documentation-4Wl),</span>
- <span style="color: #1c1e3f;">[API used for mobile application-to-server connections](https://developer.verestro.com/books/card-issuing-and-core-banking/page/technical-documentation) (Access to documentation is available after establishing partnership with Verestro),</span>
- <span style="color: #1c1e3f;">[API used for Administration Panel access (rarely used by partners)](https://developer.verestro.com/books/card-issuing-and-core-banking/page/technical-documentation-JQx) (Access to documentation is available after establishing partnership with Verestro).</span>

<span style="color: #1c1e3f;">In case of questions please let us know.</span>

# Quick start

Welcome to quick guide on Card issuing. This is a 4 step instruction on how to issue a card using Antaca service within our sandbox environment. If you don't have certificate, follow instructions [here](https://developer.verestro.com/books/connecting-to-our-services/page/connecting-to-server-to-server-apis). Once you receive your certificate, follow the steps below:

<p class="callout info">Our sandbox environment has a basic configuration allowing maintaining balances on the Verestro side, without protection for the bin-sponsor (masterbalance)</p>

#### Add user

Send **POST** request to `/lifecycle/v1/wallet` with user data. You’ll receive `id` in return - it is customer id, that will be needed in further steps.

<p class="callout danger"><span style="color: rgb(0, 0, 0);">Make sure you set **kyc = SUCCESS**. Users without finished Know Your Customer procedure cannot have cards &amp; balances.</span></p>

```bash
curl -X POST 'https://lifecycle.upaidtest.pl/lifecycle/v1/wallet' \
--cert /path/to/cert.pem \
--key /path/to/key.pem:password \
--header 'Content-Type: application/json' \
--header 'Accept: application/json' \
--header 'Issuer-Code: sandbox' \
--data-raw '{
    "firstName": "John",
    "lastName": "Doe",
    "phone": "481234567899",
    "email": "john.doe@verestro.com",
    "birthDate": "2000-01-01",
    "state": "VERIFIED",
    "kyc": "SUCCESS"
}'
```

#### Create user verification form

Send **POST** request to `/secure/customers/{customerId}/verification` using customer id you’ve received in previous step. It will create KYC verification form.

```bash
curl --location --request POST  'https://sandbox-antaca.secure-verestro.dev/secure/customers/{customerId}/verification' \
                                 --cert yourCertificate.crt:password \
                                 --key yourPrivate.key \
                                 --header 'Content-Type: multipart/form-data' \
                                 --header 'Accept: application/json' \
                                 --form 'firstName=Leon' \
                                 --form 'lastName=Bakiewicz' \
                                 --form 'imageFace=@/your/path/someFile.jpg' \
                                 --form 'street=Pieklo' \
                                 --form 'pesel=70010155587' \
                                 --form 'number=17a' \
                                 --form 'city=Lublin' \
                                 --form 'birthDate=1970-01-01' \
                                 --form 'postCode=20-128' \
                                 --form 'imageFront=@/your/path/someFile.jpg' \
                                 --form 'imageBack=@/your/path/someFile.jpg' \
                                 --form 'identityCardNo=ASD123456' \
                                 --form 'apartment=2' \
                                 --form 'documentType=passport' \
                                 --form 'country=PL' \
                                 --form 'documentExpirationDate=2025-01-30' \
                                 --form 'nationality=polish' \
                                 --form 'riskLvl=LOW'
```

#### Create user balance

<div class="wiki-content" id="bkmrk-send-post-request-to-2">Send **POST** request to `/secure/customers/{customerId}/balances`. In response you will receive the balanceId with which you will be able to generate a card in the next step  
  
</div>```bash
curl --location --request POST  'https://sandbox-antaca.secure-verestro.dev/secure/customers/{customerId}/balances' \
                                 --cert yourCertificate.crt:password \
                                 --key yourPrivate.key \
                                 --header 'Content-Type: application/json' \
                                 --header 'Accept: application/json' \
                                 --data-raw '{
                                    "currency": "EUR"
                                 }'
```

<p class="callout info">if you are using IMS service, after the balance was created, the IBAN number will be generated automatically.  
</p>

#### Create new virtual card

<div class="wiki-content" id="bkmrk-using-customerid%2C-ba">Using customerId, balanceId and configId, send **POST** request to `/secure/cards/virtual`.</div><div class="wiki-content" id="bkmrk-"></div><p class="callout info">Single ConfigID contains information about the card type (virtual/physical), currency and bin range. You will receive it at the stage of configuring your project in Verestro. In the case of sandbox, please use 0019167984</p>

```bash
curl --location --request POST  'https://sandbox-antaca.secure-verestro.dev/secure/customers/{customerId}/cards/virtual' \
                                 --cert yourCertificate.crt:password \
                                 --key yourPrivate.key \
                                 --header 'Content-Type: application/json' \
                                 --header 'Accept: application/json' \
                                 --header 'Encrypt-Response: true' \
                                 --header 'Public-Key: {enduserPublicKey}' \
                                 --data-raw '{
                                    "balanceId": "0351eb09-3ac0-4234-a4ad-0a6ad52f248b",
                                    "configId": "0019167984",
                                    "dcUserId": 1337
                                 }'
```

<div class="wiki-content" id="bkmrk-create-single-user-e"></div><div id="bkmrk--1"><div class="no-print" id="bkmrk--3"></div></div>

# Transactions Flow

A transaction in the processing flow can be in different states:

<span id="bkmrk--1" style="font-weight: normal;"><span style="border-width: initial; border-style: none; display: inline-block; overflow: hidden; width: 315px; height: 194px;">![](https://lh7-rt.googleusercontent.com/docsz/AD_4nXfSLkWnJHymJL9jAsWi4omqAZ7g6gir1uWZVGOv3KgIqTDbihc4qK9_4ytvX0pYl66_DTHwvPuZG4DX84rEkh8n4a5_YUAqXSZqvkf1luD45KVwiSRxXMtUdOG_ocplgTz0Tx4y_mevRIrVK9ySCNaujwU-?key=NS5b2Bm7DMNJWpnVqlNUoQ)</span></span>

<table border="1" id="bkmrk-status-description-a" style="border-collapse: collapse; width: 100%; height: 119.188px;"><colgroup><col style="width: 15.3858%;"></col><col style="width: 84.6142%;"></col></colgroup><thead><tr style="height: 29.7969px;"><td class="align-left" style="height: 29.7969px;">Status</td><td style="height: 29.7969px;">Description</td></tr></thead><tbody><tr style="height: 29.7969px;"><td style="height: 29.7969px;"><span id="bkmrk-authorized">AUTHORIZED</span></td><td style="height: 29.7969px;">transaction was successfully authorized. Resources on Cardholder's account are blocked, and the amount is "promised" to the merchant. At this moment none of the resources transfer was performed.

</td></tr><tr style="height: 29.7969px;"><td style="height: 29.7969px;"><span id="bkmrk-cleared">CLEARED</span></td><td style="height: 29.7969px;">transaction is settled successfully. Resources on Cardholder's account gets unblocked and transferred to Merchant's account. Block on Cardholder account becomes charge, and "promised" amount becomes income on Merchant's account.

</td></tr><tr style="height: 29.7969px;"><td style="height: 29.7969px;"><span id="bkmrk-reversed">REVERSED</span></td><td style="height: 29.7969px;">transaction was withdrawn, for example as error reported by Merchant. Block is removed and resources on the Cardholder account stay unmoved.

None of the transfers is performed.

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

Transaction processing status in Antaca system:

<table border="1" id="bkmrk-status-description-e" style="border-collapse: collapse; width: 100%; height: 925.438px;"><colgroup><col style="width: 15.3754%;"></col><col style="width: 42.3123%;"></col><col style="width: 42.3123%;"></col></colgroup><thead><tr style="height: 29.7969px;"><td style="height: 29.7969px;">**Status**</td><td style="height: 29.7969px;">Description</td><td style="height: 29.7969px;">Example - Legacy Transaction Notifier</td></tr></thead><tbody><tr style="height: 298.547px;"><td style="height: 298.547px;">SUCCESS</td><td style="height: 298.547px;">indicates that the transaction (**AUTHORIZED, CLEARED OR REVERSED**) has been successfully processed in Antaca. </td><td style="height: 298.547px;">{"status":"SUCCESS","date":"2023-01-01T06:01:39+00:00","description":"Description","transaction":{"id":"79c353a-1421-46ca-8d74-c5dca67942fe","balanceId":"79c353a-1421-46ca-8d74-c5dca67942fe","resourceId":"79c353a-1421-46ca-8d74-c5dca67942fe","resource":"card","cardId":"100","externalTransactionId":"478927492","referenceExternalTransactionId":null,"type":"POS","category":"DEBIT","amount":300,"currency":"EUR","originalAmount":1000,"originalCurrency":"POL","status":"AUTHORIZED","description":"Description","date":"2023-01-01T06:01:39+00:00","referenceExternalTransactionDate":null,"transactionData":{"mcc":"5816","merchantIdentifier":"7498274892","captureMode":"ECOM","lastFourDigits":"1000","acquirerCountry":"POL"}}}</td></tr><tr style="height: 315.344px;"><td style="height: 315.344px;">DECLINED</td><td style="height: 315.344px;">indicates that the transaction has been declined. None of the funds are transferred from Cardholder's account.

The reason for the transaction rejection (description parameter) is listed in the documentation in the table below: https://developer.verestro.com/books/card-management-system/page/your-apis-for-us#bkmrk-external-transaction

An example of a rejected transaction could be insufficient funds in the account (INSUFFICIENT\_FUNDS).

</td><td style="height: 315.344px;">{"status":"DECLINED","date":"2023-01-01T06:01:39+00:00","description":"Description","transaction":{"id":"79c353a-1421-46ca-8d74-c5dca67942fe","balanceId":"79c353a-1421-46ca-8d74-c5dca67942fe","resourceId":"79c353a-1421-46ca-8d74-c5dca67942fe","resource":"card","cardId":"100","externalTransactionId":"74892729","referenceExternalTransactionId":null,"type":"POS","category":"DEBIT","amount":70000,"currency":"EUR","originalAmount":70000,"originalCurrency":"EUR","status":"AUTHORIZED","description":"Description","date":"2023-01-01T06:01:39+00:00","referenceExternalTransactionDate":null,"transactionData":{"mcc":"2312","merchantIdentifier":"000000136 ","captureMode":"ECOM","lastFourDigits":"1000","acquirerCountry":"POL"}}}</td></tr><tr style="height: 281.75px;"><td style="height: 281.75px;">INVALID</td><td style="height: 281.75px;">indicates that the transaction can't be processed. None of the funds are transferred from Cardholder's account.</td><td style="height: 281.75px;">{"status":"INVALID","date":"2023-01-01T06:01:39+00:00","description":"Description","transaction":{"id":"79c353a-1421-46ca-8d74-c5dca67942fe","balanceId":"79c353a-1421-46ca-8d74-c5dca67942fe","resourceId":"79c353a-1421-46ca-8d74-c5dca67942fe","resource":"card","cardId":"100","externalTransactionId":"78391719","referenceExternalTransactionId":"783197893","type":"Adjustment","category":"CREDIT","amount":800,"currency":"EUR","originalAmount":null,"originalCurrency":null,"status":"REVERSED","description":"Description","date":"2023-01-01T06:01:39+00:00","referenceExternalTransactionDate":"2023-01-01T06:01:39+00:00","transactionData":\[\]}}</td></tr></tbody></table>


### Transaction Processing Cases

#### REVERSAL

Transaction reversal may occur in several cases:

- The merchant did not receive a timely response regarding the authorization status from the payment schema or there were connection problems on the payment schema which generated a timeout on the merchant's side.
- A timeout occurred on the merchant's side and the transaction could not be completed.

Below are examples of payloads from individual services: for (1.) Debit transaction and (2.) Reversal that follows:

<table border="1" id="bkmrk-legacy-transaction-n" style="border-collapse: collapse; width: 100%; height: 1617.91px;"><colgroup><col style="width: 18.4744%;"></col><col style="width: 28.6055%;"></col><col style="width: 28.0095%;"></col><col style="width: 25.0298%;"></col></colgroup><thead><tr style="height: 29.7969px;"><td style="height: 29.7969px;">  
</td><td style="height: 29.7969px;">**Legacy Transaction Notifier**</td><td style="height: 29.7969px;">**Transaction History Core**</td><td style="height: 29.7969px;">**External Balance**</td></tr></thead><tbody><tr style="height: 785.656px;"><td style="height: 785.656px;">1. Debit transaction</td><td style="height: 785.656px;">`{"status":"SUCCESS","date":"2023-01-01T10:10:57+00:00","description":"APPROVED","transaction":{"id":"24cbc777-de3f-42e2-b772-7d5427dc616e","balanceId":"16b53ddb-877c-4d6c-80c7-2d3750f24b65","resourceId":"59664b2b-8403-4205-a400-92283fa95ffe","resource":"card","cardId":"222","externalTransactionId":"177482","referenceExternalTransactionId":null,"type":"POS","category":"DEBIT","amount":2233,"currency":"EUR","originalAmount":76000,"originalCurrency":"THB","status":"AUTHORIZED","description":"Description","date":"2023-01-01T10:10:54+00:00","referenceExternalTransactionDate":null,"transactionData":{"mcc":"4121","merchantIdentifier":"12345678","captureMode":"ECOM","lastFourDigits":"1234","acquirerCountry":"THA"}}}`  
</td><td style="height: 785.656px;">`{"id":81111111,"clientTransactionId":"24cbc777-de3f-42e2-b772-7d5427dc616e","amountMinor":2233,"currency":"EUR","type":"PURCHASE","status":"AUTHORIZED","timestamp":"2023-01-01T10:10:54Z","description":"Description","comment":null,"userId":111,"userExternalId":null,"cardId":222,"externalCardId":null,"deviceId":null,"externalDeviceId":null,"paymentTokenId":null,"cardLastFourDigits":"1234","paymentTokenLastFourDigits":null,"cardBin":"555770","userPhone":"48111222333","userEmail":"example@example.com","merchantName":"Description","merchantPostalCode":null,"merchantTransactionId":"177482","transactionCountryCode":"THA","comboCardAccountType":null,"issuerResponseInformation":null,"transactionChannel":"ECOMMERCE","area":"PREPAID","ibanId":null,"deviceInstallationId":null,"employeeGroupId":null,"issuerId":null,"corporationId":null,"mcc":"4121","mccCategory":null,"balanceId":"16b53ddb-877c-4d6c-80c7-2d3750f24b65","originalAmountMinor":76000,"originalCurrency":"THB","exchangeRate":34.053252272342,"balanceMinorValueAfterTransaction":20000,"commissionMinorValue":22,"clearingTimestamp":null,"parentId":null,"ica":null,"contrahent":{"iban":null,"bic":null,"name":"Description"},"attachmentStatus":"EMPTY","incorrectAttachmentStatusReason":null,"labels":[],"categoriesInfo":null,"walletReference":null,"balanceMinorValueBeforeTransaction":null,"interchangeMinorAmount":null,"interchangeCurrency":null}`  
</td><td style="height: 785.656px;">**endpoint:**

<div class="euiDataGridRowCell__content euiDataGridRowCell__content--autoHeight eui-textBreakWord css-xst660-euiDataGridRowCell__content-autoHeight" data-datagrid-cellcontent="true"><div class="euiFlexGroup css-xwlek8-euiFlexGroup-responsive-s-flexStart-flexStart-row"><div class="euiFlexItem css-9sbomz-euiFlexItem-grow-1"><div class="kbnDocViewer__value css-0" data-test-subj="tableDocViewRow-external-url-value" id="bkmrk-transactions%2Fdebit"><span style="background-color: rgb(248, 202, 198);">**transactions/debit**</span></div></div></div></div><div class="euiDataGridRowCell__content euiDataGridRowCell__content--autoHeight eui-textBreakWord css-xst660-euiDataGridRowCell__content-autoHeight" data-datagrid-cellcontent="true"><div class="euiFlexGroup css-xwlek8-euiFlexGroup-responsive-s-flexStart-flexStart-row"><div class="euiFlexItem css-9sbomz-euiFlexItem-grow-1"><div class="kbnDocViewer__value css-0" data-test-subj="tableDocViewRow-context-value" id="bkmrk-%7B%22id%22%3A%2224cbc777-de3f"><div class="euiDataGridRowCell__content euiDataGridRowCell__content--autoHeight eui-textBreakWord css-xst660-euiDataGridRowCell__content-autoHeight" data-datagrid-cellcontent="true"><div class="euiFlexGroup css-xwlek8-euiFlexGroup-responsive-s-flexStart-flexStart-row"><div class="euiFlexItem css-9sbomz-euiFlexItem-grow-1"><div class="kbnDocViewer__value css-0" data-test-subj="tableDocViewRow-context-value" id="bkmrk-%7B%22id%22%3A%2224cbc777-de3f-1">`{"id":"24cbc777-de3f-42e2-b772-7d5427dc616e","balanceId":"16b53ddb-877c-4d6c-80c7-2d3750f24b65","resourceId":"59664b2b-8403-4205-a400-92283fa95ffe","resource":"card","transactionId":"177482","referenceTransactionId":null,"type":"pos","amount":2233,"currency":"EUR","originalAmount":76000,"originalCurrency":"THB","status":"AUTHORIZED","description":"Description","date":"2023-01-01T10:10:54+00:00","transactionData":{"mcc":"4121","merchantIdentifier":"12345678","merchantName":null,"captureMode":"ECOM","cardId":"222","lastFourDigits":"1234","acquirerCountry":"THA","mdesDigitizedWalletId":null,"cashbackPosCurrencyCode":null,"cashbackPosAmount":"0","lastFourDpan":null,"adjustmentReasonDescription":null,"retrievalReferenceNumber":"443322110088"}}`</div></div></div></div></div></div></div></div></td></tr><tr style="height: 802.453px;"><td style="height: 802.453px;">2. Reverse transaction</td><td style="height: 802.453px;"><div class="euiDataGridRowCell__content euiDataGridRowCell__content--autoHeight eui-textBreakWord css-xst660-euiDataGridRowCell__content-autoHeight" data-datagrid-cellcontent="true"><div class="euiFlexGroup css-xwlek8-euiFlexGroup-responsive-s-flexStart-flexStart-row"><div class="euiFlexItem css-9sbomz-euiFlexItem-grow-1"><div class="kbnDocViewer__value css-0" data-test-subj="tableDocViewRow-context-value" id="bkmrk-%7B%22status%22%3A%22success%22%2C">`{"status":"SUCCESS","date":"2023-01-01T11:50:10+00:00","description":"APPROVED","transaction":{"id":"24cbc777-de3f-42e2-b772-7d5427dc616e","balanceId":"16b53ddb-877c-4d6c-80c7-2d3750f24b65","resourceId":"59664b2b-8403-4205-a400-92283fa95ffe","resource":"card","cardId":"222","externalTransactionId":"2678823","referenceExternalTransactionId":"177482","type":"Adjustment","category":"CREDIT","amount":2233,"currency":"EUR","originalAmount":null,"originalCurrency":null,"status":"REVERSED","description":"Description","date":"2023-01-01T13:43:30+00:00","referenceExternalTransactionDate":"2023-01-01T10:10:54+00:00","transactionData":[]}}`</div></div></div></div></td><td style="height: 802.453px;"><div class="euiDataGridRowCell__content euiDataGridRowCell__content--autoHeight eui-textBreakWord css-xst660-euiDataGridRowCell__content-autoHeight" data-datagrid-cellcontent="true"><div class="euiFlexGroup css-xwlek8-euiFlexGroup-responsive-s-flexStart-flexStart-row"><div class="euiFlexItem css-9sbomz-euiFlexItem-grow-1"><div class="kbnDocViewer__value css-0" data-test-subj="tableDocViewRow-context-value" id="bkmrk-%7B%22id%22%3A9123423%2C%22clien">`{"id":81111111,"clientTransactionId":"24cbc777-de3f-42e2-b772-7d5427dc616e","amountMinor":0,"currency":"EUR","type":"PURCHASE","status":"REVERSED","timestamp":"2023-01-01T10:10:54Z","description":"Description","comment":null,"userId":111,"userExternalId":null,"cardId":222,"externalCardId":null,"deviceId":null,"externalDeviceId":null,"paymentTokenId":null,"cardLastFourDigits":"1234","paymentTokenLastFourDigits":null,"cardBin":"555770","userPhone":"48111222333","userEmail":"example@example.com","merchantName":"Description","merchantPostalCode":null,"merchantTransactionId":"2678823","transactionCountryCode":"THA","comboCardAccountType":null,"issuerResponseInformation":null,"transactionChannel":"ECOMMERCE","area":"PREPAID","ibanId":null,"deviceInstallationId":null,"employeeGroupId":null,"issuerId":null,"corporationId":null,"mcc":"4121","mccCategory":null,"balanceId":"16b53ddb-877c-4d6c-80c7-2d3750f24b65","originalAmountMinor":76000,"originalCurrency":"THB","exchangeRate":34.053252272342,"balanceMinorValueAfterTransaction":20000,"commissionMinorValue":22,"clearingTimestamp":null,"parentId":null,"ica":null,"contrahent":{"iban":null,"bic":null,"name":"Description"},"attachmentStatus":"EMPTY","incorrectAttachmentStatusReason":null,"labels":[],"categoriesInfo":null,"walletReference":null,"balanceMinorValueBeforeTransaction":null,"interchangeMinorAmount":null,"interchangeCurrency":null}`</div></div></div></div></td><td style="height: 802.453px;">**endpoint:** <div class="euiDataGridRowCell__content euiDataGridRowCell__content--autoHeight eui-textBreakWord css-xst660-euiDataGridRowCell__content-autoHeight" data-datagrid-cellcontent="true"><div class="euiFlexGroup css-xwlek8-euiFlexGroup-responsive-s-flexStart-flexStart-row"><div class="euiFlexItem css-9sbomz-euiFlexItem-grow-1"><div class="kbnDocViewer__value css-0" data-test-subj="tableDocViewRow-external-url-value" id="bkmrk-transactions%2Fforce-c"><span style="background-color: rgb(248, 202, 198);">**transactions/force-credit**</span></div></div></div><div class="kbnDocViewer__value css-0" data-test-subj="tableDocViewRow-external-url-value"><div class="euiDataGridRowCell__content euiDataGridRowCell__content--autoHeight eui-textBreakWord css-xst660-euiDataGridRowCell__content-autoHeight" data-datagrid-cellcontent="true"><div class="euiFlexGroup css-xwlek8-euiFlexGroup-responsive-s-flexStart-flexStart-row"><div class="euiFlexItem css-9sbomz-euiFlexItem-grow-1"><div class="kbnDocViewer__value css-0" data-test-subj="tableDocViewRow-context-value" id="bkmrk-%7B%22id%22%3A%2224cbc777-de3f-2"><div class="euiDataGridRowCell__content euiDataGridRowCell__content--autoHeight eui-textBreakWord css-xst660-euiDataGridRowCell__content-autoHeight" data-datagrid-cellcontent="true"><div class="euiFlexGroup css-xwlek8-euiFlexGroup-responsive-s-flexStart-flexStart-row"><div class="euiFlexItem css-9sbomz-euiFlexItem-grow-1"><div class="kbnDocViewer__value css-0" data-test-subj="tableDocViewRow-context-value" id="bkmrk-%7B%22id%22%3A%2224cbc777-de3f-3">`{"id":"24cbc777-de3f-42e2-b772-7d5427dc616e","balanceId":"16b53ddb-877c-4d6c-80c7-2d3750f24b65","resourceId":"59664b2b-8403-4205-a400-92283fa95ffe","resource":"card","transactionId":"2678823","referenceTransactionId":"177482","type":"adjustment","amount":2233,"currency":"EUR","originalAmount":null,"originalCurrency":null,"status":"REVERSED","description":"Description","date":"2023-01-01T13:43:30+00:00","transactionData":{"mcc":null,"merchantIdentifier":null,"merchantName":null,"captureMode":null,"cardId":"222","lastFourDigits":null,"acquirerCountry":null,"mdesDigitizedWalletId":null,"cashbackPosCurrencyCode":null,"cashbackPosAmount":null,"lastFourDpan":null,"adjustmentReasonDescription":null,"retrievalReferenceNumber":null}}`</div></div></div></div></div></div></div></div></div></div></td></tr></tbody></table>

##### Adjustments

Some transactions add funds instead of debiting accounts. Antaca reports such transactions with type: **Adjustment**.

Transactions of this type can be:

<table border="1" id="bkmrk-adjustment-transacti" style="border-collapse: collapse; width: 100%; height: 106.188px;"><colgroup><col style="width: 99.881%;"></col></colgroup><tbody><tr style="height: 29.7969px;"><td style="height: 29.7969px;">adjustment transactions related to the debit transaction but reducing or increasing the final debit amount before clearing </td></tr><tr style="height: 46.5938px;"><td style="height: 46.5938px;">adjustment transactions related (or not) to the another already cleared transaction, fe refund or offline transaction. </td></tr><tr style="height: 29.7969px;"><td style="height: 29.7969px;">adjustment for transactions with currency conversion - when the acquirer let know to clear transaction to the card network, the previously determined FX added to the transaction amount is deposited into the company balance</td></tr></tbody></table>

Example of adjustment - External Transaction Notifier:

*{"status":"SUCCESS","date":"2023-01-01T06:01:39+00:00","description":"Description","transaction":{"id":"e79c353a-1421-46ca-8d74-c5dca67942fe","balanceId":"e79c353a-1421-46ca-8d74-c5dca67942fe","resourceId":"e79c353a-1421-46ca-8d74-c5dca67942fe","resource":"card","cardId":"22","externalTransactionId":"928562957345","referenceExternalTransactionId":"7489279234","type":"Adjustment","category":"CREDIT","amount":100,"currency":"EUR","originalAmount":25000,"originalCurrency":"PLN","status":"AUTHORIZED","description":"\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*","date":"2023-01-01T06:01:39+00:00","referenceExternalTransactionDate":"2023-01-01T06:01:39+00:00","transactionData":{"mcc":"9311","merchantIdentifier":"7489274","captureMode":"ADJ","lastFourDigits":"1000"}}}*

# Technical documentation

## Server-server connection

@swagger="https://s3.verestro.dev/antaca-public/doc/api-docs-secure.json?AWSAccessKeyId=antaca-public&amp;Signature=W4keqALC7%2FYhlkLw%2Bpq40XctF7w%3D&amp;Expires=1863837436"

# Your APIs for us - External Balance

### External Balance 

<div bis_size="{"x":150,"y":95,"w":840,"h":89,"abs_x":500,"abs_y":308}" id="bkmrk-external-balance-api">External Balance API is used, when client wishes to keep end users’ balances on their side. Thanks to this API, a client who maintains his clients accounts or has his own business logic affecting transaction authorizations has the opportunity to expand his offer with various payment instruments offered by Verestro, including payment cards, bank transfers, transfers to a phone number and others. Workflow is reversed when using External Balance API - Antaca is sending request to server on client’s side.</div><div bis_size="{"x":150,"y":185,"w":840,"h":22,"abs_x":500,"abs_y":398}" id="bkmrk--9">  
</div>#### Features

<div bis_size="{"x":150,"y":268,"w":840,"h":22,"abs_x":500,"abs_y":481}" id="bkmrk-%E2%80%A2-linking-customer-b">• linking (connecting) balance with customer in Antaca,</div><div bis_size="{"x":150,"y":290,"w":840,"h":22,"abs_x":500,"abs_y":503}" id="bkmrk-%E2%80%A2-getting-list-of-ba">• getting list of balances,</div><div bis_size="{"x":150,"y":312,"w":840,"h":22,"abs_x":500,"abs_y":525}" id="bkmrk-%E2%80%A2-deleting-balance-l">• deleting balance link (connection),</div><div bis_size="{"x":150,"y":335,"w":840,"h":22,"abs_x":500,"abs_y":548}" id="bkmrk-%E2%80%A2-handling-transacti">• handling transactions,</div><div bis_size="{"x":150,"y":357,"w":840,"h":22,"abs_x":500,"abs_y":570}" id="bkmrk-%E2%80%A2-updating-transacti">• updating transaction status.</div><div bis_size="{"x":150,"y":380,"w":840,"h":22,"abs_x":500,"abs_y":593}" id="bkmrk--10">  
</div>#### Purpose and scope

<div bis_size="{"x":150,"y":462,"w":840,"h":22,"abs_x":500,"abs_y":675}" id="bkmrk-this-guide-provides-">This guide provides an instruction and case study for using Extrnal Balance API. Document covers following topics:</div><div bis_size="{"x":150,"y":485,"w":840,"h":22,"abs_x":500,"abs_y":698}" id="bkmrk-%E2%80%A2-how-to-use-externa">• how to use External Balance API,</div><div bis_size="{"x":150,"y":507,"w":840,"h":22,"abs_x":500,"abs_y":720}" id="bkmrk-%E2%80%A2-transaction-flow%2C">• transaction flow,</div><div bis_size="{"x":150,"y":530,"w":840,"h":22,"abs_x":500,"abs_y":743}" id="bkmrk-%E2%80%A2-how-clearings-are-">• how clearings are handled,</div><div bis_size="{"x":150,"y":552,"w":840,"h":22,"abs_x":500,"abs_y":765}" id="bkmrk-%E2%80%A2-use-cases-study.">• use cases study.</div>#### Terminology

<div bis_size="{"x":150,"y":635,"w":840,"h":22,"abs_x":500,"abs_y":848}" id="bkmrk-user---end-user-trig">User - The end user for whom a balance is maintained along with the associated payment instruments.</div><div bis_size="{"x":150,"y":657,"w":840,"h":22,"abs_x":500,"abs_y":870}" id="bkmrk-server---api-exposed">Server - API exposed by Antaca’s client.</div><div bis_size="{"x":150,"y":680,"w":840,"h":22,"abs_x":500,"abs_y":893}" id="bkmrk-client---company-usi">Client - company using Antaca services.</div><div bis_size="{"x":150,"y":702,"w":840,"h":0,"abs_x":500,"abs_y":915}" id="bkmrk-"></div><p class="callout info">To use external balance you must have Banking License or Payment Institution License. Additionally if you don't directly own BIN range, total sum of transactions of your users will be limited by deposit called "Master Balance".  
</p>

### Security

To set secured server-server connection between our services Verestro requires a similar connection as in the case of client to Verestro communication based on the x509 certificate.  
In the first step, Verestro will send to the client a CSR for the dev and production environments.  
The next step is for the client to sign the CSR and send the certificate back to Verestro along with the base URL for the methods listed below. Verestro will authorize itself with each request with a certificate, which should be checked on the client side.

### Idempotency Key

With some requests additional header X-Idempotency-Key could be send. This header contain unique random id allowing to identify single request.  
If client send this header, operation should be triggered only once and for any further request with this key, response should be identical - in most cases, returned from cache.

**example headers:**

```
X-Idempotency-Key: 20e87975-dbfb-4c95-b239-169516c0b707
```

#### External Balance API

Below you will find a list of endpoints that you should implement on your server side. Please pay special attention to the appropriate security of our connection, the syntax of requests that you can expect from the Verestro side, idempotency and the exact way in which you should respond to each request.

##### Process of linking balances

<div bis_size="{"x":150,"y":1456,"w":840,"h":89,"abs_x":500,"abs_y":1669}" id="bkmrk-after-establishing-s">After establishing secure connection, the client should create balance aliases for their users on the Antaca side. For identifiers created in this way, Antaca will be able to generate payment cards and process transactions. When the client creates a user on the Verestro side with confirmed KYC status and then orders the creation of a balance for him, this API will forward the request to link the balance to the user. The linking process is presented in the diagram below.</div><div bis_size="{"x":150,"y":1545,"w":840,"h":0,"abs_x":500,"abs_y":1758}" id="bkmrk--1"></div><div bis_size="{"x":150,"y":1545,"w":840,"h":0,"abs_x":500,"abs_y":1758}" id="bkmrk--11"></div>@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 "Client server" as cs  
participant Antaca as a  
participant Lifecycle as lc  
cs-&gt;lc: 1. create user by POST /wallet (firstName, lastName, phone, email)  
lc--&gt;cs: 2. userId  
alt With own KYC process  
cs-&gt;lc: 3. update KYC status by PUT /user (KYC)  
else With Verestro KYC process  
cs-&gt;a: 4. send KYC data by /register (user data with documents and selfie)  
a-&gt;a: 5. process KYC  
a-&gt;lc: 6. update KYC status  
end  
alt With automatic balance creation  
lc--&gt;a: 7. event about the new user with KYC  
a-&gt;a: 8. create a balance in the default currency  
a-&gt;cs: 10. link balance (userId, balanceId, currency)  
cs--&gt;a: 11. 204 (OK)  
else Every time with create a balance  
cs-&gt;a: 9. create balance by POST /balance (userId, currency)  
a-&gt;cs: 10. link balance (userId, balanceId, currency)  
cs--&gt;a: 11. 204 (OK)  
a--&gt;cs: 12. 201 balance created  
end

@enduml


<div bis_size="{"x":150,"y":2580,"w":840,"h":22,"abs_x":500,"abs_y":2793}" id="bkmrk-once-balances-are-li">Once balances are linked, Antaca can:</div>- send a GET requests to retrieve information about specific balance. Using user ID and/or balance ID, Antaca can obtain information about balance currency and money amount.
- send a GET requests to retrieve information about all user’s balances. Using only user ID Antaca can retrieve list of users balances.
- delete link between balances

<div bis_size="{"x":150,"y":2738,"w":840,"h":22,"abs_x":500,"abs_y":2951}" id="bkmrk-when-user%E2%80%99s-balance-">When user’s balance is equal to 0, it can be unlinked and deleted on Antaca side.</div>
<p class="callout info">**Remember to avoid billing problems** Deleting a balance is only possible when its status is 0. This also applies to situations in which a user with at least one balance is deleted.  
</p>

<div bis_size="{"x":150,"y":2886,"w":840,"h":0,"abs_x":500,"abs_y":3099}" id="bkmrk--12"></div><div bis_size="{"x":150,"y":2886,"w":840,"h":0,"abs_x":500,"abs_y":3099}" id="bkmrk--13"></div>##### Transaction processing 

<div bis_size="{"x":150,"y":2923,"w":840,"h":67,"abs_x":500,"abs_y":3136}" id="bkmrk-all-transaction-requ">When a balance is created and linked for a given user with verified KYC, from that moment the client-side API should be ready to accept transactions related to it. Depending on the payment instrument used, the data transferred in the transaction object may be different, but will always refer to a specific balance.</div><div bis_size="{"x":150,"y":2990,"w":840,"h":0,"abs_x":500,"abs_y":3203}" id="bkmrk--21"></div><p class="callout info">**Remember to avoid communication errors** Verestro servers attach an X-Idempotency-Key to each request in the header. This header contains a unique ID for each request to ensure idempotence. Each request with a unique identifier in this header should be processed only once on the client side and the response to it should be identical - in most cases, returned from cache</p>

<div bis_size="{"x":150,"y":3127,"w":840,"h":0,"abs_x":500,"abs_y":3340}" id="bkmrk--22"><div bis_size="{"x":150,"y":3127,"w":840,"h":0,"abs_x":500,"abs_y":3340}" id="bkmrk--67"></div><div bis_size="{"x":150,"y":3127,"w":840,"h":0,"abs_x":500,"abs_y":3340}" id="bkmrk--68"></div></div><div bis_size="{"x":150,"y":3127,"w":840,"h":0,"abs_x":500,"abs_y":3340}" id="bkmrk--23"></div>example:

```
curl POST "https://server-domain.com/transactions/debit"
--header "X-Idempotency-Key: 21aa0c2a-5554-4071-bd48-b9c64a0b6270"
```

<div bis_size="{"x":150,"y":3240,"w":840,"h":0,"abs_x":500,"abs_y":3453}" class="code panel pdl conf-macro output-block" data-hasbody="true" data-macro-name="code" id="bkmrk--24"><div bis_size="{"x":150,"y":3240,"w":840,"h":0,"abs_x":500,"abs_y":3453}" class="codeContent panelContent pdl"><div bis_size="{"x":150,"y":3240,"w":840,"h":0,"abs_x":500,"abs_y":3453}" class="syntaxhighlighter sh-confluence nogutter  php" id="bkmrk--69"></div></div></div>##### Transaction object

<div bis_size="{"x":150,"y":3277,"w":840,"h":22,"abs_x":500,"abs_y":3490}" id="bkmrk-each-transaction-obj">Each transaction request contains following data:</div>```
{
    "id": "b4f534ef-77c2-4f16-ab4d-496806a76fb6",
    "balanceId": "b334b384-328c-11ed-a261-0242ac120002",
    "resourceId": "9d673932-3291-11ed-a261-0242ac120002",
    "resource": "card",
    "transactionId": "ab3d89e4-3291-11ed-a261-0242ac120002",
    "referenceTransactionId": "b759931c-3291-11ed-a261-0242ac120002",
    "type": "POS",
    "amount": 10000,
    "currency": "PLN",
    "originalAmount": 10000,
    "originalCurrency": "PLN",
    "status": "AUTHORIZED",
    "description": "transaction description",
    "date": "2020-08-17T18:43:42+00:00",
    "transactionData": {
        "mcc": "5942",
        "merchantIdentifier": "003060300000005",
        "merchantName": "Book store",
        "captureMode": "NFC",
        "lastFourDigits": "4560",
        "acquirerCountry": "POL",
        "mdesDigitizedWalletId": "Google Pay",
        "cashbackPosCurrencyCode": "PLN",
        "cashbackPosAmount": 10000,
        "lastFourDpan": "7890",
        "adjustmentReasonDescription": "REFUND",
        "retrievalReferenceNumber": "749248185012",
        "cardId": "6876783"
    }
}
```

<div bis_size="{"x":150,"y":3927,"w":840,"h":22,"abs_x":500,"abs_y":4140}" id="bkmrk-parameters%3A-2">**Parameters:**  
</div><div bis_size="{"x":150,"y":3954,"w":840,"h":949,"abs_x":500,"abs_y":4167}" id="bkmrk-parameter-required-d-2"><table class="wrapped confluenceTable" style="width: 100%; height: 934.602px;"><tbody><tr style="height: 29.7969px;"><th class="confluenceTh mceSelected" style="width: 26.6996%; height: 29.7969px;">Parameter</th><th class="confluenceTh mceSelected" style="width: 9.2707%; height: 29.7969px;">Required</th><th class="confluenceTh mceSelected" style="width: 33.3745%; height: 29.7969px;">Description</th><th class="confluenceTh mceSelected" style="width: 30.7787%; height: 29.7969px;">Allowed values</th></tr><tr style="height: 63.3906px;"><td style="width: 26.6996%; height: 63.3906px;">id

</td><td style="width: 9.2707%; height: 63.3906px;">TRUE</td><td style="width: 33.3745%; height: 63.3906px;">Unique identifier of the transaction in UUID format  
</td><td style="width: 30.7787%; height: 63.3906px;">any value in UUID v4 format, eg. ddb55ff9-11ca-4621-9129-81f939e66011  
</td></tr><tr style="height: 48.9141px;"><td class="confluenceTd mceSelected" style="width: 26.6996%; height: 48.9141px;">balanceId

</td><td class="confluenceTd mceSelected" style="width: 9.2707%; height: 48.9141px;">TRUE</td><td class="confluenceTd mceSelected" style="width: 33.3745%; height: 48.9141px;">Unique user balance identifier</td><td class="confluenceTd mceSelected" style="width: 30.7787%; height: 48.9141px;">any string value (recommended uuid v4)</td></tr><tr style="height: 46.5938px;"><td class="confluenceTd mceSelected" style="width: 26.6996%; height: 46.5938px;">resourceId</td><td class="confluenceTd mceSelected" style="width: 9.2707%; height: 46.5938px;">TRUE</td><td class="confluenceTd mceSelected" style="width: 33.3745%; height: 46.5938px;">Unique resource identifier</td><td class="confluenceTd mceSelected" style="width: 30.7787%; height: 46.5938px;">any string value (recommended uuid v4)</td></tr><tr style="height: 35.0625px;"><td class="confluenceTd mceSelected" style="width: 26.6996%; height: 35.0625px;">resource

</td><td class="confluenceTd mceSelected" style="width: 9.2707%; height: 35.0625px;">TRUE</td><td class="confluenceTd mceSelected" style="width: 33.3745%; height: 35.0625px;">Name of a resource.</td><td class="confluenceTd mceSelected" style="width: 30.7787%; height: 35.0625px;">balance, card</td></tr><tr style="height: 169.438px;"><td class="confluenceTd mceSelected" style="width: 26.6996%; height: 169.438px;">transactionId

</td><td class="confluenceTd mceSelected" style="width: 9.2707%; height: 169.438px;">TRUE</td><td class="confluenceTd mceSelected" style="width: 33.3745%; height: 169.438px;">Transaction identifier obtained from card network or generated on client side using the method to generate transaction in Antaca.

**IMPORTANT: this id may not be unique - it is generated by different systems**

</td><td class="confluenceTd mceSelected" style="width: 30.7787%; height: 169.438px;">any string value </td></tr><tr style="height: 48.9141px;"><td class="confluenceTd mceSelected" style="width: 26.6996%; height: 48.9141px;">referenceTransactionId

</td><td class="confluenceTd mceSelected" style="width: 9.2707%; height: 48.9141px;">FALSE</td><td class="confluenceTd mceSelected" style="width: 33.3745%; height: 48.9141px;">Id of previous transaction to with current request relates</td><td class="confluenceTd mceSelected" style="width: 30.7787%; height: 48.9141px;">any string value (recommended uuid v4)</td></tr><tr style="height: 96.9844px;"><td class="confluenceTd mceSelected" style="width: 26.6996%; height: 96.9844px;">type

</td><td class="confluenceTd mceSelected" style="width: 9.2707%; height: 96.9844px;">TRUE</td><td class="confluenceTd mceSelected" style="width: 33.3745%; height: 96.9844px;">Type of transaction</td><td class="confluenceTd mceSelected" style="width: 30.7787%; height: 96.9844px;">cashback, loan, payment, topup, commission, fee, funding, interest, withdrawal, pos, atm, cashback\_at\_pos, adjustment</td></tr><tr style="height: 48.9141px;"><td class="confluenceTd mceSelected" style="width: 26.6996%; height: 48.9141px;">amount

</td><td class="confluenceTd mceSelected" style="width: 9.2707%; height: 48.9141px;">TRUE</td><td class="confluenceTd mceSelected" style="width: 33.3745%; height: 48.9141px;">Transaction value in gross (minor value)

For example: 12.34 EUR will be sent as 1234

</td><td class="confluenceTd mceSelected" style="width: 30.7787%; height: 48.9141px;">integer value</td></tr><tr style="height: 35.0625px;"><td class="confluenceTd mceSelected" style="width: 26.6996%; height: 35.0625px;">currency

</td><td class="confluenceTd mceSelected" style="width: 9.2707%; height: 35.0625px;">TRUE</td><td class="confluenceTd mceSelected" style="width: 33.3745%; height: 35.0625px;">Currency 3-letters code in ISO 4217</td><td class="confluenceTd mceSelected" style="width: 30.7787%; height: 35.0625px;">ISO 4217 3-letter code</td></tr><tr style="height: 80.1875px;"><td class="confluenceTd mceSelected" style="width: 26.6996%; height: 80.1875px;">originalAmount

</td><td class="confluenceTd mceSelected" style="width: 9.2707%; height: 80.1875px;">FALSE</td><td class="confluenceTd mceSelected" style="width: 33.3745%; height: 80.1875px;">Original transaction value in gross (minor value)

For example: 12.34 EUR will be sent as 1234

</td><td class="confluenceTd mceSelected" style="width: 30.7787%; height: 80.1875px;">integer value</td></tr><tr style="height: 48.9141px;"><td class="confluenceTd mceSelected" style="width: 26.6996%; height: 48.9141px;">originalCurrency

</td><td class="confluenceTd mceSelected" style="width: 9.2707%; height: 48.9141px;">FALSE</td><td class="confluenceTd mceSelected" style="width: 33.3745%; height: 48.9141px;">Original currency 3-letters code in ISO 4217</td><td class="confluenceTd mceSelected" style="width: 30.7787%; height: 48.9141px;">ISO 4217 3-letter code</td></tr><tr style="height: 48.9141px;"><td class="confluenceTd mceSelected" style="width: 26.6996%; height: 48.9141px;">status

</td><td class="confluenceTd mceSelected" style="width: 9.2707%; height: 48.9141px;">TRUE</td><td class="confluenceTd mceSelected" style="width: 33.3745%; height: 48.9141px;">Transaction status</td><td class="confluenceTd mceSelected" style="width: 30.7787%; height: 48.9141px;">AUTHORIZED, CLEARED, REVERSED</td></tr><tr style="height: 35.0625px;"><td class="confluenceTd mceSelected" style="width: 26.6996%; height: 35.0625px;">description

</td><td class="confluenceTd mceSelected" style="width: 9.2707%; height: 35.0625px;">TRUE</td><td class="confluenceTd mceSelected" style="width: 33.3745%; height: 35.0625px;">Transaction description</td><td class="confluenceTd mceSelected" style="width: 30.7787%; height: 35.0625px;">any string value</td></tr><tr style="height: 35.0625px;"><td class="confluenceTd mceSelected" style="width: 26.6996%; height: 35.0625px;">date

</td><td class="confluenceTd mceSelected" style="width: 9.2707%; height: 35.0625px;">TRUE</td><td class="confluenceTd mceSelected" style="width: 33.3745%; height: 35.0625px;">Date of transaction in UTC</td><td class="confluenceTd mceSelected" style="width: 30.7787%; height: 35.0625px;">date in UTC</td></tr><tr style="height: 63.3906px;"><td class="confluenceTd mceSelected" style="width: 26.6996%; height: 63.3906px;">transactionData</td><td class="confluenceTd mceSelected" style="width: 9.2707%; height: 63.3906px;">FALSE</td><td class="confluenceTd mceSelected" style="width: 33.3745%; height: 63.3906px;">Additional transaction data. This object presents detailed data depending on the transaction type</td><td class="confluenceTd mceSelected" style="width: 30.7787%; height: 63.3906px;">This object is described below</td></tr></tbody></table>

</div><div bis_size="{"x":150,"y":4923,"w":840,"h":22,"abs_x":500,"abs_y":5136}" id="bkmrk--25">**TransactionData data object:**</div><div bis_size="{"x":150,"y":4949,"w":840,"h":680,"abs_x":500,"abs_y":5162}" id="bkmrk-parameter-required-d-3"><table class="wrapped confluenceTable tablesorter tablesorter-default stickyTableHeaders" role="grid" style="width: 100%; height: 710.11px;"><colgroup><col style="width: 25.3874%;"></col><col style="width: 11.7998%;"></col><col style="width: 23.7187%;"></col><col style="width: 38.975%;"></col></colgroup><thead class="tableFloatingHeaderOriginal"><tr class="tablesorter-headerRow" role="row" style="height: 29.7969px;"><th aria-disabled="false" aria-label="Parameter: No sort applied, activate to apply an ascending sort" aria-sort="none" class="confluenceTh tablesorter-header sortableHeader tablesorter-headerUnSorted" data-column="0" role="columnheader" scope="col" style="height: 29.7969px;" tabindex="0"><div bis_size="{"x":158,"y":4956,"w":196,"h":16,"abs_x":508,"abs_y":5169}" class="tablesorter-header-inner">Name</div></th><th aria-disabled="false" aria-label="required: No sort applied, activate to apply an ascending sort" aria-sort="none" class="confluenceTh tablesorter-header sortableHeader tablesorter-headerUnSorted" data-column="1" role="columnheader" scope="col" style="height: 29.7969px;" tabindex="0"><div bis_size="{"x":372,"y":4956,"w":82,"h":16,"abs_x":722,"abs_y":5169}" class="tablesorter-header-inner">Required</div></th><th aria-disabled="false" aria-label="description: No sort applied, activate to apply an ascending sort" aria-sort="none" class="confluenceTh tablesorter-header sortableHeader tablesorter-headerUnSorted" data-column="2" role="columnheader" scope="col" style="height: 29.7969px;" tabindex="0"><div bis_size="{"x":471,"y":4956,"w":182,"h":16,"abs_x":821,"abs_y":5169}" class="tablesorter-header-inner">Description</div></th><th aria-disabled="false" aria-label="allowed values: No sort applied, activate to apply an ascending sort" aria-sort="none" class="confluenceTh tablesorter-header sortableHeader tablesorter-headerUnSorted" data-column="3" role="columnheader" scope="col" style="height: 29.7969px;" tabindex="0"><div bis_size="{"x":670,"y":4956,"w":310,"h":16,"abs_x":1020,"abs_y":5169}" class="tablesorter-header-inner">Allowed values</div></th></tr></thead><tbody aria-live="polite" aria-relevant="all"><tr role="row" style="height: 74.5938px;"><td class="confluenceTd" style="height: 74.5938px;">mcc</td><td class="confluenceTd" style="height: 74.5938px;">FALSE</td><td class="confluenceTd" style="height: 74.5938px;">Merchant category code</td><td class="confluenceTd" style="height: 74.5938px;">any mcc value, eg. can be found here: [https://global.alipay.com/docs/ac/files/mcclist](https://global.alipay.com/docs/ac/files/mcclist)</td></tr><tr role="row" style="height: 46.5938px;"><td class="confluenceTd" style="height: 46.5938px;">merchantIdentifier</td><td class="confluenceTd" style="height: 46.5938px;">FALSE</td><td class="confluenceTd" style="height: 46.5938px;">The merchant identifier for the transaction</td><td class="confluenceTd" style="height: 46.5938px;">  
</td></tr><tr role="row" style="height: 29.7969px;"><td class="confluenceTd" style="height: 29.7969px;">merchantName</td><td class="confluenceTd" style="height: 29.7969px;">FALSE</td><td class="confluenceTd" style="height: 29.7969px;">Name of merchant</td><td class="confluenceTd" style="height: 29.7969px;">  
</td></tr><tr role="row" style="height: 46.5938px;"><td class="confluenceTd" style="height: 46.5938px;">captureMode</td><td class="confluenceTd" style="height: 46.5938px;">FALSE</td><td class="confluenceTd" style="height: 46.5938px;">Capture mode</td><td class="confluenceTd" style="height: 46.5938px;">magstripe, manual, emv, on behalf (EMV), nfc, ecommerce, adj</td></tr><tr role="row" style="height: 29.7969px;"><td class="confluenceTd" style="height: 29.7969px;">lastFourDigits</td><td class="confluenceTd" style="height: 29.7969px;">FALSE</td><td class="confluenceTd" style="height: 29.7969px;">Last 4 digits of card</td><td class="confluenceTd" style="height: 29.7969px;">  
</td></tr><tr role="row" style="height: 29.7969px;"><td class="confluenceTd" style="height: 29.7969px;">acquirerCountry</td><td class="confluenceTd" style="height: 29.7969px;">FALSE</td><td class="confluenceTd" style="height: 29.7969px;">Country of acquirer</td><td class="confluenceTd" style="height: 29.7969px;">alpha-3</td></tr><tr role="row" style="height: 63.3906px;"><td class="confluenceTd" style="height: 63.3906px;">mdesDigitizedWalletId</td><td class="confluenceTd" style="height: 63.3906px;">FALSE</td><td class="confluenceTd" style="height: 63.3906px;">The Wallet ID (Wallet Reference) used to digitize the card.</td><td class="confluenceTd" style="height: 63.3906px;">m4m, google pay, samsung pay, apple pay</td></tr><tr role="row" style="height: 63.3906px;"><td class="confluenceTd" style="height: 63.3906px;">cashbackPosCurrencyCode</td><td class="confluenceTd" style="height: 63.3906px;">FALSE</td><td class="confluenceTd" style="height: 63.3906px;">Represents the currency code of the cashback amount</td><td class="confluenceTd" style="height: 63.3906px;">ISO 4217 3-letter code</td></tr><tr role="row" style="height: 46.5938px;"><td class="confluenceTd" style="height: 46.5938px;">cashbackPosAmount</td><td class="confluenceTd" style="height: 46.5938px;">FALSE</td><td class="confluenceTd" style="height: 46.5938px;">Displays the actual cashback amount</td><td class="confluenceTd" style="height: 46.5938px;">integer value in gross</td></tr><tr style="height: 63.3906px;"><td style="height: 63.3906px;">lastFourDpan</td><td style="height: 63.3906px;">FALSE</td><td style="height: 63.3906px;">Last 4 digits of Device Primary Account Number (tokenized PAN)</td><td style="height: 63.3906px;">  
</td></tr><tr style="height: 29.7969px;"><td style="height: 29.7969px;">adjustmentReasonDescription</td><td style="height: 29.7969px;">FALSE  
</td><td style="height: 29.7969px;">Reason for adjustment  
</td><td style="height: 29.7969px;">eg. REFUND, MONEY\_SEND, CHARGEBACK  
</td></tr><tr style="height: 46.5938px;"><td style="height: 46.5938px;">retrievalReferenceNumber</td><td style="height: 46.5938px;">FALSE</td><td style="height: 46.5938px;">12-digit number generated to record each transaction</td><td style="height: 46.5938px;">  
</td></tr><tr style="height: 80.1875px;"><td style="height: 80.1875px;">cardId</td><td style="height: 80.1875px;">FALSE</td><td style="height: 80.1875px;">The card identifier in string format. This value could be used to communicate with the Antaca services.</td><td style="height: 80.1875px;">any string value. Mostly it should be eg. "1234" but it can change in the future and become UUID format.  
</td></tr></tbody></table>

</div><div bis_size="{"x":150,"y":5649,"w":840,"h":0,"abs_x":500,"abs_y":5862}" id="bkmrk--26"></div><div bis_size="{"x":150,"y":5649,"w":840,"h":0,"abs_x":500,"abs_y":5862}" id="bkmrk--27"></div><div bis_size="{"x":150,"y":5649,"w":840,"h":0,"abs_x":500,"abs_y":5862}" id="bkmrk-external-balance-api-0"></div>##### Integration with External Balance

<div bis_size="{"x":150,"y":5686,"w":840,"h":67,"abs_x":500,"abs_y":5899}" id="bkmrk-by-using-external-ba">By using External Balance API, you take an active part in processes affecting settlements, therefore the API issued by you will be subject to approval before production starts. To make this process easier, we can share with you a Postman collection with test cases.</div><div bis_size="{"x":150,"y":5753,"w":840,"h":22,"abs_x":500,"abs_y":5966}" id="bkmrk--2"><div bis_size="{"x":150,"y":5753,"w":840,"h":22,"abs_x":500,"abs_y":5966}" class="euiDataGridRowCell__content euiDataGridRowCell__content--autoHeight eui-textBreakWord css-xst660-euiDataGridRowCell__content-autoHeight" data-datagrid-cellcontent="true"><div bis_size="{"x":150,"y":5753,"w":840,"h":22,"abs_x":500,"abs_y":5966}" class="euiFlexGroup css-xwlek8-euiFlexGroup-responsive-s-flexStart-flexStart-row"><div bis_size="{"x":150,"y":5753,"w":840,"h":22,"abs_x":500,"abs_y":5966}" class="euiFlexItem css-9sbomz-euiFlexItem-grow-1">  
</div></div></div></div><div bis_size="{"x":150,"y":5775,"w":840,"h":0,"abs_x":500,"abs_y":5988}" id="bkmrk--15"></div><div bis_size="{"x":150,"y":5775,"w":840,"h":0,"abs_x":500,"abs_y":5988}" id="bkmrk--16"></div>#### API External balance 

<p class="callout info">For the process to function correctly, the Client <span style="text-decoration: underline;">**must**</span> implement all endpoints detailed in this chapter.</p>

Below you will find a list of endpoints that you should implement on your server side. Please pay special attention to the appropriate security of our connection, the syntax of requests that you can expect from the Verestro side, idempotency and the exact way in which you should respond to each request. If you decide to implement external balance to be able to keep the balance on your side and authorize transactions, remember that the implementation of all the methods below is required to ensure the API works.

##### Link balance  


This method is used to link customer balance between client and server. Requested **balanceId** will be used for communication between client and Verestro side.

<p class="callout danger">If you create balance entity at your end you should create it after receiving this call. Do not create balance entity on your side as result of POST /secure/balances nor POST /secure/customers/{id}/balances, because link balance will be called before response to these methods.</p>

<div bis_size="{"x":150,"y":6244,"w":840,"h":0,"abs_x":500,"abs_y":6457}" id="bkmrk--17"><div bis_size="{"x":150,"y":6244,"w":840,"h":0,"abs_x":500,"abs_y":6457}"><div bis_size="{"x":150,"y":6244,"w":840,"h":0,"abs_x":500,"abs_y":6457}" class="code panel pdl conf-macro output-block" data-hasbody="true" data-macro-name="code"><div bis_size="{"x":150,"y":6244,"w":840,"h":0,"abs_x":500,"abs_y":6457}" class="codeContent panelContent pdl"><div bis_size="{"x":150,"y":6244,"w":840,"h":0,"abs_x":500,"abs_y":6457}"><div bis_size="{"x":150,"y":6244,"w":840,"h":0,"abs_x":500,"abs_y":6457}" class="syntaxhighlighter sh-confluence nogutter  php" id="bkmrk--70"></div></div></div></div></div></div>```
POST https://server-domain.com/users/:id/balances
```

**path parameters:**

id - user identifier

<table class="wrapped confluenceTable tablesorter tablesorter-default stickyTableHeaders" id="bkmrk-name-required-descri" role="grid" style="width: 100%; height: 710.11px;"><colgroup><col style="width: 25.3874%;"></col><col style="width: 11.7998%;"></col><col style="width: 23.7187%;"></col><col style="width: 38.975%;"></col></colgroup><thead class="tableFloatingHeaderOriginal"><tr class="tablesorter-headerRow" role="row" style="height: 29.7969px;"><th aria-disabled="false" aria-label="Parameter: No sort applied, activate to apply an ascending sort" aria-sort="none" class="confluenceTh tablesorter-header sortableHeader tablesorter-headerUnSorted" data-column="0" role="columnheader" scope="col" style="height: 29.7969px;" tabindex="0"><div bis_size="{"x":158,"y":6386,"w":196,"h":16,"abs_x":508,"abs_y":6599}" class="tablesorter-header-inner">Name</div></th><th aria-disabled="false" aria-label="required: No sort applied, activate to apply an ascending sort" aria-sort="none" class="confluenceTh tablesorter-header sortableHeader tablesorter-headerUnSorted" data-column="1" role="columnheader" scope="col" style="height: 29.7969px;" tabindex="0"><div bis_size="{"x":372,"y":6386,"w":82,"h":16,"abs_x":722,"abs_y":6599}" class="tablesorter-header-inner">Required</div></th><th aria-disabled="false" aria-label="description: No sort applied, activate to apply an ascending sort" aria-sort="none" class="confluenceTh tablesorter-header sortableHeader tablesorter-headerUnSorted" data-column="2" role="columnheader" scope="col" style="height: 29.7969px;" tabindex="0"><div bis_size="{"x":471,"y":6386,"w":182,"h":16,"abs_x":821,"abs_y":6599}" class="tablesorter-header-inner">Description</div></th><th aria-disabled="false" aria-label="allowed values: No sort applied, activate to apply an ascending sort" aria-sort="none" class="confluenceTh tablesorter-header sortableHeader tablesorter-headerUnSorted" data-column="3" role="columnheader" scope="col" style="height: 29.7969px;" tabindex="0"><div bis_size="{"x":670,"y":6386,"w":310,"h":16,"abs_x":1020,"abs_y":6599}" class="tablesorter-header-inner">Allowed values</div></th></tr></thead><tbody aria-live="polite" aria-relevant="all"><tr role="row" style="height: 74.5938px;"><td class="confluenceTd" style="height: 74.5938px;">balanceId</td><td class="confluenceTd" style="height: 74.5938px;">TRUE</td><td class="confluenceTd" style="height: 74.5938px;">Unique identifier of balance.

This ID will be used in communication between client and server.

</td><td class="confluenceTd" style="height: 74.5938px;">UUID v4</td></tr><tr role="row" style="height: 46.5938px;"><td class="confluenceTd" style="height: 46.5938px;">currency</td><td class="confluenceTd" style="height: 46.5938px;">TRUE</td><td class="confluenceTd" style="height: 46.5938px;">Currency code</td><td class="confluenceTd" style="height: 46.5938px;">should be 3 letters code in ISO 4217 https://www.iban.com/currency-codes</td></tr></tbody></table>

**Headers:**

<div bis_size="{"x":150,"y":6597,"w":840,"h":0,"abs_x":500,"abs_y":6810}" id="bkmrk--18"><div bis_size="{"x":150,"y":6597,"w":840,"h":0,"abs_x":500,"abs_y":6810}"><div bis_size="{"x":150,"y":6597,"w":840,"h":0,"abs_x":500,"abs_y":6810}" class="code panel pdl conf-macro output-block" data-hasbody="true" data-macro-name="code"><div bis_size="{"x":150,"y":6597,"w":840,"h":0,"abs_x":500,"abs_y":6810}" class="codeContent panelContent pdl"><div bis_size="{"x":150,"y":6597,"w":840,"h":0,"abs_x":500,"abs_y":6810}"><div bis_size="{"x":150,"y":6597,"w":840,"h":0,"abs_x":500,"abs_y":6810}" class="syntaxhighlighter sh-confluence nogutter  php" id="bkmrk--71"></div></div></div></div></div></div>```
Content-Type: application/json
Accept: application/json
```

**request body:**

<div bis_size="{"x":150,"y":6711,"w":840,"h":0,"abs_x":500,"abs_y":6924}" id="bkmrk-%7B-%C2%A0%C2%A0%C2%A0%C2%A0%22balanceid%22%3A%222"><div bis_size="{"x":150,"y":6711,"w":840,"h":0,"abs_x":500,"abs_y":6924}"><div bis_size="{"x":150,"y":6711,"w":840,"h":0,"abs_x":500,"abs_y":6924}" class="code panel pdl conf-macro output-block" data-hasbody="true" data-macro-name="code"><div bis_size="{"x":150,"y":6711,"w":840,"h":0,"abs_x":500,"abs_y":6924}" class="codeContent panelContent pdl"><div bis_size="{"x":150,"y":6711,"w":840,"h":0,"abs_x":500,"abs_y":6924}"><div bis_size="{"x":150,"y":6711,"w":840,"h":0,"abs_x":500,"abs_y":6924}" class="syntaxhighlighter sh-confluence nogutter  php" id="bkmrk--72"></div></div></div></div></div></div>```
{
    "balanceId":"2e520dc2-329d-11ed-a261-0242ac120002",
    "currency": "PLN"
}
```

**parameters:**

<div bis_size="{"x":150,"y":6862,"w":840,"h":156,"abs_x":500,"abs_y":7075}" id="bkmrk-name-required-descri-1"><table class="wrapped confluenceTable tablesorter tablesorter-default stickyTableHeaders" role="grid" style="width: 100%; height: 710.11px;"><colgroup><col style="width: 25.3874%;"></col><col style="width: 11.7998%;"></col><col style="width: 23.7187%;"></col><col style="width: 38.975%;"></col></colgroup><thead class="tableFloatingHeaderOriginal"><tr class="tablesorter-headerRow" role="row" style="height: 29.7969px;"><th aria-disabled="false" aria-label="Parameter: No sort applied, activate to apply an ascending sort" aria-sort="none" class="confluenceTh tablesorter-header sortableHeader tablesorter-headerUnSorted" data-column="0" role="columnheader" scope="col" style="height: 29.7969px;" tabindex="0"><div bis_size="{"x":158,"y":6869,"w":196,"h":16,"abs_x":508,"abs_y":7082}" class="tablesorter-header-inner">Name</div></th><th aria-disabled="false" aria-label="required: No sort applied, activate to apply an ascending sort" aria-sort="none" class="confluenceTh tablesorter-header sortableHeader tablesorter-headerUnSorted" data-column="1" role="columnheader" scope="col" style="height: 29.7969px;" tabindex="0"><div bis_size="{"x":372,"y":6869,"w":82,"h":16,"abs_x":722,"abs_y":7082}" class="tablesorter-header-inner">Required</div></th><th aria-disabled="false" aria-label="description: No sort applied, activate to apply an ascending sort" aria-sort="none" class="confluenceTh tablesorter-header sortableHeader tablesorter-headerUnSorted" data-column="2" role="columnheader" scope="col" style="height: 29.7969px;" tabindex="0"><div bis_size="{"x":471,"y":6869,"w":182,"h":16,"abs_x":821,"abs_y":7082}" class="tablesorter-header-inner">Description</div></th><th aria-disabled="false" aria-label="allowed values: No sort applied, activate to apply an ascending sort" aria-sort="none" class="confluenceTh tablesorter-header sortableHeader tablesorter-headerUnSorted" data-column="3" role="columnheader" scope="col" style="height: 29.7969px;" tabindex="0"><div bis_size="{"x":670,"y":6869,"w":310,"h":16,"abs_x":1020,"abs_y":7082}" class="tablesorter-header-inner">Allowed values</div></th></tr></thead><tbody aria-live="polite" aria-relevant="all"><tr role="row" style="height: 74.5938px;"><td class="confluenceTd" style="height: 74.5938px;">balanceId</td><td class="confluenceTd" style="height: 74.5938px;">TRUE</td><td class="confluenceTd" style="height: 74.5938px;">Unique identifier of balance.

This ID will be used in communication between client and server.

</td><td class="confluenceTd" style="height: 74.5938px;">UUID v4</td></tr><tr role="row" style="height: 46.5938px;"><td class="confluenceTd" style="height: 46.5938px;">currency</td><td class="confluenceTd" style="height: 46.5938px;">TRUE</td><td class="confluenceTd" style="height: 46.5938px;">Currency code</td><td class="confluenceTd" style="height: 46.5938px;">should be 3 letters code in ISO 4217 https://www.iban.com/currency-codes</td></tr></tbody></table>

</div><div bis_size="{"x":150,"y":7039,"w":840,"h":0,"abs_x":500,"abs_y":7252}" id="bkmrk--3"></div><div bis_size="{"x":150,"y":7039,"w":840,"h":0,"abs_x":500,"abs_y":7252}" id="bkmrk--4"></div><div bis_size="{"x":150,"y":7039,"w":840,"h":0,"abs_x":500,"abs_y":7252}" id="bkmrk--5"></div>
**response:**

```
204 NoContent
```

**error codes:** 404 - should be returned if no user has been matched by requested path parameter.

<div bis_size="{"x":150,"y":7197,"w":840,"h":0,"abs_x":500,"abs_y":7410}" id="bkmrk-code-404-%7B-%C2%A0%C2%A0%C2%A0%C2%A0%22titl"><div bis_size="{"x":150,"y":7197,"w":840,"h":0,"abs_x":500,"abs_y":7410}"><div bis_size="{"x":150,"y":7197,"w":840,"h":0,"abs_x":500,"abs_y":7410}" class="code panel pdl conf-macro output-block" data-hasbody="true" data-macro-name="code"><div bis_size="{"x":150,"y":7197,"w":840,"h":0,"abs_x":500,"abs_y":7410}" class="codeContent panelContent pdl"><div bis_size="{"x":150,"y":7197,"w":840,"h":0,"abs_x":500,"abs_y":7410}"><div bis_size="{"x":150,"y":7197,"w":840,"h":0,"abs_x":500,"abs_y":7410}" class="syntaxhighlighter sh-confluence nogutter  php" id="bkmrk--73"></div></div></div></div></div></div>```
Code 404
{
    "title": "USER_NOT_FOUND",
    "detail": "some specific details provided by server"
}
```

##### Get single user balance

Method used to obtain single user balance information.

<div bis_size="{"x":150,"y":7404,"w":840,"h":0,"abs_x":500,"abs_y":7617}" id="bkmrk--19"><div bis_size="{"x":150,"y":7404,"w":840,"h":0,"abs_x":500,"abs_y":7617}"><div bis_size="{"x":150,"y":7404,"w":840,"h":0,"abs_x":500,"abs_y":7617}" class="code panel pdl conf-macro output-block" data-hasbody="true" data-macro-name="code"><div bis_size="{"x":150,"y":7404,"w":840,"h":0,"abs_x":500,"abs_y":7617}" class="codeContent panelContent pdl"><div bis_size="{"x":150,"y":7404,"w":840,"h":0,"abs_x":500,"abs_y":7617}"><div bis_size="{"x":150,"y":7404,"w":840,"h":0,"abs_x":500,"abs_y":7617}" class="syntaxhighlighter sh-confluence nogutter  php" id="bkmrk--74"></div></div></div></div></div></div>```
GET https://server-domain.com/users/:id/balances/:balanceId
```

**path parameters:**

<table class="wrapped confluenceTable tablesorter tablesorter-default stickyTableHeaders" id="bkmrk-name-required-descri-2" role="grid" style="width: 100%; height: 710.11px;"><colgroup><col style="width: 25.3874%;"></col><col style="width: 11.7998%;"></col><col style="width: 23.7187%;"></col><col style="width: 38.975%;"></col></colgroup><thead class="tableFloatingHeaderOriginal"><tr class="tablesorter-headerRow" role="row" style="height: 29.7969px;"><th aria-disabled="false" aria-label="Parameter: No sort applied, activate to apply an ascending sort" aria-sort="none" class="confluenceTh tablesorter-header sortableHeader tablesorter-headerUnSorted" data-column="0" role="columnheader" scope="col" style="height: 29.7969px;" tabindex="0"><div bis_size="{"x":158,"y":7505,"w":196,"h":16,"abs_x":508,"abs_y":7718}" class="tablesorter-header-inner">Name</div></th><th aria-disabled="false" aria-label="required: No sort applied, activate to apply an ascending sort" aria-sort="none" class="confluenceTh tablesorter-header sortableHeader tablesorter-headerUnSorted" data-column="1" role="columnheader" scope="col" style="height: 29.7969px;" tabindex="0"><div bis_size="{"x":372,"y":7505,"w":82,"h":16,"abs_x":722,"abs_y":7718}" class="tablesorter-header-inner">Required</div></th><th aria-disabled="false" aria-label="description: No sort applied, activate to apply an ascending sort" aria-sort="none" class="confluenceTh tablesorter-header sortableHeader tablesorter-headerUnSorted" data-column="2" role="columnheader" scope="col" style="height: 29.7969px;" tabindex="0"><div bis_size="{"x":471,"y":7505,"w":182,"h":16,"abs_x":821,"abs_y":7718}" class="tablesorter-header-inner">Description</div></th><th aria-disabled="false" aria-label="allowed values: No sort applied, activate to apply an ascending sort" aria-sort="none" class="confluenceTh tablesorter-header sortableHeader tablesorter-headerUnSorted" data-column="3" role="columnheader" scope="col" style="height: 29.7969px;" tabindex="0"><div bis_size="{"x":670,"y":7505,"w":310,"h":16,"abs_x":1020,"abs_y":7718}" class="tablesorter-header-inner">Allowed values</div></th></tr></thead><tbody aria-live="polite" aria-relevant="all"><tr role="row" style="height: 74.5938px;"><td class="confluenceTd" style="height: 74.5938px;">id</td><td class="confluenceTd" style="height: 74.5938px;">TRUE</td><td class="confluenceTd" style="height: 74.5938px;">User identifier.

</td><td class="confluenceTd" style="height: 74.5938px;">Integer</td></tr><tr role="row" style="height: 46.5938px;"><td class="confluenceTd" style="height: 46.5938px;">balanceId</td><td class="confluenceTd" style="height: 46.5938px;">TRUE</td><td class="confluenceTd" style="height: 46.5938px;">Unique identifier of balance.

This ID will be used in communication between client and server.

</td><td class="confluenceTd" style="height: 46.5938px;">UUID v4</td></tr></tbody></table>

```
id - user identifier
balanceId - unique balance identifier
```

**headers:**

```
Accept: application/json
```

**response:**

<div bis_size="{"x":150,"y":7910,"w":840,"h":0,"abs_x":500,"abs_y":8123}" id="bkmrk-200-ok-%7B-%C2%A0%C2%A0%C2%A0%C2%A0%22curren"><div bis_size="{"x":150,"y":7910,"w":840,"h":0,"abs_x":500,"abs_y":8123}"><div bis_size="{"x":150,"y":7910,"w":840,"h":0,"abs_x":500,"abs_y":8123}" class="code panel pdl conf-macro output-block" data-hasbody="true" data-macro-name="code"><div bis_size="{"x":150,"y":7910,"w":840,"h":0,"abs_x":500,"abs_y":8123}" class="codeContent panelContent pdl"><div bis_size="{"x":150,"y":7910,"w":840,"h":0,"abs_x":500,"abs_y":8123}"><div bis_size="{"x":150,"y":7910,"w":840,"h":0,"abs_x":500,"abs_y":8123}" class="syntaxhighlighter sh-confluence nogutter  php" id="bkmrk--75"></div></div></div></div></div></div>```
200 OK
{
    "currency": "PLN",
    "amount": 250
}
```

**response parameters:**

<table class="wrapped confluenceTable tablesorter tablesorter-default stickyTableHeaders" id="bkmrk-name-required-descri-3" role="grid" style="width: 100%; height: 156.352px;"><colgroup><col style="width: 25.3874%;"></col><col style="width: 11.7998%;"></col><col style="width: 23.7187%;"></col><col style="width: 38.975%;"></col></colgroup><thead class="tableFloatingHeaderOriginal"><tr class="tablesorter-headerRow" role="row" style="height: 29.7891px;"><th aria-disabled="false" aria-label="Parameter: No sort applied, activate to apply an ascending sort" aria-sort="none" class="confluenceTh tablesorter-header sortableHeader tablesorter-headerUnSorted" data-column="0" role="columnheader" scope="col" style="height: 29.7891px;" tabindex="0"><div bis_size="{"x":158,"y":8088,"w":196,"h":16,"abs_x":508,"abs_y":8301}" class="tablesorter-header-inner">Name</div></th><th aria-disabled="false" aria-label="required: No sort applied, activate to apply an ascending sort" aria-sort="none" class="confluenceTh tablesorter-header sortableHeader tablesorter-headerUnSorted" data-column="1" role="columnheader" scope="col" style="height: 29.7891px;" tabindex="0"><div bis_size="{"x":372,"y":8088,"w":82,"h":16,"abs_x":722,"abs_y":8301}" class="tablesorter-header-inner">Required</div></th><th aria-disabled="false" aria-label="description: No sort applied, activate to apply an ascending sort" aria-sort="none" class="confluenceTh tablesorter-header sortableHeader tablesorter-headerUnSorted" data-column="2" role="columnheader" scope="col" style="height: 29.7891px;" tabindex="0"><div bis_size="{"x":471,"y":8088,"w":182,"h":16,"abs_x":821,"abs_y":8301}" class="tablesorter-header-inner">Description</div></th><th aria-disabled="false" aria-label="allowed values: No sort applied, activate to apply an ascending sort" aria-sort="none" class="confluenceTh tablesorter-header sortableHeader tablesorter-headerUnSorted" data-column="3" role="columnheader" scope="col" style="height: 29.7891px;" tabindex="0"><div bis_size="{"x":670,"y":8088,"w":310,"h":16,"abs_x":1020,"abs_y":8301}" class="tablesorter-header-inner">Allowed values</div></th></tr></thead><tbody aria-live="polite" aria-relevant="all"><tr role="row" style="height: 79.9688px;"><td class="confluenceTd" style="height: 79.9688px;">amount</td><td class="confluenceTd" style="height: 79.9688px;">TRUE</td><td class="confluenceTd" style="height: 79.9688px;">Actual balance amount in minor (penny)

</td><td class="confluenceTd" style="height: 79.9688px;">integer value. For example: 12.34 EUR will be sent as 1234</td></tr><tr role="row" style="height: 46.5938px;"><td class="confluenceTd" style="height: 46.5938px;">currency</td><td class="confluenceTd" style="height: 46.5938px;">TRUE</td><td class="confluenceTd" style="height: 46.5938px;">Currency code</td><td class="confluenceTd" style="height: 46.5938px;">should be 3 letters code in ISO 4217 https://www.iban.com/currency-codes</td></tr></tbody></table>

```
currency  - three letter iso 4217 code
amount - actual balance amount in minor (penny), integer value. For example: 12.34 EUR will be sent as 1234
```

**error codes:** 404 - should be returned if no balance found by requested balanceId.

<div bis_size="{"x":150,"y":8393,"w":840,"h":0,"abs_x":500,"abs_y":8606}" id="bkmrk--20"><div bis_size="{"x":150,"y":8393,"w":840,"h":0,"abs_x":500,"abs_y":8606}"><div bis_size="{"x":150,"y":8393,"w":840,"h":0,"abs_x":500,"abs_y":8606}" class="code panel pdl conf-macro output-block" data-hasbody="true" data-macro-name="code"><div bis_size="{"x":150,"y":8393,"w":840,"h":0,"abs_x":500,"abs_y":8606}" class="codeContent panelContent pdl"><div bis_size="{"x":150,"y":8393,"w":840,"h":0,"abs_x":500,"abs_y":8606}"><div bis_size="{"x":150,"y":8393,"w":840,"h":0,"abs_x":500,"abs_y":8606}" class="syntaxhighlighter sh-confluence nogutter  php" id="bkmrk-code-404-%7B-%C2%A0%C2%A0%C2%A0%C2%A0%22titl-3"></div></div></div></div></div></div>```
Code 404
{
    "title": "BALANCE_NOT_FOUND",
    "detail": "some specific details provided by server"
}
```

403 - if requested balance does not belong to user.

<div bis_size="{"x":150,"y":8564,"w":840,"h":0,"abs_x":500,"abs_y":8777}" id="bkmrk-code-403-%7B-%C2%A0%C2%A0%C2%A0%C2%A0%22titl"><div bis_size="{"x":150,"y":8564,"w":840,"h":0,"abs_x":500,"abs_y":8777}"><div bis_size="{"x":150,"y":8564,"w":840,"h":0,"abs_x":500,"abs_y":8777}" class="code panel pdl conf-macro output-block" data-hasbody="true" data-macro-name="code"><div bis_size="{"x":150,"y":8564,"w":840,"h":0,"abs_x":500,"abs_y":8777}" class="codeContent panelContent pdl"><div bis_size="{"x":150,"y":8564,"w":840,"h":0,"abs_x":500,"abs_y":8777}"><div bis_size="{"x":150,"y":8564,"w":840,"h":0,"abs_x":500,"abs_y":8777}" class="syntaxhighlighter sh-confluence nogutter  php" id="bkmrk--76"></div></div></div></div></div></div>```
Code 403
{
    "title": "FORBIDDEN",
    "detail": "some specific details provided by server"
}
```

##### Get balance collection

This method should return collection of customer balances.

<div bis_size="{"x":150,"y":8771,"w":840,"h":0,"abs_x":500,"abs_y":8984}" id="bkmrk--28"><div bis_size="{"x":150,"y":8771,"w":840,"h":0,"abs_x":500,"abs_y":8984}"><div bis_size="{"x":150,"y":8771,"w":840,"h":0,"abs_x":500,"abs_y":8984}" class="code panel pdl conf-macro output-block" data-hasbody="true" data-macro-name="code"><div bis_size="{"x":150,"y":8771,"w":840,"h":0,"abs_x":500,"abs_y":8984}" class="codeContent panelContent pdl"><div bis_size="{"x":150,"y":8771,"w":840,"h":0,"abs_x":500,"abs_y":8984}"><div bis_size="{"x":150,"y":8771,"w":840,"h":0,"abs_x":500,"abs_y":8984}" class="syntaxhighlighter sh-confluence nogutter  php" id="bkmrk-get-https%3A%2F%2Fserver-d-2"></div></div></div></div></div></div>```
GET https://server-domain.com/users/:id/balances
```

**path parameters:**

<table class="wrapped confluenceTable tablesorter tablesorter-default stickyTableHeaders" id="bkmrk-name-required-descri-4" role="grid" style="width: 100%; height: 710.11px;"><colgroup><col style="width: 25.3874%;"></col><col style="width: 11.7998%;"></col><col style="width: 23.7187%;"></col><col style="width: 38.975%;"></col></colgroup><thead class="tableFloatingHeaderOriginal"><tr class="tablesorter-headerRow" role="row" style="height: 29.7969px;"><th aria-disabled="false" aria-label="Parameter: No sort applied, activate to apply an ascending sort" aria-sort="none" class="confluenceTh tablesorter-header sortableHeader tablesorter-headerUnSorted" data-column="0" role="columnheader" scope="col" style="height: 29.7969px;" tabindex="0"><div bis_size="{"x":158,"y":8872,"w":196,"h":16,"abs_x":508,"abs_y":9085}" class="tablesorter-header-inner">Name</div></th><th aria-disabled="false" aria-label="required: No sort applied, activate to apply an ascending sort" aria-sort="none" class="confluenceTh tablesorter-header sortableHeader tablesorter-headerUnSorted" data-column="1" role="columnheader" scope="col" style="height: 29.7969px;" tabindex="0"><div bis_size="{"x":372,"y":8872,"w":82,"h":16,"abs_x":722,"abs_y":9085}" class="tablesorter-header-inner">Required</div></th><th aria-disabled="false" aria-label="description: No sort applied, activate to apply an ascending sort" aria-sort="none" class="confluenceTh tablesorter-header sortableHeader tablesorter-headerUnSorted" data-column="2" role="columnheader" scope="col" style="height: 29.7969px;" tabindex="0"><div bis_size="{"x":471,"y":8872,"w":182,"h":16,"abs_x":821,"abs_y":9085}" class="tablesorter-header-inner">Description</div></th><th aria-disabled="false" aria-label="allowed values: No sort applied, activate to apply an ascending sort" aria-sort="none" class="confluenceTh tablesorter-header sortableHeader tablesorter-headerUnSorted" data-column="3" role="columnheader" scope="col" style="height: 29.7969px;" tabindex="0"><div bis_size="{"x":670,"y":8872,"w":310,"h":16,"abs_x":1020,"abs_y":9085}" class="tablesorter-header-inner">Allowed values</div></th></tr></thead><tbody aria-live="polite" aria-relevant="all"><tr role="row" style="height: 74.5938px;"><td class="confluenceTd" style="height: 74.5938px;">id</td><td class="confluenceTd" style="height: 74.5938px;">TRUE</td><td class="confluenceTd" style="height: 74.5938px;">User identifier

</td><td class="confluenceTd" style="height: 74.5938px;">Integer</td></tr><tr role="row" style="height: 46.5938px;"><td class="confluenceTd" style="height: 46.5938px;">balanceId</td><td class="confluenceTd" style="height: 46.5938px;">TRUE</td><td class="confluenceTd" style="height: 46.5938px;">Unique identifier of balance.

This ID will be used in communication between client and server.

</td><td class="confluenceTd" style="height: 46.5938px;">UUID v4</td></tr></tbody></table>

```
id - user identifier
```

**headers:**

```
Accept: application/json
```

**response:**

<div bis_size="{"x":150,"y":9258,"w":840,"h":0,"abs_x":500,"abs_y":9471}" id="bkmrk-200-ok-%5B-%C2%A0%C2%A0%C2%A0%C2%A0%7B-%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0"><div bis_size="{"x":150,"y":9258,"w":840,"h":0,"abs_x":500,"abs_y":9471}"><div bis_size="{"x":150,"y":9258,"w":840,"h":0,"abs_x":500,"abs_y":9471}" class="code panel pdl conf-macro output-block" data-hasbody="true" data-macro-name="code"><div bis_size="{"x":150,"y":9258,"w":840,"h":0,"abs_x":500,"abs_y":9471}" class="codeContent panelContent pdl"><div bis_size="{"x":150,"y":9258,"w":840,"h":0,"abs_x":500,"abs_y":9471}"><div bis_size="{"x":150,"y":9258,"w":840,"h":0,"abs_x":500,"abs_y":9471}" class="syntaxhighlighter sh-confluence nogutter  php" id="bkmrk--77"></div></div></div></div></div></div>```
200 OK
[
    {
        "id": "a072bd0e-328c-11ed-a261-0242ac120001",
        "currency": "PLN",
        "amount": 250
    },
    {
        "id": "b334a5e2-328c-11ed-a261-0242ac120002",
        "currency": "USD",
        "amount": 460
    }
]
```

If user has not created any balance yet, there should be returned empty collection.

<div bis_size="{"x":150,"y":9583,"w":840,"h":0,"abs_x":500,"abs_y":9796}" id="bkmrk-200-ok-%5B%5D"><div bis_size="{"x":150,"y":9583,"w":840,"h":0,"abs_x":500,"abs_y":9796}"><div bis_size="{"x":150,"y":9583,"w":840,"h":0,"abs_x":500,"abs_y":9796}" class="code panel pdl conf-macro output-block" data-hasbody="true" data-macro-name="code"><div bis_size="{"x":150,"y":9583,"w":840,"h":0,"abs_x":500,"abs_y":9796}" class="codeContent panelContent pdl"><div bis_size="{"x":150,"y":9583,"w":840,"h":0,"abs_x":500,"abs_y":9796}"><div bis_size="{"x":150,"y":9583,"w":840,"h":0,"abs_x":500,"abs_y":9796}" class="syntaxhighlighter sh-confluence nogutter  php" id="bkmrk--78"></div></div></div></div></div></div>```
200 OK
[]
```

**response parameters:**

<table class="wrapped confluenceTable tablesorter tablesorter-default stickyTableHeaders" id="bkmrk-name-required-descri-5" role="grid" style="width: 100%; height: 186.375px;"><colgroup><col style="width: 25.3874%;"></col><col style="width: 11.7998%;"></col><col style="width: 23.7187%;"></col><col style="width: 38.975%;"></col></colgroup><thead class="tableFloatingHeaderOriginal"><tr class="tablesorter-headerRow" role="row" style="height: 29.7969px;"><th aria-disabled="false" aria-label="Parameter: No sort applied, activate to apply an ascending sort" aria-sort="none" class="confluenceTh tablesorter-header sortableHeader tablesorter-headerUnSorted" data-column="0" role="columnheader" scope="col" style="height: 29.7969px;" tabindex="0"><div bis_size="{"x":158,"y":9703,"w":196,"h":16,"abs_x":508,"abs_y":9916}" class="tablesorter-header-inner">Name</div></th><th aria-disabled="false" aria-label="required: No sort applied, activate to apply an ascending sort" aria-sort="none" class="confluenceTh tablesorter-header sortableHeader tablesorter-headerUnSorted" data-column="1" role="columnheader" scope="col" style="height: 29.7969px;" tabindex="0"><div bis_size="{"x":372,"y":9703,"w":82,"h":16,"abs_x":722,"abs_y":9916}" class="tablesorter-header-inner">Required</div></th><th aria-disabled="false" aria-label="description: No sort applied, activate to apply an ascending sort" aria-sort="none" class="confluenceTh tablesorter-header sortableHeader tablesorter-headerUnSorted" data-column="2" role="columnheader" scope="col" style="height: 29.7969px;" tabindex="0"><div bis_size="{"x":471,"y":9703,"w":182,"h":16,"abs_x":821,"abs_y":9916}" class="tablesorter-header-inner">Description</div></th><th aria-disabled="false" aria-label="allowed values: No sort applied, activate to apply an ascending sort" aria-sort="none" class="confluenceTh tablesorter-header sortableHeader tablesorter-headerUnSorted" data-column="3" role="columnheader" scope="col" style="height: 29.7969px;" tabindex="0"><div bis_size="{"x":670,"y":9703,"w":310,"h":16,"abs_x":1020,"abs_y":9916}" class="tablesorter-header-inner">Allowed values</div></th></tr></thead><tbody aria-live="polite" aria-relevant="all"><tr role="row" style="height: 80.1875px;"><td class="confluenceTd" style="height: 80.1875px;">id</td><td class="confluenceTd" style="height: 80.1875px;">TRUE</td><td class="confluenceTd" style="height: 80.1875px;">Unique identifier of balance.

This ID will be used in communication between client and server.

</td><td class="confluenceTd" style="height: 80.1875px;">UUID v4</td></tr><tr role="row" style="height: 46.5938px;"><td class="confluenceTd" style="height: 74.5938px;">balanceId</td><td class="confluenceTd" style="height: 74.5938px;">TRUE</td><td class="confluenceTd" style="height: 74.5938px;">Unique identifier of balance.

This ID will be used in communication between client and server.

</td><td class="confluenceTd" style="height: 74.5938px;">UUID v4</td></tr><tr style="height: 29.7969px;"><td class="confluenceTd" style="height: 46.5938px;">currency</td><td class="confluenceTd" style="height: 46.5938px;">TRUE</td><td class="confluenceTd" style="height: 46.5938px;">Currency code</td><td class="confluenceTd" style="height: 46.5938px;">should be 3 letters code in ISO 4217 https://www.iban.com/currency-codes</td></tr></tbody></table>

```
id - unique identifier of user balance
currency  - three letter iso 4217 code
amount - actual balance amount in minor (penny), numeric value
```

##### Delete balance

This method is used to unattached balance from user. From legal point of view, balance should be deleted only if there is no money on it.

<div bis_size="{"x":150,"y":10144,"w":840,"h":0,"abs_x":500,"abs_y":10357}" id="bkmrk--29"><div bis_size="{"x":150,"y":10144,"w":840,"h":0,"abs_x":500,"abs_y":10357}"><div bis_size="{"x":150,"y":10144,"w":840,"h":0,"abs_x":500,"abs_y":10357}" class="code panel pdl conf-macro output-block" data-hasbody="true" data-macro-name="code"><div bis_size="{"x":150,"y":10144,"w":840,"h":0,"abs_x":500,"abs_y":10357}" class="codeContent panelContent pdl"><div bis_size="{"x":150,"y":10144,"w":840,"h":0,"abs_x":500,"abs_y":10357}"><div bis_size="{"x":150,"y":10144,"w":840,"h":0,"abs_x":500,"abs_y":10357}" class="syntaxhighlighter sh-confluence nogutter  php" id="bkmrk--79"></div></div></div></div></div></div>```
DELETE https://server-domain.com/users/:id/balances/:balanceId
```

**path parameters:**

<table class="wrapped confluenceTable tablesorter tablesorter-default stickyTableHeaders" id="bkmrk-name-required-descri-6" role="grid" style="width: 100%; height: 710.11px;"><colgroup><col style="width: 25.3874%;"></col><col style="width: 11.7998%;"></col><col style="width: 23.7187%;"></col><col style="width: 38.975%;"></col></colgroup><thead class="tableFloatingHeaderOriginal"><tr class="tablesorter-headerRow" role="row" style="height: 29.7969px;"><th aria-disabled="false" aria-label="Parameter: No sort applied, activate to apply an ascending sort" aria-sort="none" class="confluenceTh tablesorter-header sortableHeader tablesorter-headerUnSorted" data-column="0" role="columnheader" scope="col" style="height: 29.7969px;" tabindex="0"><div bis_size="{"x":158,"y":10245,"w":196,"h":16,"abs_x":508,"abs_y":10458}" class="tablesorter-header-inner">Name</div></th><th aria-disabled="false" aria-label="required: No sort applied, activate to apply an ascending sort" aria-sort="none" class="confluenceTh tablesorter-header sortableHeader tablesorter-headerUnSorted" data-column="1" role="columnheader" scope="col" style="height: 29.7969px;" tabindex="0"><div bis_size="{"x":372,"y":10245,"w":82,"h":16,"abs_x":722,"abs_y":10458}" class="tablesorter-header-inner">Required</div></th><th aria-disabled="false" aria-label="description: No sort applied, activate to apply an ascending sort" aria-sort="none" class="confluenceTh tablesorter-header sortableHeader tablesorter-headerUnSorted" data-column="2" role="columnheader" scope="col" style="height: 29.7969px;" tabindex="0"><div bis_size="{"x":471,"y":10245,"w":182,"h":16,"abs_x":821,"abs_y":10458}" class="tablesorter-header-inner">Description</div></th><th aria-disabled="false" aria-label="allowed values: No sort applied, activate to apply an ascending sort" aria-sort="none" class="confluenceTh tablesorter-header sortableHeader tablesorter-headerUnSorted" data-column="3" role="columnheader" scope="col" style="height: 29.7969px;" tabindex="0"><div bis_size="{"x":670,"y":10245,"w":310,"h":16,"abs_x":1020,"abs_y":10458}" class="tablesorter-header-inner">Allowed values</div></th></tr></thead><tbody aria-live="polite" aria-relevant="all"><tr role="row" style="height: 74.5938px;"><td class="confluenceTd" style="height: 74.5938px;">id  
</td><td class="confluenceTd" style="height: 74.5938px;">TRUE</td><td class="confluenceTd" style="height: 74.5938px;">User identifier

</td><td class="confluenceTd" style="height: 74.5938px;">Integer</td></tr><tr role="row" style="height: 46.5938px;"><td class="confluenceTd" style="height: 46.5938px;">balanceId</td><td class="confluenceTd" style="height: 46.5938px;">TRUE</td><td class="confluenceTd" style="height: 46.5938px;">Unique identifier of balance.

This ID will be used in communication between client and server.

</td><td class="confluenceTd" style="height: 46.5938px;">UUID v4</td></tr></tbody></table>

**response:**

```
204 No Content
```

**error responses:**

404 - if requested balance has not been found.

<div bis_size="{"x":150,"y":10620,"w":840,"h":0,"abs_x":500,"abs_y":10833}" id="bkmrk--30"><div bis_size="{"x":150,"y":10620,"w":840,"h":0,"abs_x":500,"abs_y":10833}"><div bis_size="{"x":150,"y":10620,"w":840,"h":0,"abs_x":500,"abs_y":10833}" class="code panel pdl conf-macro output-block" data-hasbody="true" data-macro-name="code"><div bis_size="{"x":150,"y":10620,"w":840,"h":0,"abs_x":500,"abs_y":10833}" class="codeContent panelContent pdl"><div bis_size="{"x":150,"y":10620,"w":840,"h":0,"abs_x":500,"abs_y":10833}"><div bis_size="{"x":150,"y":10620,"w":840,"h":0,"abs_x":500,"abs_y":10833}" class="syntaxhighlighter sh-confluence nogutter  php" id="bkmrk-code-404-%7B-%C2%A0%C2%A0%C2%A0%C2%A0%22titl-4"></div></div></div></div></div></div>```
Code 404
{
    "title": "BALANCE_NOT_FOUND",
    "detail": "some specific details provided by server"
}
```

403 - if requested balance does not belong to user.

```
Code 403
{
    "title": "FORBIDDEN",
    "detail": "some specific details provided by server"
}
```

<div bis_size="{"x":150,"y":10920,"w":840,"h":0,"abs_x":500,"abs_y":11133}" id="bkmrk--31"><div bis_size="{"x":150,"y":10920,"w":840,"h":0,"abs_x":500,"abs_y":11133}"><div bis_size="{"x":150,"y":10920,"w":840,"h":0,"abs_x":500,"abs_y":11133}" class="code panel pdl conf-macro output-block" data-hasbody="true" data-macro-name="code"><div bis_size="{"x":150,"y":10920,"w":840,"h":0,"abs_x":500,"abs_y":11133}" class="codeContent panelContent pdl"><div bis_size="{"x":150,"y":10920,"w":840,"h":0,"abs_x":500,"abs_y":11133}"><div bis_size="{"x":150,"y":10920,"w":840,"h":0,"abs_x":500,"abs_y":11133}" class="syntaxhighlighter sh-confluence nogutter  php" id="bkmrk-code-403-%7B-%C2%A0%C2%A0%C2%A0%C2%A0%22titl-2"></div></div></div></div></div></div><div bis_size="{"x":150,"y":10920,"w":840,"h":0,"abs_x":500,"abs_y":11133}" id="bkmrk--32"></div>##### Debit transaction

This kind of transaction is used to authorize transaction. In debit transactions Antaca asks 'if user has money?'.

```
POST https://server-domain.com/transactions/debit
```

**headers:**

<div bis_size="{"x":150,"y":11092,"w":840,"h":0,"abs_x":500,"abs_y":11305}" id="bkmrk--33"><div bis_size="{"x":150,"y":11092,"w":840,"h":0,"abs_x":500,"abs_y":11305}"><div bis_size="{"x":150,"y":11092,"w":840,"h":0,"abs_x":500,"abs_y":11305}" class="code panel pdl conf-macro output-block" data-hasbody="true" data-macro-name="code"><div bis_size="{"x":150,"y":11092,"w":840,"h":0,"abs_x":500,"abs_y":11305}" class="codeContent panelContent pdl"><div bis_size="{"x":150,"y":11092,"w":840,"h":0,"abs_x":500,"abs_y":11305}"><div bis_size="{"x":150,"y":11092,"w":840,"h":0,"abs_x":500,"abs_y":11305}" class="syntaxhighlighter sh-confluence nogutter  php" id="bkmrk--80"></div></div></div></div></div></div>```
Content-Type: application/json
X-Idempotency-Key: uuidV4
```

**request body:**

<div bis_size="{"x":150,"y":11205,"w":840,"h":0,"abs_x":500,"abs_y":11418}" id="bkmrk--34"><div bis_size="{"x":150,"y":11205,"w":840,"h":0,"abs_x":500,"abs_y":11418}"><div bis_size="{"x":150,"y":11205,"w":840,"h":0,"abs_x":500,"abs_y":11418}" class="code panel pdl conf-macro output-block" data-hasbody="true" data-macro-name="code"><div bis_size="{"x":150,"y":11205,"w":840,"h":0,"abs_x":500,"abs_y":11418}" class="codeContent panelContent pdl"><div bis_size="{"x":150,"y":11205,"w":840,"h":0,"abs_x":500,"abs_y":11418}"><div bis_size="{"x":150,"y":11205,"w":840,"h":0,"abs_x":500,"abs_y":11418}" class="syntaxhighlighter sh-confluence nogutter  php" id="bkmrk--81"></div></div></div></div></div></div>Description of the contents of the transaction object can be found above.

**success response:**

```
204 No Content
```

**error responses:**

```
422
{
    "title": "INSUFFICIENT_FUNDS",
    "detail": "some specific details provided by server"
}
```

```
422
{
    "title": "LIMITS_EXCEEDED",
    "detail": "some specific details provided by server"
}
```

```
422
{
    "title": "FRAUDS_DETECTED",
    "detail": "some specific details provided by server"
}
```

```
404
{
    "title": "BALANCE_NOT_FOUND",
    "detail": "some specific details provided by server"
}
```

```
409
{
    "title": "CLIENT_ERROR",
    "detail": "some specific details provided by server"
}
```

##### Force debit transaction

This kind of transaction is used to inform server side that transaction has occurred.  
For this request, actual transaction already happen so server can not reject this request. This behavior can occur for offline transactions fe: in plane, subway, for refunds and referring to previously authorized transactions.

<div bis_size="{"x":150,"y":12152,"w":840,"h":0,"abs_x":500,"abs_y":12365}" id="bkmrk--35"><div bis_size="{"x":150,"y":12152,"w":840,"h":0,"abs_x":500,"abs_y":12365}"><div bis_size="{"x":150,"y":12152,"w":840,"h":0,"abs_x":500,"abs_y":12365}" class="code panel pdl conf-macro output-block" data-hasbody="true" data-macro-name="code"><div bis_size="{"x":150,"y":12152,"w":840,"h":0,"abs_x":500,"abs_y":12365}" class="codeContent panelContent pdl"><div bis_size="{"x":150,"y":12152,"w":840,"h":0,"abs_x":500,"abs_y":12365}"><div bis_size="{"x":150,"y":12152,"w":840,"h":0,"abs_x":500,"abs_y":12365}" class="syntaxhighlighter sh-confluence nogutter  php" id="bkmrk--82"></div></div></div></div></div></div>```
POST https://server-domain.com/transactions/force-debit
```

**headers:**

```
Content-Type: application/json
X-Idempotency-Key: uuidV4
```

<div bis_size="{"x":150,"y":12318,"w":840,"h":0,"abs_x":500,"abs_y":12531}" id="bkmrk--36"><div bis_size="{"x":150,"y":12318,"w":840,"h":0,"abs_x":500,"abs_y":12531}"><div bis_size="{"x":150,"y":12318,"w":840,"h":0,"abs_x":500,"abs_y":12531}" class="code panel pdl conf-macro output-block" data-hasbody="true" data-macro-name="code"><div bis_size="{"x":150,"y":12318,"w":840,"h":0,"abs_x":500,"abs_y":12531}" class="codeContent panelContent pdl"><div bis_size="{"x":150,"y":12318,"w":840,"h":0,"abs_x":500,"abs_y":12531}"><div bis_size="{"x":150,"y":12318,"w":840,"h":0,"abs_x":500,"abs_y":12531}" class="syntaxhighlighter sh-confluence nogutter  php" id="bkmrk--83"></div></div></div></div></div></div>**request body:**

Description of the contents of the transaction object can be found above.

<div bis_size="{"x":150,"y":12402,"w":840,"h":0,"abs_x":500,"abs_y":12615}" id="bkmrk--37"><div bis_size="{"x":150,"y":12402,"w":840,"h":0,"abs_x":500,"abs_y":12615}"><div bis_size="{"x":150,"y":12402,"w":840,"h":0,"abs_x":500,"abs_y":12615}" class="code panel pdl conf-macro output-block" data-hasbody="true" data-macro-name="code"><div bis_size="{"x":150,"y":12402,"w":840,"h":0,"abs_x":500,"abs_y":12615}" class="codeContent panelContent pdl"><div bis_size="{"x":150,"y":12402,"w":840,"h":0,"abs_x":500,"abs_y":12615}"><div bis_size="{"x":150,"y":12402,"w":840,"h":0,"abs_x":500,"abs_y":12615}" class="syntaxhighlighter sh-confluence nogutter  php" id="bkmrk--84"></div></div></div></div></div></div>**response:**

```
204 No Content
```

<div bis_size="{"x":150,"y":12496,"w":840,"h":22,"abs_x":500,"abs_y":12709}" id="bkmrk--38"><div bis_size="{"x":150,"y":12496,"w":840,"h":22,"abs_x":500,"abs_y":12709}"><div bis_size="{"x":150,"y":12496,"w":840,"h":22,"abs_x":500,"abs_y":12709}" class="code panel pdl conf-macro output-block" data-hasbody="true" data-macro-name="code"><div bis_size="{"x":150,"y":12496,"w":840,"h":22,"abs_x":500,"abs_y":12709}" class="codeContent panelContent pdl"><div bis_size="{"x":150,"y":12496,"w":840,"h":22,"abs_x":500,"abs_y":12709}">  
</div></div></div></div></div>**error response:**

As mention in description section, **we do not accept transaction rejection**.

##### Credit transaction

Method is used to credit user balance. In credit transactions Antaca asks 'can user get money?'.

<div bis_size="{"x":150,"y":12684,"w":840,"h":0,"abs_x":500,"abs_y":12897}" id="bkmrk--39"><div bis_size="{"x":150,"y":12684,"w":840,"h":0,"abs_x":500,"abs_y":12897}"><div bis_size="{"x":150,"y":12684,"w":840,"h":0,"abs_x":500,"abs_y":12897}" class="code panel pdl conf-macro output-block" data-hasbody="true" data-macro-name="code"><div bis_size="{"x":150,"y":12684,"w":840,"h":0,"abs_x":500,"abs_y":12897}" class="codeContent panelContent pdl"><div bis_size="{"x":150,"y":12684,"w":840,"h":0,"abs_x":500,"abs_y":12897}"><div bis_size="{"x":150,"y":12684,"w":840,"h":0,"abs_x":500,"abs_y":12897}" class="syntaxhighlighter sh-confluence nogutter  php" id="bkmrk--85"></div></div></div></div></div></div>```
POST https://server-domain.com/transactions/credit
```

**headers:**

```
Content-Type: application/json
X-Idempotency-Key: uuidV4
```

**request body:**

Description of the contents of the transaction object can be found above.

<div bis_size="{"x":150,"y":12933,"w":840,"h":22,"abs_x":500,"abs_y":13146}" id="bkmrk--40"><div bis_size="{"x":150,"y":12933,"w":840,"h":22,"abs_x":500,"abs_y":13146}"><div bis_size="{"x":150,"y":12933,"w":840,"h":22,"abs_x":500,"abs_y":13146}" class="code panel pdl conf-macro output-block" data-hasbody="true" data-macro-name="code"><div bis_size="{"x":150,"y":12933,"w":840,"h":22,"abs_x":500,"abs_y":13146}" class="codeContent panelContent pdl"><div bis_size="{"x":150,"y":12933,"w":840,"h":22,"abs_x":500,"abs_y":13146}" class="syntaxhighlighter sh-confluence nogutter  php">  
</div></div></div></div></div>**success response:**

```
204 No Content
```

**error responses:**

```
404
{
    "title": "BALANCE_NOT_FOUND",
    "detail": "cannot find requested balance"
}
```

```
422
{
    "title": "FRAUDS_DETECTED",
    "detail": "some specific details provided by server"
}
```

<div bis_size="{"x":150,"y":13354,"w":840,"h":22,"abs_x":500,"abs_y":13567}" id="bkmrk--41"><div bis_size="{"x":150,"y":13354,"w":840,"h":22,"abs_x":500,"abs_y":13567}"><div bis_size="{"x":150,"y":13354,"w":840,"h":22,"abs_x":500,"abs_y":13567}"><div bis_size="{"x":150,"y":13354,"w":840,"h":22,"abs_x":500,"abs_y":13567}" class="code panel pdl conf-macro output-block" data-hasbody="true" data-macro-name="code"><div bis_size="{"x":150,"y":13354,"w":840,"h":22,"abs_x":500,"abs_y":13567}" class="codeContent panelContent pdl"><div bis_size="{"x":150,"y":13354,"w":840,"h":22,"abs_x":500,"abs_y":13567}"><div bis_size="{"x":150,"y":13354,"w":840,"h":22,"abs_x":500,"abs_y":13567}" class="syntaxhighlighter sh-confluence nogutter  php">  
</div></div></div></div></div></div></div><div bis_size="{"x":150,"y":13376,"w":840,"h":0,"abs_x":500,"abs_y":13589}" id="bkmrk--42"><div bis_size="{"x":150,"y":13376,"w":840,"h":0,"abs_x":500,"abs_y":13589}"><div bis_size="{"x":150,"y":13376,"w":840,"h":0,"abs_x":500,"abs_y":13589}" class="code panel pdl conf-macro output-block" data-hasbody="true" data-macro-name="code"><div bis_size="{"x":150,"y":13376,"w":840,"h":0,"abs_x":500,"abs_y":13589}" class="codeContent panelContent pdl"><div bis_size="{"x":150,"y":13376,"w":840,"h":0,"abs_x":500,"abs_y":13589}"><div bis_size="{"x":150,"y":13376,"w":840,"h":0,"abs_x":500,"abs_y":13589}" class="syntaxhighlighter sh-confluence nogutter  php" id="bkmrk--86"></div></div></div></div></div></div><div bis_size="{"x":150,"y":13376,"w":840,"h":0,"abs_x":500,"abs_y":13589}" id="bkmrk--43"><div bis_size="{"x":150,"y":13376,"w":840,"h":0,"abs_x":500,"abs_y":13589}"><div bis_size="{"x":150,"y":13376,"w":840,"h":0,"abs_x":500,"abs_y":13589}" class="code panel pdl conf-macro output-block" data-hasbody="true" data-macro-name="code"><div bis_size="{"x":150,"y":13376,"w":840,"h":0,"abs_x":500,"abs_y":13589}" class="codeContent panelContent pdl"><div bis_size="{"x":150,"y":13376,"w":840,"h":0,"abs_x":500,"abs_y":13589}"><div bis_size="{"x":150,"y":13376,"w":840,"h":0,"abs_x":500,"abs_y":13589}" class="syntaxhighlighter sh-confluence nogutter  php" id="bkmrk--87"></div></div></div></div><div bis_size="{"x":150,"y":13376,"w":840,"h":0,"abs_x":500,"abs_y":13589}" class="code panel pdl conf-macro output-block" data-hasbody="true" data-macro-name="code"><div bis_size="{"x":150,"y":13376,"w":840,"h":0,"abs_x":500,"abs_y":13589}" class="codeContent panelContent pdl"><div bis_size="{"x":150,"y":13376,"w":840,"h":0,"abs_x":500,"abs_y":13589}"><div bis_size="{"x":150,"y":13376,"w":840,"h":0,"abs_x":500,"abs_y":13589}" class="syntaxhighlighter sh-confluence nogutter  php" id="bkmrk--88"></div></div></div></div></div></div>##### Force credit

<div bis_size="{"x":150,"y":13428,"w":840,"h":0,"abs_x":500,"abs_y":13641}" id="bkmrk--44"><div bis_size="{"x":150,"y":13428,"w":840,"h":0,"abs_x":500,"abs_y":13641}"><div bis_size="{"x":150,"y":13428,"w":840,"h":0,"abs_x":500,"abs_y":13641}" class="code panel pdl conf-macro output-block" data-hasbody="true" data-macro-name="code"><div bis_size="{"x":150,"y":13428,"w":840,"h":0,"abs_x":500,"abs_y":13641}" class="codeContent panelContent pdl"><div bis_size="{"x":150,"y":13428,"w":840,"h":0,"abs_x":500,"abs_y":13641}"><div bis_size="{"x":150,"y":13428,"w":840,"h":0,"abs_x":500,"abs_y":13641}" class="syntaxhighlighter sh-confluence nogutter  php" id="bkmrk--89"></div></div></div></div></div></div>Method is used to credit user balance. This kind of transaction is used to inform server side that transaction has occurred. For this request, actual transaction already happen so server can not reject this request.

```
POST https://server-domain.com/transactions/force-credit
```

**headers:**

<div bis_size="{"x":150,"y":13587,"w":840,"h":0,"abs_x":500,"abs_y":13800}" id="bkmrk--45"><div bis_size="{"x":150,"y":13587,"w":840,"h":0,"abs_x":500,"abs_y":13800}"><div bis_size="{"x":150,"y":13587,"w":840,"h":0,"abs_x":500,"abs_y":13800}" class="code panel pdl conf-macro output-block" data-hasbody="true" data-macro-name="code"><div bis_size="{"x":150,"y":13587,"w":840,"h":0,"abs_x":500,"abs_y":13800}" class="codeContent panelContent pdl"><div bis_size="{"x":150,"y":13587,"w":840,"h":0,"abs_x":500,"abs_y":13800}"><div bis_size="{"x":150,"y":13587,"w":840,"h":0,"abs_x":500,"abs_y":13800}" class="syntaxhighlighter sh-confluence nogutter  php" id="bkmrk--90"></div></div></div></div></div></div>```
Content-Type: application/json
X-Idempotency-Key: uuidV4
```

**request body:**

Description of the contents of the transaction object can be found above.

<div bis_size="{"x":150,"y":13742,"w":840,"h":22,"abs_x":500,"abs_y":13955}" id="bkmrk--46"><div bis_size="{"x":150,"y":13742,"w":840,"h":22,"abs_x":500,"abs_y":13955}"><div bis_size="{"x":150,"y":13742,"w":840,"h":22,"abs_x":500,"abs_y":13955}" class="code panel pdl conf-macro output-block" data-hasbody="true" data-macro-name="code"><div bis_size="{"x":150,"y":13742,"w":840,"h":22,"abs_x":500,"abs_y":13955}" class="syntaxhighlighter sh-confluence nogutter  php">  
</div></div></div></div>**success response:**

```
204 No Content
```

<div bis_size="{"x":150,"y":13862,"w":840,"h":0,"abs_x":500,"abs_y":14075}" id="bkmrk--47"><div bis_size="{"x":150,"y":13862,"w":840,"h":0,"abs_x":500,"abs_y":14075}"><div bis_size="{"x":150,"y":13862,"w":840,"h":0,"abs_x":500,"abs_y":14075}" class="code panel pdl conf-macro output-block" data-hasbody="true" data-macro-name="code"><div bis_size="{"x":150,"y":13862,"w":840,"h":0,"abs_x":500,"abs_y":14075}" class="codeContent panelContent pdl"><div bis_size="{"x":150,"y":13862,"w":840,"h":0,"abs_x":500,"abs_y":14075}"><div bis_size="{"x":150,"y":13862,"w":840,"h":0,"abs_x":500,"abs_y":14075}" class="syntaxhighlighter sh-confluence nogutter  php" id="bkmrk--91"></div></div></div></div></div></div>**error response:**

As mention in description section, **we do not accept transaction rejection**.

##### Reversal

Method is used to revert any changes for previous transaction. Request body will be identical to transaction with client try to revert. If server cannot find referenced transaction then no action is required.

<div bis_size="{"x":150,"y":14046,"w":840,"h":0,"abs_x":500,"abs_y":14259}" id="bkmrk--48"><div bis_size="{"x":150,"y":14046,"w":840,"h":0,"abs_x":500,"abs_y":14259}"><div bis_size="{"x":150,"y":14046,"w":840,"h":0,"abs_x":500,"abs_y":14259}" class="code panel pdl conf-macro output-block" data-hasbody="true" data-macro-name="code"><div bis_size="{"x":150,"y":14046,"w":840,"h":0,"abs_x":500,"abs_y":14259}" class="codeContent panelContent pdl"><div bis_size="{"x":150,"y":14046,"w":840,"h":0,"abs_x":500,"abs_y":14259}"><div bis_size="{"x":150,"y":14046,"w":840,"h":0,"abs_x":500,"abs_y":14259}" class="syntaxhighlighter sh-confluence nogutter  php" id="bkmrk--92"></div></div></div></div></div></div>```
POST https://server-domain.com/transactions/reversal
```

**headers:**

```
Content-Type: application/json
X-Idempotency-Key: uuidV4
```

<div bis_size="{"x":150,"y":14212,"w":840,"h":0,"abs_x":500,"abs_y":14425}" id="bkmrk--49"><div bis_size="{"x":150,"y":14212,"w":840,"h":0,"abs_x":500,"abs_y":14425}"><div bis_size="{"x":150,"y":14212,"w":840,"h":0,"abs_x":500,"abs_y":14425}" class="code panel pdl conf-macro output-block" data-hasbody="true" data-macro-name="code"><div bis_size="{"x":150,"y":14212,"w":840,"h":0,"abs_x":500,"abs_y":14425}" class="codeContent panelContent pdl"><div bis_size="{"x":150,"y":14212,"w":840,"h":0,"abs_x":500,"abs_y":14425}"><div bis_size="{"x":150,"y":14212,"w":840,"h":0,"abs_x":500,"abs_y":14425}" class="syntaxhighlighter sh-confluence nogutter  php" id="bkmrk--93"></div></div></div></div></div></div>**request body:**

Description of the contents of the transaction object can be found above.

<div bis_size="{"x":150,"y":14295,"w":840,"h":0,"abs_x":500,"abs_y":14508}" id="bkmrk--50"><div bis_size="{"x":150,"y":14295,"w":840,"h":0,"abs_x":500,"abs_y":14508}"><div bis_size="{"x":150,"y":14295,"w":840,"h":0,"abs_x":500,"abs_y":14508}" class="code panel pdl conf-macro output-block" data-hasbody="true" data-macro-name="code"><div bis_size="{"x":150,"y":14295,"w":840,"h":0,"abs_x":500,"abs_y":14508}" class="codeContent panelContent pdl"><div bis_size="{"x":150,"y":14295,"w":840,"h":0,"abs_x":500,"abs_y":14508}"><div bis_size="{"x":150,"y":14295,"w":840,"h":0,"abs_x":500,"abs_y":14508}" class="syntaxhighlighter sh-confluence nogutter  php" id="bkmrk--94"></div></div></div></div></div></div>**success response:**

<div bis_size="{"x":150,"y":14337,"w":840,"h":0,"abs_x":500,"abs_y":14550}" id="bkmrk--51"><div bis_size="{"x":150,"y":14337,"w":840,"h":0,"abs_x":500,"abs_y":14550}"><div bis_size="{"x":150,"y":14337,"w":840,"h":0,"abs_x":500,"abs_y":14550}" class="code panel pdl conf-macro output-block" data-hasbody="true" data-macro-name="code"><div bis_size="{"x":150,"y":14337,"w":840,"h":0,"abs_x":500,"abs_y":14550}" class="codeContent panelContent pdl"><div bis_size="{"x":150,"y":14337,"w":840,"h":0,"abs_x":500,"abs_y":14550}"><div bis_size="{"x":150,"y":14337,"w":840,"h":0,"abs_x":500,"abs_y":14550}" class="syntaxhighlighter sh-confluence nogutter  php" id="bkmrk--95"></div></div></div></div></div></div>```
204 No Content
```

**error responses:**

IMPORTANT: for this method, we do not accept any error. Only<span class="Y2IQFc" lang="en"> satisfying behavior is to revert referenced transaction and no action if cannot find transaction.   
<span class="Y2IQFc" lang="en">Therefore, if a transaction is not found on the partner's side, we expect not an HTTP 404 ERROR but an HTTP 2xx SUCCESS in this case.</span>  
</span>

<span class="Y2IQFc" lang="en">It tells the Partner directly to reverse the transaction as if it never happened (it was rejected by Antaca, idle timeout, etc.). Usually, there will be no referenceTransactionId in it, but there are cases where there will be. Reversal does not refund the money. It only confirms that such a transaction did not take place. The money should be refunded by force-credit. </span>

##### <span class="Y2IQFc" lang="en">Update transaction status</span>

<span class="Y2IQFc" lang="en">From time to time, client will inform about clearings triggered by acquirer side. If client mark transaction as cleared it means that transaction will not be corrected by any other transaction request and requested amount is final.</span>

<p class="callout warning"><span class="Y2IQFc" lang="en">This endpoint is used to inform about the change of the transaction status to CLEARED - the movement of funds should not occur here.</span></p>

<div bis_size="{"x":150,"y":14770,"w":840,"h":0,"abs_x":500,"abs_y":14983}" id="bkmrk--52"><div bis_size="{"x":150,"y":14770,"w":840,"h":0,"abs_x":500,"abs_y":14983}"><div bis_size="{"x":150,"y":14770,"w":840,"h":0,"abs_x":500,"abs_y":14983}" class="code panel pdl conf-macro output-block" data-hasbody="true" data-macro-name="code"><div bis_size="{"x":150,"y":14770,"w":840,"h":0,"abs_x":500,"abs_y":14983}" class="codeContent panelContent pdl"><div bis_size="{"x":150,"y":14770,"w":840,"h":0,"abs_x":500,"abs_y":14983}"><div bis_size="{"x":150,"y":14770,"w":840,"h":0,"abs_x":500,"abs_y":14983}" class="syntaxhighlighter sh-confluence nogutter  php" id="bkmrk--96"></div></div></div></div></div></div>```
PUT https://server-domain.com/transactions/:transactionId
```

**path parameters:**

<table class="wrapped confluenceTable tablesorter tablesorter-default stickyTableHeaders" id="bkmrk-name-required-descri-7" role="grid" style="width: 100%; height: 279.574px;"><colgroup><col style="width: 25.3874%;"></col><col style="width: 11.7998%;"></col><col style="width: 23.7187%;"></col><col style="width: 38.975%;"></col></colgroup><thead class="tableFloatingHeaderOriginal"><tr class="tablesorter-headerRow" role="row" style="height: 29.7891px;"><th aria-disabled="false" aria-label="Parameter: No sort applied, activate to apply an ascending sort" aria-sort="none" class="confluenceTh tablesorter-header sortableHeader tablesorter-headerUnSorted" data-column="0" role="columnheader" scope="col" style="height: 29.7891px;" tabindex="0"><div bis_size="{"x":158,"y":14871,"w":196,"h":16,"abs_x":508,"abs_y":15084}" class="tablesorter-header-inner">Name</div></th><th aria-disabled="false" aria-label="required: No sort applied, activate to apply an ascending sort" aria-sort="none" class="confluenceTh tablesorter-header sortableHeader tablesorter-headerUnSorted" data-column="1" role="columnheader" scope="col" style="height: 29.7891px;" tabindex="0"><div bis_size="{"x":372,"y":14871,"w":82,"h":16,"abs_x":722,"abs_y":15084}" class="tablesorter-header-inner">Required</div></th><th aria-disabled="false" aria-label="description: No sort applied, activate to apply an ascending sort" aria-sort="none" class="confluenceTh tablesorter-header sortableHeader tablesorter-headerUnSorted" data-column="2" role="columnheader" scope="col" style="height: 29.7891px;" tabindex="0"><div bis_size="{"x":471,"y":14871,"w":182,"h":16,"abs_x":821,"abs_y":15084}" class="tablesorter-header-inner">Description</div></th><th aria-disabled="false" aria-label="allowed values: No sort applied, activate to apply an ascending sort" aria-sort="none" class="confluenceTh tablesorter-header sortableHeader tablesorter-headerUnSorted" data-column="3" role="columnheader" scope="col" style="height: 29.7891px;" tabindex="0"><div bis_size="{"x":670,"y":14871,"w":310,"h":16,"abs_x":1020,"abs_y":15084}" class="tablesorter-header-inner">Allowed values</div></th></tr></thead><tbody aria-live="polite" aria-relevant="all"><tr role="row" style="height: 203.191px;"><td class="confluenceTd" style="height: 203.191px;">transactionId</td><td class="confluenceTd" style="height: 203.191px;">TRUE</td><td class="confluenceTd" style="height: 203.191px;">Transaction identifier obtained from card network or generated on client side using the method to generate transaction in Antaca.

**IMPORTANT: this id may not be unique - it is generated by different systems**

</td><td class="confluenceTd" style="height: 203.191px;">any string value </td></tr></tbody></table>

**request body:**

<div bis_size="{"x":150,"y":15159,"w":840,"h":0,"abs_x":500,"abs_y":15372}" id="bkmrk--53"><div bis_size="{"x":150,"y":15159,"w":840,"h":0,"abs_x":500,"abs_y":15372}"><div bis_size="{"x":150,"y":15159,"w":840,"h":0,"abs_x":500,"abs_y":15372}" class="code panel pdl conf-macro output-block" data-hasbody="true" data-macro-name="code"><div bis_size="{"x":150,"y":15159,"w":840,"h":0,"abs_x":500,"abs_y":15372}" class="codeContent panelContent pdl"><div bis_size="{"x":150,"y":15159,"w":840,"h":0,"abs_x":500,"abs_y":15372}"><div bis_size="{"x":150,"y":15159,"w":840,"h":0,"abs_x":500,"abs_y":15372}" class="syntaxhighlighter sh-confluence nogutter  php" id="bkmrk--97"></div></div></div></div></div></div><span class="Y2IQFc" lang="en">Description of the contents of the transaction object can be found above.</span>

<span class="Y2IQFc" lang="en">**success response:**</span>

```
204 No Content
```

<div bis_size="{"x":150,"y":15295,"w":840,"h":0,"abs_x":500,"abs_y":15508}" id="bkmrk--54"><div bis_size="{"x":150,"y":15295,"w":840,"h":0,"abs_x":500,"abs_y":15508}"><div bis_size="{"x":150,"y":15295,"w":840,"h":0,"abs_x":500,"abs_y":15508}" class="code panel pdl conf-macro output-block" data-hasbody="true" data-macro-name="code"><div bis_size="{"x":150,"y":15295,"w":840,"h":0,"abs_x":500,"abs_y":15508}" class="codeContent panelContent pdl"><div bis_size="{"x":150,"y":15295,"w":840,"h":0,"abs_x":500,"abs_y":15508}"><div bis_size="{"x":150,"y":15295,"w":840,"h":0,"abs_x":500,"abs_y":15508}" class="syntaxhighlighter sh-confluence nogutter  php" id="bkmrk--98"></div></div></div></div></div></div><span class="Y2IQFc" lang="en">**error responses:**</span>

```
404
{
    "title": "TRANSACTION_NOT_FOUND",
    "detail": "cannot find requested transaction"
}
```

#### Transaction Types Description

Debit transactions list:

<table id="bkmrk-type%C2%A0-description-po" style="width: 100%; height: 402.547px;"><tbody><tr style="height: 29.7969px;"><td style="width: 17.0396%; height: 29.7969px;">**Type**

</td><td style="width: 82.9604%; height: 29.7969px;">**Description**

</td></tr><tr style="height: 46.5938px;"><td style="width: 17.0396%; height: 46.5938px;">POS

</td><td style="width: 82.9604%; height: 46.5938px;">POS transaction (A point-of-sale) applies to the situation when a customer makes a purchase and the payment is processed through the POS system.

</td></tr><tr style="height: 29.7969px;"><td style="width: 17.0396%; height: 29.7969px;">ATM

</td><td style="width: 82.9604%; height: 29.7969px;">ATM Transaction is when the cardholder uses a physical card at an ATM to withdraw cash.

</td></tr><tr style="height: 29.7969px;"><td style="width: 17.0396%; height: 29.7969px;">Balance Inquiry</td><td style="width: 82.9604%; height: 29.7969px;">Check the available balance of funds.

</td></tr><tr style="height: 46.5938px;"><td style="width: 17.0396%; height: 46.5938px;">Commission

</td><td style="width: 82.9604%; height: 46.5938px;">internal transaction for a partner who wants to debit user balance as a commission referenced to the other transaction.

</td></tr><tr style="height: 46.5938px;"><td style="width: 17.0396%; height: 46.5938px;">Fee

</td><td style="width: 82.9604%; height: 46.5938px;">internal transaction for a partner who wants to debit user balance as a fee.

Antaca automatically **credits** company balance with the funds that were debit the user's balance

</td></tr><tr style="height: 80.1875px;"><td style="width: 17.0396%; height: 80.1875px;">Funding

</td><td style="width: 82.9604%; height: 80.1875px;">internal transaction type used to debit the user's balance. This type indicates that the funds still remain in the Antaca system, usually in conjunction with a payment type a credit transaction on the user's balance.

Antaca automatically **credit** the **credit partner balance** with this transaction

</td></tr><tr style="height: 46.5938px;"><td style="width: 17.0396%; height: 46.5938px;">Interest

</td><td style="width: 82.9604%; height: 46.5938px;">internal transaction for a partner who wants debit the user's balance as part of the interest connected with credit agreement.

</td></tr><tr style="height: 46.5938px;"><td style="width: 17.0396%; height: 46.5938px;">Withdrawal

</td><td style="width: 82.9604%; height: 46.5938px;">internal transaction type used to debit the user's balance. This type indicates that the funds go outside the Antaca system, fe: withdrawal from an account at a bank branch.

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

Credit transactions list:

<table id="bkmrk-topup-internal-trans" style="width: 100%; height: 611.055px;"><tbody><tr style="height: 63.3906px;"><td style="width: 17.2745%; height: 63.3906px;">TopUp

</td><td style="width: 82.7255%; height: 63.3906px;">internal transaction type used to top up the user's balance. This type indicates that the funds come from outside the Antaca system, fe: payment to an account at a bank branch.

Antaca automatically **debit** the **credit partner balance** with this transaction

</td></tr><tr style="height: 63.3906px;"><td style="width: 17.2745%; height: 63.3906px;">Payment

</td><td style="width: 82.7255%; height: 63.3906px;">internal transaction type used to top up the user's balance. This type indicates that the funds come from the Antaca system, usually in conjunction with a funding type a debit transaction on the user's balance

Antaca automatically **debit** the **credit partner balance** with this transaction

</td></tr><tr style="height: 46.5938px;"><td style="width: 17.2745%; height: 46.5938px;">Loan

</td><td style="width: 82.7255%; height: 46.5938px;">internal transaction for a partner who wants to top up the user's balance as part of the credit agreement.

Antaca automatically **debit** the **credit partner balance** with this transaction

</td></tr><tr style="height: 46.5938px;"><td style="width: 17.2745%; height: 46.5938px;">CreditIbanTransfer

</td><td style="width: 82.7255%; height: 46.5938px;">internal transaction dedicated only for IMS API (via specific CN). IMS API uses this balance to credit funds on the user's balance.

</td></tr><tr style="height: 46.5938px;"><td style="width: 17.2745%; height: 46.5938px;">Cashback

</td><td style="width: 82.7255%; height: 46.5938px;">internal transaction for a partner who wants to top up the user's balance as part of the loyalty program

Antaca automatically **debit** the **credit partner balance** with this transaction

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

# Your APIs for us - Shared authorization

### Shared authorization

The Shared Autorization API is a tool that gives our Clients control over the transaction authorization process. Through this API, a Client can make the **authorization decision** based on their own business rules, even when end users' funds are held and managed on Verestro side.

In this model, the Client's system, via a dedicated endpoint, receives an authorization request from **Antaca** and responds with either an approval or a decline. A positive response from the client is our signal to debit the funds from the balance in our system and finalize the payment, provided that other transactional conditions on Verestro's side are met (e.g., sufficient funds or AML rules).

<p class="callout warning">A positive authorization decision from the Client doesn't guarantee the transaction will be successful, as it can still be DECLINED by Verestro for other reasons.</p>

#### Features

<div bis_size="{"x":150,"y":421,"w":840,"h":22,"abs_x":500,"abs_y":634}" id="bkmrk-%E2%80%A2-handling-transacti">• transactions processing</div>#### Purpose and scope

<div bis_size="{"x":150,"y":503,"w":840,"h":22,"abs_x":500,"abs_y":716}" id="bkmrk-this-guide-provides-">This guide provides an instruction and case study for using Shared Autorization API. Document covers following topics:</div><div bis_size="{"x":150,"y":526,"w":840,"h":22,"abs_x":500,"abs_y":739}" id="bkmrk-%E2%80%A2-how-to-use-externa">• how to use Shared Authotization API,</div><div bis_size="{"x":150,"y":548,"w":840,"h":22,"abs_x":500,"abs_y":761}" id="bkmrk-%E2%80%A2-transaction-flow%2C">• transaction flow,</div><div bis_size="{"x":150,"y":571,"w":840,"h":22,"abs_x":500,"abs_y":784}" id="bkmrk-%E2%80%A2-use-cases-study.">• use cases study.</div>#### Terminology

<div bis_size="{"x":150,"y":653,"w":840,"h":22,"abs_x":500,"abs_y":866}" id="bkmrk-user---end-user-trig">User - The end user for whom a balance is maintained along with the associated payment instruments.</div><div bis_size="{"x":150,"y":676,"w":840,"h":22,"abs_x":500,"abs_y":889}" id="bkmrk-server---api-exposed">Server - API exposed by Antaca’s client.</div><div bis_size="{"x":150,"y":698,"w":840,"h":22,"abs_x":500,"abs_y":911}" id="bkmrk-client---company-usi">Client - company using Antaca services.</div><div bis_size="{"x":150,"y":721,"w":840,"h":0,"abs_x":500,"abs_y":934}" id="bkmrk-"></div>### Security

To set secured server-server connection between our services Verestro requires a similar connection as in the case of client to Verestro communication based on the x509 certificate.  
In the first step, Verestro will send to the client a CSR for the dev and production environments.  
The next step is for the client to sign the CSR and send the certificate back to Verestro along with the base URL for the methods listed below. Verestro will authorize itself with each request with a certificate, which should be checked on the client side.

### Idempotency Key

With some requests additional header X-Idempotency-Key could be send. This header contain unique random id allowing to identify single request.  
If client send this header, operation should be triggered only once and for any further request with this key, response should be identical - in most cases, returned from cache.

**example headers:**

```
X-Idempotency-Key: 20e87975-dbfb-4c95-b239-169516c0b707
```

#### Shared Authorization API

Below you will find a list of endpoints that you should implement on your server side. Please pay special attention to the appropriate security of our connection, the syntax of requests that you can expect from the Verestro side, idempotency and the exact way in which you should respond to each request.

<div bis_size="{"x":150,"y":1365,"w":840,"h":0,"abs_x":500,"abs_y":1578}" id="bkmrk--12"></div><div bis_size="{"x":150,"y":1365,"w":840,"h":0,"abs_x":500,"abs_y":1578}" id="bkmrk--13"></div>##### Transaction processing 

<div bis_size="{"x":150,"y":1402,"w":840,"h":67,"abs_x":500,"abs_y":1615}" id="bkmrk-all-transaction-requ">When a balance is created and linked for a given user with verified KYC, from that moment the client-side API should be ready to accept transactions related to it. Depending on the payment instrument used, the data transferred in the transaction object may be different, but will always refer to a specific balance.</div><div bis_size="{"x":150,"y":1469,"w":840,"h":0,"abs_x":500,"abs_y":1682}" id="bkmrk--21"></div><p class="callout info">**Remember to avoid communication errors** Verestro servers attach an X-Idempotency-Key to each request in the header. This header contains a unique ID for each request to ensure idempotence. Each request with a unique identifier in this header should be processed only once on the client side and the response to it should be identical - in most cases, returned from cache</p>

<div bis_size="{"x":150,"y":1606,"w":840,"h":0,"abs_x":500,"abs_y":1819}" id="bkmrk--22"><div bis_size="{"x":150,"y":1606,"w":840,"h":0,"abs_x":500,"abs_y":1819}" id="bkmrk--67"></div><div bis_size="{"x":150,"y":1606,"w":840,"h":0,"abs_x":500,"abs_y":1819}" id="bkmrk--68"></div></div><div bis_size="{"x":150,"y":1606,"w":840,"h":0,"abs_x":500,"abs_y":1819}" id="bkmrk--23"></div>example:

```
curl POST "https://server-domain.com/transactions/debit"
--header "X-Idempotency-Key: 21aa0c2a-5554-4071-bd48-b9c64a0b6270"
```

<div bis_size="{"x":150,"y":1719,"w":840,"h":0,"abs_x":500,"abs_y":1932}" class="code panel pdl conf-macro output-block" data-hasbody="true" data-macro-name="code" id="bkmrk--24"><div bis_size="{"x":150,"y":1719,"w":840,"h":0,"abs_x":500,"abs_y":1932}" class="codeContent panelContent pdl"><div bis_size="{"x":150,"y":1719,"w":840,"h":0,"abs_x":500,"abs_y":1932}" class="syntaxhighlighter sh-confluence nogutter  php" id="bkmrk--69"></div></div></div>##### Transaction object

<div bis_size="{"x":150,"y":1756,"w":840,"h":22,"abs_x":500,"abs_y":1969}" id="bkmrk-each-transaction-obj">Each transaction request contains following data:</div>```
{
    "id": "b4f534ef-77c2-4f16-ab4d-496806a76fb6",
    "balanceId": "b334b384-328c-11ed-a261-0242ac120002",
    "resourceId": "9d673932-3291-11ed-a261-0242ac120002",
    "resource": "card",
    "transactionId": "ab3d89e4-3291-11ed-a261-0242ac120002",
    "referenceTransactionId": "b759931c-3291-11ed-a261-0242ac120002",
    "type": "POS",
    "amount": 10000,
    "currency": "PLN",
    "originalAmount": 10000,
    "originalCurrency": "PLN",
    "status": "AUTHORIZED",
    "description": "transaction description",
    "date": "2020-08-17T18:43:42+00:00",
    "transactionData": {
        "mcc": "5942",
        "merchantIdentifier": "003060300000005",
        "merchantName": "Book store",
        "captureMode": "NFC",
        "lastFourDigits": "4560",
        "acquirerCountry": "POL",
        "mdesDigitizedWalletId": "Google Pay",
        "cashbackPosCurrencyCode": "PLN",
        "cashbackPosAmount": 10000,
        "lastFourDpan": "7890",
        "adjustmentReasonDescription": "REFUND",
        "retrievalReferenceNumber": "749248185012",
        "cardId": "6876783"
    }
}
```

<div bis_size="{"x":150,"y":2406,"w":840,"h":22,"abs_x":500,"abs_y":2619}" id="bkmrk-parameters%3A-2">**Parameters:**  
</div><div bis_size="{"x":150,"y":2433,"w":840,"h":949,"abs_x":500,"abs_y":2646}" id="bkmrk-parameter-required-d-2"><table class="wrapped confluenceTable" style="width: 100%; height: 934.602px;"><tbody><tr style="height: 29.7969px;"><th class="confluenceTh mceSelected" style="width: 26.6996%; height: 29.7969px;">Parameter</th><th class="confluenceTh mceSelected" style="width: 9.2707%; height: 29.7969px;">Required</th><th class="confluenceTh mceSelected" style="width: 33.3745%; height: 29.7969px;">Description</th><th class="confluenceTh mceSelected" style="width: 30.7787%; height: 29.7969px;">Allowed values</th></tr><tr style="height: 63.3906px;"><td style="width: 26.6996%; height: 63.3906px;">id

</td><td style="width: 9.2707%; height: 63.3906px;">TRUE</td><td style="width: 33.3745%; height: 63.3906px;">Unique identifier of the transaction in UUID format  
</td><td style="width: 30.7787%; height: 63.3906px;">any value in UUID v4 format, eg. ddb55ff9-11ca-4621-9129-81f939e66011  
</td></tr><tr style="height: 48.9141px;"><td class="confluenceTd mceSelected" style="width: 26.6996%; height: 48.9141px;">balanceId

</td><td class="confluenceTd mceSelected" style="width: 9.2707%; height: 48.9141px;">TRUE</td><td class="confluenceTd mceSelected" style="width: 33.3745%; height: 48.9141px;">Unique user balance identifier</td><td class="confluenceTd mceSelected" style="width: 30.7787%; height: 48.9141px;">any string value (recommended uuid v4)</td></tr><tr style="height: 46.5938px;"><td class="confluenceTd mceSelected" style="width: 26.6996%; height: 46.5938px;">resourceId</td><td class="confluenceTd mceSelected" style="width: 9.2707%; height: 46.5938px;">TRUE</td><td class="confluenceTd mceSelected" style="width: 33.3745%; height: 46.5938px;">Unique resource identifier</td><td class="confluenceTd mceSelected" style="width: 30.7787%; height: 46.5938px;">any string value (recommended uuid v4)</td></tr><tr style="height: 35.0625px;"><td class="confluenceTd mceSelected" style="width: 26.6996%; height: 35.0625px;">resource

</td><td class="confluenceTd mceSelected" style="width: 9.2707%; height: 35.0625px;">TRUE</td><td class="confluenceTd mceSelected" style="width: 33.3745%; height: 35.0625px;">Name of a resource.</td><td class="confluenceTd mceSelected" style="width: 30.7787%; height: 35.0625px;">balance, card</td></tr><tr style="height: 169.438px;"><td class="confluenceTd mceSelected" style="width: 26.6996%; height: 169.438px;">transactionId

</td><td class="confluenceTd mceSelected" style="width: 9.2707%; height: 169.438px;">TRUE</td><td class="confluenceTd mceSelected" style="width: 33.3745%; height: 169.438px;">Transaction identifier obtained from card network or generated on client side using the method to generate transaction in Antaca.

**IMPORTANT: this id may not be unique - it is generated by different systems**

</td><td class="confluenceTd mceSelected" style="width: 30.7787%; height: 169.438px;">any string value </td></tr><tr style="height: 48.9141px;"><td class="confluenceTd mceSelected" style="width: 26.6996%; height: 48.9141px;">referenceTransactionId

</td><td class="confluenceTd mceSelected" style="width: 9.2707%; height: 48.9141px;">FALSE</td><td class="confluenceTd mceSelected" style="width: 33.3745%; height: 48.9141px;">Id of previous transaction to witch current request relates</td><td class="confluenceTd mceSelected" style="width: 30.7787%; height: 48.9141px;">any string value (recommended uuid v4)</td></tr><tr style="height: 96.9844px;"><td class="confluenceTd mceSelected" style="width: 26.6996%; height: 96.9844px;">type

</td><td class="confluenceTd mceSelected" style="width: 9.2707%; height: 96.9844px;">TRUE</td><td class="confluenceTd mceSelected" style="width: 33.3745%; height: 96.9844px;">Type of transaction</td><td class="confluenceTd mceSelected" style="width: 30.7787%; height: 96.9844px;">cashback, loan, payment, topup, commission, fee, funding, interest, withdrawal, pos, atm, cashback\_at\_pos, adjustment</td></tr><tr style="height: 48.9141px;"><td class="confluenceTd mceSelected" style="width: 26.6996%; height: 48.9141px;">amount

</td><td class="confluenceTd mceSelected" style="width: 9.2707%; height: 48.9141px;">TRUE</td><td class="confluenceTd mceSelected" style="width: 33.3745%; height: 48.9141px;">Transaction value in gross (minor value)

For example: 12.34 EUR will be sent as 1234

</td><td class="confluenceTd mceSelected" style="width: 30.7787%; height: 48.9141px;">integer value</td></tr><tr style="height: 35.0625px;"><td class="confluenceTd mceSelected" style="width: 26.6996%; height: 35.0625px;">currency

</td><td class="confluenceTd mceSelected" style="width: 9.2707%; height: 35.0625px;">TRUE</td><td class="confluenceTd mceSelected" style="width: 33.3745%; height: 35.0625px;">Currency 3-letters code in ISO 4217</td><td class="confluenceTd mceSelected" style="width: 30.7787%; height: 35.0625px;">ISO 4217 3-letter code</td></tr><tr style="height: 80.1875px;"><td class="confluenceTd mceSelected" style="width: 26.6996%; height: 80.1875px;">originalAmount

</td><td class="confluenceTd mceSelected" style="width: 9.2707%; height: 80.1875px;">FALSE</td><td class="confluenceTd mceSelected" style="width: 33.3745%; height: 80.1875px;">Original transaction value in gross (minor value)

For example: 12.34 EUR will be sent as 1234

</td><td class="confluenceTd mceSelected" style="width: 30.7787%; height: 80.1875px;">integer value</td></tr><tr style="height: 48.9141px;"><td class="confluenceTd mceSelected" style="width: 26.6996%; height: 48.9141px;">originalCurrency

</td><td class="confluenceTd mceSelected" style="width: 9.2707%; height: 48.9141px;">FALSE</td><td class="confluenceTd mceSelected" style="width: 33.3745%; height: 48.9141px;">Original currency 3-letters code in ISO 4217</td><td class="confluenceTd mceSelected" style="width: 30.7787%; height: 48.9141px;">ISO 4217 3-letter code</td></tr><tr style="height: 48.9141px;"><td class="confluenceTd mceSelected" style="width: 26.6996%; height: 48.9141px;">status

</td><td class="confluenceTd mceSelected" style="width: 9.2707%; height: 48.9141px;">TRUE</td><td class="confluenceTd mceSelected" style="width: 33.3745%; height: 48.9141px;">Transaction status</td><td class="confluenceTd mceSelected" style="width: 30.7787%; height: 48.9141px;">AUTHORIZED, CLEARED, REVERSED</td></tr><tr style="height: 35.0625px;"><td class="confluenceTd mceSelected" style="width: 26.6996%; height: 35.0625px;">description

</td><td class="confluenceTd mceSelected" style="width: 9.2707%; height: 35.0625px;">TRUE</td><td class="confluenceTd mceSelected" style="width: 33.3745%; height: 35.0625px;">Transaction description</td><td class="confluenceTd mceSelected" style="width: 30.7787%; height: 35.0625px;">any string value</td></tr><tr style="height: 35.0625px;"><td class="confluenceTd mceSelected" style="width: 26.6996%; height: 35.0625px;">date

</td><td class="confluenceTd mceSelected" style="width: 9.2707%; height: 35.0625px;">TRUE</td><td class="confluenceTd mceSelected" style="width: 33.3745%; height: 35.0625px;">Date of transaction in UTC</td><td class="confluenceTd mceSelected" style="width: 30.7787%; height: 35.0625px;">date in UTC</td></tr><tr style="height: 63.3906px;"><td class="confluenceTd mceSelected" style="width: 26.6996%; height: 63.3906px;">transactionData</td><td class="confluenceTd mceSelected" style="width: 9.2707%; height: 63.3906px;">FALSE</td><td class="confluenceTd mceSelected" style="width: 33.3745%; height: 63.3906px;">Additional transaction data. This object presents detailed data depending on the transaction type</td><td class="confluenceTd mceSelected" style="width: 30.7787%; height: 63.3906px;">This object is described below</td></tr></tbody></table>

</div><div bis_size="{"x":150,"y":3402,"w":840,"h":22,"abs_x":500,"abs_y":3615}" id="bkmrk--25">**TransactionData data object:**</div><div bis_size="{"x":150,"y":3428,"w":840,"h":680,"abs_x":500,"abs_y":3641}" id="bkmrk-parameter-required-d-3"><table class="wrapped confluenceTable tablesorter tablesorter-default stickyTableHeaders" role="grid" style="width: 100%; height: 710.11px;"><colgroup><col style="width: 25.3874%;"></col><col style="width: 11.7998%;"></col><col style="width: 23.7187%;"></col><col style="width: 38.975%;"></col></colgroup><thead class="tableFloatingHeaderOriginal"><tr class="tablesorter-headerRow" role="row" style="height: 29.7969px;"><th aria-disabled="false" aria-label="Parameter: No sort applied, activate to apply an ascending sort" aria-sort="none" class="confluenceTh tablesorter-header sortableHeader tablesorter-headerUnSorted" data-column="0" role="columnheader" scope="col" style="height: 29.7969px;" tabindex="0"><div bis_size="{"x":158,"y":3435,"w":196,"h":16,"abs_x":508,"abs_y":3648}" class="tablesorter-header-inner">Name</div></th><th aria-disabled="false" aria-label="required: No sort applied, activate to apply an ascending sort" aria-sort="none" class="confluenceTh tablesorter-header sortableHeader tablesorter-headerUnSorted" data-column="1" role="columnheader" scope="col" style="height: 29.7969px;" tabindex="0"><div bis_size="{"x":372,"y":3435,"w":82,"h":16,"abs_x":722,"abs_y":3648}" class="tablesorter-header-inner">Required</div></th><th aria-disabled="false" aria-label="description: No sort applied, activate to apply an ascending sort" aria-sort="none" class="confluenceTh tablesorter-header sortableHeader tablesorter-headerUnSorted" data-column="2" role="columnheader" scope="col" style="height: 29.7969px;" tabindex="0"><div bis_size="{"x":471,"y":3435,"w":182,"h":16,"abs_x":821,"abs_y":3648}" class="tablesorter-header-inner">Description</div></th><th aria-disabled="false" aria-label="allowed values: No sort applied, activate to apply an ascending sort" aria-sort="none" class="confluenceTh tablesorter-header sortableHeader tablesorter-headerUnSorted" data-column="3" role="columnheader" scope="col" style="height: 29.7969px;" tabindex="0"><div bis_size="{"x":670,"y":3435,"w":310,"h":16,"abs_x":1020,"abs_y":3648}" class="tablesorter-header-inner">Allowed values</div></th></tr></thead><tbody aria-live="polite" aria-relevant="all"><tr role="row" style="height: 74.5938px;"><td class="confluenceTd" style="height: 74.5938px;">mcc</td><td class="confluenceTd" style="height: 74.5938px;">FALSE</td><td class="confluenceTd" style="height: 74.5938px;">Merchant category code</td><td class="confluenceTd" style="height: 74.5938px;">any mcc value, eg. can be found here: [https://global.alipay.com/docs/ac/files/mcclist](https://global.alipay.com/docs/ac/files/mcclist)</td></tr><tr role="row" style="height: 46.5938px;"><td class="confluenceTd" style="height: 46.5938px;">merchantIdentifier</td><td class="confluenceTd" style="height: 46.5938px;">FALSE</td><td class="confluenceTd" style="height: 46.5938px;">The merchant identifier for the transaction</td><td class="confluenceTd" style="height: 46.5938px;">  
</td></tr><tr role="row" style="height: 29.7969px;"><td class="confluenceTd" style="height: 29.7969px;">merchantName</td><td class="confluenceTd" style="height: 29.7969px;">FALSE</td><td class="confluenceTd" style="height: 29.7969px;">Name of merchant</td><td class="confluenceTd" style="height: 29.7969px;">  
</td></tr><tr role="row" style="height: 46.5938px;"><td class="confluenceTd" style="height: 46.5938px;">captureMode</td><td class="confluenceTd" style="height: 46.5938px;">FALSE</td><td class="confluenceTd" style="height: 46.5938px;">Capture mode</td><td class="confluenceTd" style="height: 46.5938px;">magstripe, manual, emv, on behalf (EMV), nfc, ecommerce, adj</td></tr><tr role="row" style="height: 29.7969px;"><td class="confluenceTd" style="height: 29.7969px;">lastFourDigits</td><td class="confluenceTd" style="height: 29.7969px;">FALSE</td><td class="confluenceTd" style="height: 29.7969px;">Last 4 digits of card</td><td class="confluenceTd" style="height: 29.7969px;">  
</td></tr><tr role="row" style="height: 29.7969px;"><td class="confluenceTd" style="height: 29.7969px;">acquirerCountry</td><td class="confluenceTd" style="height: 29.7969px;">FALSE</td><td class="confluenceTd" style="height: 29.7969px;">Country of acquirer</td><td class="confluenceTd" style="height: 29.7969px;">alpha-3</td></tr><tr role="row" style="height: 63.3906px;"><td class="confluenceTd" style="height: 63.3906px;">mdesDigitizedWalletId</td><td class="confluenceTd" style="height: 63.3906px;">FALSE</td><td class="confluenceTd" style="height: 63.3906px;">The Wallet ID (Wallet Reference) used to digitize the card.</td><td class="confluenceTd" style="height: 63.3906px;">m4m, google pay, samsung pay, apple pay</td></tr><tr role="row" style="height: 63.3906px;"><td class="confluenceTd" style="height: 63.3906px;">cashbackPosCurrencyCode</td><td class="confluenceTd" style="height: 63.3906px;">FALSE</td><td class="confluenceTd" style="height: 63.3906px;">Represents the currency code of the cashback amount</td><td class="confluenceTd" style="height: 63.3906px;">ISO 4217 3-letter code</td></tr><tr role="row" style="height: 46.5938px;"><td class="confluenceTd" style="height: 46.5938px;">cashbackPosAmount</td><td class="confluenceTd" style="height: 46.5938px;">FALSE</td><td class="confluenceTd" style="height: 46.5938px;">Displays the actual cashback amount</td><td class="confluenceTd" style="height: 46.5938px;">integer value in gross</td></tr><tr style="height: 63.3906px;"><td style="height: 63.3906px;">lastFourDpan</td><td style="height: 63.3906px;">FALSE</td><td style="height: 63.3906px;">Last 4 digits of Device Primary Account Number (tokenized PAN)</td><td style="height: 63.3906px;">  
</td></tr><tr style="height: 29.7969px;"><td style="height: 29.7969px;">adjustmentReasonDescription</td><td style="height: 29.7969px;">FALSE  
</td><td style="height: 29.7969px;">Reason for adjustment  
</td><td style="height: 29.7969px;">eg. REFUND, MONEY\_SEND, CHARGEBACK  
</td></tr><tr style="height: 46.5938px;"><td style="height: 46.5938px;">retrievalReferenceNumber</td><td style="height: 46.5938px;">FALSE</td><td style="height: 46.5938px;">12-digit number generated to record each transaction</td><td style="height: 46.5938px;">  
</td></tr><tr style="height: 80.1875px;"><td style="height: 80.1875px;">cardId</td><td style="height: 80.1875px;">FALSE</td><td style="height: 80.1875px;">The card identifier in string format. This value could be used to communicate with the Antaca services.</td><td style="height: 80.1875px;">any string value. Mostly it should be eg. "1234" but it can change in the future and become UUID format.  
</td></tr></tbody></table>

</div><div bis_size="{"x":150,"y":4128,"w":840,"h":0,"abs_x":500,"abs_y":4341}" id="bkmrk--26"></div><div bis_size="{"x":150,"y":4128,"w":840,"h":0,"abs_x":500,"abs_y":4341}" id="bkmrk--27"></div><div bis_size="{"x":150,"y":4128,"w":840,"h":0,"abs_x":500,"abs_y":4341}" id="bkmrk-external-balance-api-0"></div>##### Integration with Shared Authorization


<div bis_size="{"x":150,"y":4167,"w":840,"h":67,"abs_x":500,"abs_y":4380}" id="bkmrk-by-using-external-ba">By using Shared Autorization API, you take an active part in processes affecting settlements, therefore the API issued by you will be subject to approval before production starts. To make this process easier, we can share with you a Postman collection with test cases.</div><div bis_size="{"x":150,"y":4235,"w":840,"h":22,"abs_x":500,"abs_y":4448}" id="bkmrk--2"><div bis_size="{"x":150,"y":4235,"w":840,"h":22,"abs_x":500,"abs_y":4448}" class="euiDataGridRowCell__content euiDataGridRowCell__content--autoHeight eui-textBreakWord css-xst660-euiDataGridRowCell__content-autoHeight" data-datagrid-cellcontent="true"><div bis_size="{"x":150,"y":4235,"w":840,"h":22,"abs_x":500,"abs_y":4448}" class="euiFlexGroup css-xwlek8-euiFlexGroup-responsive-s-flexStart-flexStart-row"><div bis_size="{"x":150,"y":4235,"w":840,"h":22,"abs_x":500,"abs_y":4448}" class="euiFlexItem css-9sbomz-euiFlexItem-grow-1">  
</div></div></div></div><div bis_size="{"x":150,"y":4257,"w":840,"h":0,"abs_x":500,"abs_y":4470}" id="bkmrk--15"></div><div bis_size="{"x":150,"y":4257,"w":840,"h":0,"abs_x":500,"abs_y":4470}" id="bkmrk--16"></div>#### API Shared Authorization Details

<p class="callout info">For the process to function correctly, the Client <span style="text-decoration: underline;">**must**</span> implement all endpoints detailed in this chapter.</p>

Below you will find a list of endpoints that you should implement on your server side. Please pay special attention to the appropriate security of our connection, the syntax of requests that you can expect from the Verestro side, idempotency and the exact way in which you should respond to each request. If you decide to implement Shared Authorization API, remember that the implementation of all the methods below is required to ensure the API works.

<div bis_size="{"x":150,"y":4492,"w":840,"h":0,"abs_x":500,"abs_y":4705}" id="bkmrk--31"><div bis_size="{"x":150,"y":4492,"w":840,"h":0,"abs_x":500,"abs_y":4705}"><div bis_size="{"x":150,"y":4492,"w":840,"h":0,"abs_x":500,"abs_y":4705}" class="code panel pdl conf-macro output-block" data-hasbody="true" data-macro-name="code"><div bis_size="{"x":150,"y":4492,"w":840,"h":0,"abs_x":500,"abs_y":4705}" class="codeContent panelContent pdl"><div bis_size="{"x":150,"y":4492,"w":840,"h":0,"abs_x":500,"abs_y":4705}"><div bis_size="{"x":150,"y":4492,"w":840,"h":0,"abs_x":500,"abs_y":4705}" class="syntaxhighlighter sh-confluence nogutter  php" id="bkmrk-code-403-%7B-%C2%A0%C2%A0%C2%A0%C2%A0%22titl-2"></div></div></div></div></div></div><div bis_size="{"x":150,"y":4492,"w":840,"h":0,"abs_x":500,"abs_y":4705}" id="bkmrk--32"></div>##### Debit transaction

This kind of transaction is used to authorize transaction.

```
POST https://server-domain.com/transactions/debit
```

**headers:**

<div bis_size="{"x":150,"y":4664,"w":840,"h":0,"abs_x":500,"abs_y":4877}" id="bkmrk--33"><div bis_size="{"x":150,"y":4664,"w":840,"h":0,"abs_x":500,"abs_y":4877}"><div bis_size="{"x":150,"y":4664,"w":840,"h":0,"abs_x":500,"abs_y":4877}" class="code panel pdl conf-macro output-block" data-hasbody="true" data-macro-name="code"><div bis_size="{"x":150,"y":4664,"w":840,"h":0,"abs_x":500,"abs_y":4877}" class="codeContent panelContent pdl"><div bis_size="{"x":150,"y":4664,"w":840,"h":0,"abs_x":500,"abs_y":4877}"><div bis_size="{"x":150,"y":4664,"w":840,"h":0,"abs_x":500,"abs_y":4877}" class="syntaxhighlighter sh-confluence nogutter  php" id="bkmrk--80"></div></div></div></div></div></div>```
Content-Type: application/json
X-Idempotency-Key: uuidV4
```

**request body:**

<div bis_size="{"x":150,"y":4778,"w":840,"h":0,"abs_x":500,"abs_y":4991}" id="bkmrk--34"><div bis_size="{"x":150,"y":4778,"w":840,"h":0,"abs_x":500,"abs_y":4991}"><div bis_size="{"x":150,"y":4778,"w":840,"h":0,"abs_x":500,"abs_y":4991}" class="code panel pdl conf-macro output-block" data-hasbody="true" data-macro-name="code"><div bis_size="{"x":150,"y":4778,"w":840,"h":0,"abs_x":500,"abs_y":4991}" class="codeContent panelContent pdl"><div bis_size="{"x":150,"y":4778,"w":840,"h":0,"abs_x":500,"abs_y":4991}"><div bis_size="{"x":150,"y":4778,"w":840,"h":0,"abs_x":500,"abs_y":4991}" class="syntaxhighlighter sh-confluence nogutter  php" id="bkmrk--81"></div></div></div></div></div></div>Description of the contents of the transaction object can be found above.

**success response:**

```
204 No Content
```

**error responses:**

```
422
{
    "title": "INSUFFICIENT_FUNDS",
    "detail": "some specific details provided by server"
}
```

```
422
{
    "title": "LIMITS_EXCEEDED",
    "detail": "some specific details provided by server"
}
```

```
422
{
    "title": "FRAUDS_DETECTED",
    "detail": "some specific details provided by server"
}
```

```
404
{
    "title": "BALANCE_NOT_FOUND",
    "detail": "some specific details provided by server"
}
```

```
409
{
    "title": "CLIENT_ERROR",
    "detail": "some specific details provided by server"
}
```

##### Force debit transaction

This kind of transaction is used to inform server side that transaction has occurred.  
For this request, actual transaction already happen so server can not reject this request. This behavior can occur for offline transactions fe: in plane, subway, for refunds and referring to previously authorized transactions.

<div bis_size="{"x":150,"y":5724,"w":840,"h":0,"abs_x":500,"abs_y":5937}" id="bkmrk--35"><div bis_size="{"x":150,"y":5724,"w":840,"h":0,"abs_x":500,"abs_y":5937}"><div bis_size="{"x":150,"y":5724,"w":840,"h":0,"abs_x":500,"abs_y":5937}" class="code panel pdl conf-macro output-block" data-hasbody="true" data-macro-name="code"><div bis_size="{"x":150,"y":5724,"w":840,"h":0,"abs_x":500,"abs_y":5937}" class="codeContent panelContent pdl"><div bis_size="{"x":150,"y":5724,"w":840,"h":0,"abs_x":500,"abs_y":5937}"><div bis_size="{"x":150,"y":5724,"w":840,"h":0,"abs_x":500,"abs_y":5937}" class="syntaxhighlighter sh-confluence nogutter  php" id="bkmrk--82"></div></div></div></div></div></div>```
POST https://server-domain.com/transactions/force-debit
```

**headers:**

```
Content-Type: application/json
X-Idempotency-Key: uuidV4
```

<div bis_size="{"x":150,"y":5890,"w":840,"h":0,"abs_x":500,"abs_y":6103}" id="bkmrk--36"><div bis_size="{"x":150,"y":5890,"w":840,"h":0,"abs_x":500,"abs_y":6103}"><div bis_size="{"x":150,"y":5890,"w":840,"h":0,"abs_x":500,"abs_y":6103}" class="code panel pdl conf-macro output-block" data-hasbody="true" data-macro-name="code"><div bis_size="{"x":150,"y":5890,"w":840,"h":0,"abs_x":500,"abs_y":6103}" class="codeContent panelContent pdl"><div bis_size="{"x":150,"y":5890,"w":840,"h":0,"abs_x":500,"abs_y":6103}"><div bis_size="{"x":150,"y":5890,"w":840,"h":0,"abs_x":500,"abs_y":6103}" class="syntaxhighlighter sh-confluence nogutter  php" id="bkmrk--83"></div></div></div></div></div></div>**request body:**

Description of the contents of the transaction object can be found above.

<div bis_size="{"x":150,"y":5974,"w":840,"h":0,"abs_x":500,"abs_y":6187}" id="bkmrk--37"><div bis_size="{"x":150,"y":5974,"w":840,"h":0,"abs_x":500,"abs_y":6187}"><div bis_size="{"x":150,"y":5974,"w":840,"h":0,"abs_x":500,"abs_y":6187}" class="code panel pdl conf-macro output-block" data-hasbody="true" data-macro-name="code"><div bis_size="{"x":150,"y":5974,"w":840,"h":0,"abs_x":500,"abs_y":6187}" class="codeContent panelContent pdl"><div bis_size="{"x":150,"y":5974,"w":840,"h":0,"abs_x":500,"abs_y":6187}"><div bis_size="{"x":150,"y":5974,"w":840,"h":0,"abs_x":500,"abs_y":6187}" class="syntaxhighlighter sh-confluence nogutter  php" id="bkmrk--84"></div></div></div></div></div></div>**response:**

```
204 No Content
```

<div bis_size="{"x":150,"y":6068,"w":840,"h":22,"abs_x":500,"abs_y":6281}" id="bkmrk--38"><div bis_size="{"x":150,"y":6068,"w":840,"h":22,"abs_x":500,"abs_y":6281}"><div bis_size="{"x":150,"y":6068,"w":840,"h":22,"abs_x":500,"abs_y":6281}" class="code panel pdl conf-macro output-block" data-hasbody="true" data-macro-name="code"><div bis_size="{"x":150,"y":6068,"w":840,"h":22,"abs_x":500,"abs_y":6281}" class="codeContent panelContent pdl"><div bis_size="{"x":150,"y":6068,"w":840,"h":22,"abs_x":500,"abs_y":6281}">  
</div></div></div></div></div>**error response:**

As mention in description section, **we do not accept transaction rejection**.

##### Credit transaction

Method is used to credit user balance.

<div bis_size="{"x":150,"y":6256,"w":840,"h":0,"abs_x":500,"abs_y":6469}" id="bkmrk--39"><div bis_size="{"x":150,"y":6256,"w":840,"h":0,"abs_x":500,"abs_y":6469}"><div bis_size="{"x":150,"y":6256,"w":840,"h":0,"abs_x":500,"abs_y":6469}" class="code panel pdl conf-macro output-block" data-hasbody="true" data-macro-name="code"><div bis_size="{"x":150,"y":6256,"w":840,"h":0,"abs_x":500,"abs_y":6469}" class="codeContent panelContent pdl"><div bis_size="{"x":150,"y":6256,"w":840,"h":0,"abs_x":500,"abs_y":6469}"><div bis_size="{"x":150,"y":6256,"w":840,"h":0,"abs_x":500,"abs_y":6469}" class="syntaxhighlighter sh-confluence nogutter  php" id="bkmrk--85"></div></div></div></div></div></div>```
POST https://server-domain.com/transactions/credit
```

**headers:**

```
Content-Type: application/json
X-Idempotency-Key: uuidV4
```

**request body:**

Description of the contents of the transaction object can be found above.

<div bis_size="{"x":150,"y":6505,"w":840,"h":22,"abs_x":500,"abs_y":6718}" id="bkmrk--40"><div bis_size="{"x":150,"y":6505,"w":840,"h":22,"abs_x":500,"abs_y":6718}"><div bis_size="{"x":150,"y":6505,"w":840,"h":22,"abs_x":500,"abs_y":6718}" class="code panel pdl conf-macro output-block" data-hasbody="true" data-macro-name="code"><div bis_size="{"x":150,"y":6505,"w":840,"h":22,"abs_x":500,"abs_y":6718}" class="codeContent panelContent pdl"><div bis_size="{"x":150,"y":6505,"w":840,"h":22,"abs_x":500,"abs_y":6718}" class="syntaxhighlighter sh-confluence nogutter  php">  
</div></div></div></div></div>**success response:**

```
204 No Content
```

**error responses:**

```
404
{
    "title": "BALANCE_NOT_FOUND",
    "detail": "cannot find requested balance"
}
```

```
422
{
    "title": "FRAUDS_DETECTED",
    "detail": "some specific details provided by server"
}
```

<div bis_size="{"x":150,"y":6926,"w":840,"h":22,"abs_x":500,"abs_y":7139}" id="bkmrk--41"><div bis_size="{"x":150,"y":6926,"w":840,"h":22,"abs_x":500,"abs_y":7139}"><div bis_size="{"x":150,"y":6926,"w":840,"h":22,"abs_x":500,"abs_y":7139}"><div bis_size="{"x":150,"y":6926,"w":840,"h":22,"abs_x":500,"abs_y":7139}" class="code panel pdl conf-macro output-block" data-hasbody="true" data-macro-name="code"><div bis_size="{"x":150,"y":6926,"w":840,"h":22,"abs_x":500,"abs_y":7139}" class="codeContent panelContent pdl"><div bis_size="{"x":150,"y":6926,"w":840,"h":22,"abs_x":500,"abs_y":7139}"><div bis_size="{"x":150,"y":6926,"w":840,"h":22,"abs_x":500,"abs_y":7139}" class="syntaxhighlighter sh-confluence nogutter  php">  
</div></div></div></div></div></div></div><div bis_size="{"x":150,"y":6948,"w":840,"h":0,"abs_x":500,"abs_y":7161}" id="bkmrk--42"><div bis_size="{"x":150,"y":6948,"w":840,"h":0,"abs_x":500,"abs_y":7161}"><div bis_size="{"x":150,"y":6948,"w":840,"h":0,"abs_x":500,"abs_y":7161}" class="code panel pdl conf-macro output-block" data-hasbody="true" data-macro-name="code"><div bis_size="{"x":150,"y":6948,"w":840,"h":0,"abs_x":500,"abs_y":7161}" class="codeContent panelContent pdl"><div bis_size="{"x":150,"y":6948,"w":840,"h":0,"abs_x":500,"abs_y":7161}"><div bis_size="{"x":150,"y":6948,"w":840,"h":0,"abs_x":500,"abs_y":7161}" class="syntaxhighlighter sh-confluence nogutter  php" id="bkmrk--86"></div></div></div></div></div></div><div bis_size="{"x":150,"y":6948,"w":840,"h":0,"abs_x":500,"abs_y":7161}" id="bkmrk--43"><div bis_size="{"x":150,"y":6948,"w":840,"h":0,"abs_x":500,"abs_y":7161}"><div bis_size="{"x":150,"y":6948,"w":840,"h":0,"abs_x":500,"abs_y":7161}" class="code panel pdl conf-macro output-block" data-hasbody="true" data-macro-name="code"><div bis_size="{"x":150,"y":6948,"w":840,"h":0,"abs_x":500,"abs_y":7161}" class="codeContent panelContent pdl"><div bis_size="{"x":150,"y":6948,"w":840,"h":0,"abs_x":500,"abs_y":7161}"><div bis_size="{"x":150,"y":6948,"w":840,"h":0,"abs_x":500,"abs_y":7161}" class="syntaxhighlighter sh-confluence nogutter  php" id="bkmrk--87"></div></div></div></div><div bis_size="{"x":150,"y":6948,"w":840,"h":0,"abs_x":500,"abs_y":7161}" class="code panel pdl conf-macro output-block" data-hasbody="true" data-macro-name="code"><div bis_size="{"x":150,"y":6948,"w":840,"h":0,"abs_x":500,"abs_y":7161}" class="codeContent panelContent pdl"><div bis_size="{"x":150,"y":6948,"w":840,"h":0,"abs_x":500,"abs_y":7161}"><div bis_size="{"x":150,"y":6948,"w":840,"h":0,"abs_x":500,"abs_y":7161}" class="syntaxhighlighter sh-confluence nogutter  php" id="bkmrk--88"></div></div></div></div></div></div>##### Force credit

<div bis_size="{"x":150,"y":7000,"w":840,"h":0,"abs_x":500,"abs_y":7213}" id="bkmrk--44"><div bis_size="{"x":150,"y":7000,"w":840,"h":0,"abs_x":500,"abs_y":7213}"><div bis_size="{"x":150,"y":7000,"w":840,"h":0,"abs_x":500,"abs_y":7213}" class="code panel pdl conf-macro output-block" data-hasbody="true" data-macro-name="code"><div bis_size="{"x":150,"y":7000,"w":840,"h":0,"abs_x":500,"abs_y":7213}" class="codeContent panelContent pdl"><div bis_size="{"x":150,"y":7000,"w":840,"h":0,"abs_x":500,"abs_y":7213}"><div bis_size="{"x":150,"y":7000,"w":840,"h":0,"abs_x":500,"abs_y":7213}" class="syntaxhighlighter sh-confluence nogutter  php" id="bkmrk--89"></div></div></div></div></div></div>Method is used to credit user balance. This kind of transaction is used to inform server side that transaction has occurred. For this request, actual transaction already happen so server can not reject this request.

```
POST https://server-domain.com/transactions/force-credit
```

**headers:**

<div bis_size="{"x":150,"y":7159,"w":840,"h":0,"abs_x":500,"abs_y":7372}" id="bkmrk--45"><div bis_size="{"x":150,"y":7159,"w":840,"h":0,"abs_x":500,"abs_y":7372}"><div bis_size="{"x":150,"y":7159,"w":840,"h":0,"abs_x":500,"abs_y":7372}" class="code panel pdl conf-macro output-block" data-hasbody="true" data-macro-name="code"><div bis_size="{"x":150,"y":7159,"w":840,"h":0,"abs_x":500,"abs_y":7372}" class="codeContent panelContent pdl"><div bis_size="{"x":150,"y":7159,"w":840,"h":0,"abs_x":500,"abs_y":7372}"><div bis_size="{"x":150,"y":7159,"w":840,"h":0,"abs_x":500,"abs_y":7372}" class="syntaxhighlighter sh-confluence nogutter  php" id="bkmrk--90"></div></div></div></div></div></div>```
Content-Type: application/json
X-Idempotency-Key: uuidV4
```

**request body:**

Description of the contents of the transaction object can be found above.

<div bis_size="{"x":150,"y":7314,"w":840,"h":22,"abs_x":500,"abs_y":7527}" id="bkmrk--46"><div bis_size="{"x":150,"y":7314,"w":840,"h":22,"abs_x":500,"abs_y":7527}"><div bis_size="{"x":150,"y":7314,"w":840,"h":22,"abs_x":500,"abs_y":7527}" class="code panel pdl conf-macro output-block" data-hasbody="true" data-macro-name="code"><div bis_size="{"x":150,"y":7314,"w":840,"h":22,"abs_x":500,"abs_y":7527}" class="syntaxhighlighter sh-confluence nogutter  php">  
</div></div></div></div>**success response:**

```
204 No Content
```

<div bis_size="{"x":150,"y":7434,"w":840,"h":0,"abs_x":500,"abs_y":7647}" id="bkmrk--47"><div bis_size="{"x":150,"y":7434,"w":840,"h":0,"abs_x":500,"abs_y":7647}"><div bis_size="{"x":150,"y":7434,"w":840,"h":0,"abs_x":500,"abs_y":7647}" class="code panel pdl conf-macro output-block" data-hasbody="true" data-macro-name="code"><div bis_size="{"x":150,"y":7434,"w":840,"h":0,"abs_x":500,"abs_y":7647}" class="codeContent panelContent pdl"><div bis_size="{"x":150,"y":7434,"w":840,"h":0,"abs_x":500,"abs_y":7647}"><div bis_size="{"x":150,"y":7434,"w":840,"h":0,"abs_x":500,"abs_y":7647}" class="syntaxhighlighter sh-confluence nogutter  php" id="bkmrk--91"></div></div></div></div></div></div>**error response:**

As mention in description section, **we do not accept transaction rejection**.

##### Reversal

Method is used to revert any changes for previous transaction. Request body will be identical to transaction witch client try to revert. If server cannot find referenced transaction then no action is required.

<div bis_size="{"x":150,"y":7618,"w":840,"h":0,"abs_x":500,"abs_y":7831}" id="bkmrk--48"><div bis_size="{"x":150,"y":7618,"w":840,"h":0,"abs_x":500,"abs_y":7831}"><div bis_size="{"x":150,"y":7618,"w":840,"h":0,"abs_x":500,"abs_y":7831}" class="code panel pdl conf-macro output-block" data-hasbody="true" data-macro-name="code"><div bis_size="{"x":150,"y":7618,"w":840,"h":0,"abs_x":500,"abs_y":7831}" class="codeContent panelContent pdl"><div bis_size="{"x":150,"y":7618,"w":840,"h":0,"abs_x":500,"abs_y":7831}"><div bis_size="{"x":150,"y":7618,"w":840,"h":0,"abs_x":500,"abs_y":7831}" class="syntaxhighlighter sh-confluence nogutter  php" id="bkmrk--92"></div></div></div></div></div></div>```
POST https://server-domain.com/transactions/reversal
```

**headers:**

```
Content-Type: application/json
X-Idempotency-Key: uuidV4
```

<div bis_size="{"x":150,"y":7784,"w":840,"h":0,"abs_x":500,"abs_y":7997}" id="bkmrk--49"><div bis_size="{"x":150,"y":7784,"w":840,"h":0,"abs_x":500,"abs_y":7997}"><div bis_size="{"x":150,"y":7784,"w":840,"h":0,"abs_x":500,"abs_y":7997}" class="code panel pdl conf-macro output-block" data-hasbody="true" data-macro-name="code"><div bis_size="{"x":150,"y":7784,"w":840,"h":0,"abs_x":500,"abs_y":7997}" class="codeContent panelContent pdl"><div bis_size="{"x":150,"y":7784,"w":840,"h":0,"abs_x":500,"abs_y":7997}"><div bis_size="{"x":150,"y":7784,"w":840,"h":0,"abs_x":500,"abs_y":7997}" class="syntaxhighlighter sh-confluence nogutter  php" id="bkmrk--93"></div></div></div></div></div></div>**request body:**

Description of the contents of the transaction object can be found above.

<div bis_size="{"x":150,"y":7867,"w":840,"h":0,"abs_x":500,"abs_y":8080}" id="bkmrk--50"><div bis_size="{"x":150,"y":7867,"w":840,"h":0,"abs_x":500,"abs_y":8080}"><div bis_size="{"x":150,"y":7867,"w":840,"h":0,"abs_x":500,"abs_y":8080}" class="code panel pdl conf-macro output-block" data-hasbody="true" data-macro-name="code"><div bis_size="{"x":150,"y":7867,"w":840,"h":0,"abs_x":500,"abs_y":8080}" class="codeContent panelContent pdl"><div bis_size="{"x":150,"y":7867,"w":840,"h":0,"abs_x":500,"abs_y":8080}"><div bis_size="{"x":150,"y":7867,"w":840,"h":0,"abs_x":500,"abs_y":8080}" class="syntaxhighlighter sh-confluence nogutter  php" id="bkmrk--94"></div></div></div></div></div></div>**success response:**

<div bis_size="{"x":150,"y":7909,"w":840,"h":0,"abs_x":500,"abs_y":8122}" id="bkmrk--51"><div bis_size="{"x":150,"y":7909,"w":840,"h":0,"abs_x":500,"abs_y":8122}"><div bis_size="{"x":150,"y":7909,"w":840,"h":0,"abs_x":500,"abs_y":8122}" class="code panel pdl conf-macro output-block" data-hasbody="true" data-macro-name="code"><div bis_size="{"x":150,"y":7909,"w":840,"h":0,"abs_x":500,"abs_y":8122}" class="codeContent panelContent pdl"><div bis_size="{"x":150,"y":7909,"w":840,"h":0,"abs_x":500,"abs_y":8122}"><div bis_size="{"x":150,"y":7909,"w":840,"h":0,"abs_x":500,"abs_y":8122}" class="syntaxhighlighter sh-confluence nogutter  php" id="bkmrk--95"></div></div></div></div></div></div>```
204 No Content
```

**error responses:**

IMPORTANT: for this method, we do not accept any error. Only<span class="Y2IQFc" lang="en"> satisfying behavior is to revert referenced transaction and no action if cannot find transaction.</span>

It tells the Partner directly to reverse the transaction as if it never happened (it was rejected by Antaca, idle timeout, etc.). Usually, there will be no referenceTransactionId in it, but there are cases where there will be. Reversal does not refund the money. It only confirms that such a transaction did not take place. The money should be refunded by force-credit.

# Your APIs for us - Notifications

We can send following information to your API endpoints:

- 3DS OTP code, so you can handle delivery to the user yourself via SMS, Push or other channel.
- Notifications about outcome of KYC process.
- Notifications about card locks/unlocks.
- Simple notification about transactions.

To make this work, you need to expose an API according to relevant section of this documentation.

### Security

To set secured server-server connection between our services Verestro requires a similar connection as in the case of client to Verestro communication based on the x509 certificate.  
In the first step, Verestro will send to the client a CSR for the dev and production environments.  
The next step is for the client to sign the CSR and send the certificate back to Verestro along with the base URL for the methods listed below. Verestro will authorize itself with each request with a certificate, which should be checked on the client side.

<div class="table-wrap" id="bkmrk-normal-encrypted-som"></div>### Idempotency Key

With some requests additional header X-Idempotency-Key could be send. This header contain unique random id allowing to identify single request.  
If client send this header, operation should be triggered only once and for any further request with this key, response should be identical - in most cases, returned from cache.

**example headers:**

```
X-Idempotency-Key: 20e87975-dbfb-4c95-b239-169516c0b707
```

### 3DS External OTP Notifier

This document describes API for external OTP notifier handling. Clients that are interested into having OTP notifier on their side must have implement this API to allow communication with Antaca to provide one time password about the transaction to client own users.

#### API 3DS External OTP Notifier

Below you will find a list of endpoints that you should implement on your server side. Please pay special attention to the appropriate security of our connection, the syntax of requests that you can expect from the Verestro side, idempotency and the exact way in which you should respond to each request.

<p class="callout info">These notifications support sending **[Idempotency Key](https://developer.verestro.com/books/card-management-system/page/your-apis-for-us#bkmrk-jwe-configuration)**</p>


##### Notification OTP

This method is used to transfer a one-time password generated for transactions without a card present in the 3DS standard.

<div class="code panel pdl conf-macro output-block" data-hasbody="true" data-macro-name="code" id="bkmrk-post-https%3A%2F%2Fserver-"><div class="codeContent panelContent pdl"><div><div class="syntaxhighlighter sh-confluence nogutter  php" id="bkmrk--59"></div></div></div></div>```
POST https://server-domain.com/notifications/otp
```

**Headers:**

```
Content-Type: application/json
X-Idempotency-Key: 20e87975-dbfb-4c95-b239-169516c0b707
```

**request body:**

<div class="code panel pdl conf-macro output-block" data-hasbody="true" data-macro-name="code" id="bkmrk-%7B-%C2%A0%C2%A0%C2%A0%C2%A0%22storagecustom"><div class="codeContent panelContent pdl"><div><div class="syntaxhighlighter sh-confluence nogutter  php" id="bkmrk--60"></div></div></div></div>```
{
    "storageCustomerId": "1337",
    "storageCardId": "1337",
    "balanceId": "b334b384-328c-11ed-a261-0242ac120002",
    "amount": "1000",
    "currency": "PLN",
    "merchantName": "merchant test",
    "otp": "1111"
}
```

**Parameters:**

<div class="table-wrap" id="bkmrk-parameter-required-d"><table class="relative-table confluenceTable tablesorter tablesorter-default stickyTableHeaders" role="grid"><colgroup><col></col><col></col><col></col><col></col></colgroup><thead class="tableFloatingHeaderOriginal"><tr class="tablesorter-headerRow" role="row"><th aria-disabled="false" aria-label="Parameter: No sort applied, activate to apply an ascending sort" aria-sort="none" class="confluenceTh tablesorter-header sortableHeader tablesorter-headerUnSorted" data-column="0" role="columnheader" scope="col" tabindex="0"><div class="tablesorter-header-inner">Parameter</div></th><th aria-disabled="false" aria-label="Required: No sort applied, activate to apply an ascending sort" aria-sort="none" class="confluenceTh tablesorter-header sortableHeader tablesorter-headerUnSorted" data-column="1" role="columnheader" scope="col" tabindex="0"><div class="tablesorter-header-inner">Required</div></th><th aria-disabled="false" aria-label="Description: No sort applied, activate to apply an ascending sort" aria-sort="none" class="confluenceTh tablesorter-header sortableHeader tablesorter-headerUnSorted" data-column="2" role="columnheader" scope="col" tabindex="0"><div class="tablesorter-header-inner">Description</div></th><th aria-disabled="false" aria-label="Values: No sort applied, activate to apply an ascending sort" aria-sort="none" class="confluenceTh tablesorter-header sortableHeader tablesorter-headerUnSorted" colspan="1" data-column="3" role="columnheader" scope="col" tabindex="0"><div class="tablesorter-header-inner">Type</div></th></tr></thead><tbody aria-live="polite" aria-relevant="all"><tr role="row"><td class="confluenceTd">storageCustomerId

</td><td class="confluenceTd">TRUE</td><td class="confluenceTd">Customer identifier</td><td class="confluenceTd" colspan="1">integer value</td></tr><tr role="row"><td class="confluenceTd">storageCardId

</td><td class="confluenceTd">TRUE</td><td class="confluenceTd">Card identifier</td><td class="confluenceTd" colspan="1">integer value</td></tr><tr role="row"><td class="confluenceTd">balanceId

</td><td class="confluenceTd">TRUE</td><td class="confluenceTd">User balance identifier</td><td class="confluenceTd" colspan="1">uuid v4</td></tr><tr role="row"><td class="confluenceTd">amount</td><td class="confluenceTd">TRUE</td><td class="confluenceTd">Transaction value in gross (minor value)</td><td class="confluenceTd" colspan="1">integer value</td></tr><tr role="row"><td class="confluenceTd">currency</td><td class="confluenceTd">TRUE</td><td class="confluenceTd">Currency 3-letters code in ISO 4217

[https://www.iban.com/currency-codes](https://www.iban.com/currency-codes)

</td><td class="confluenceTd" colspan="1">ISO 4217 3-letter code</td></tr><tr role="row"><td class="confluenceTd">merchantName

</td><td class="confluenceTd">TRUE</td><td class="confluenceTd">Merchant name

</td><td class="confluenceTd" colspan="1">string value

</td></tr><tr role="row"><td class="confluenceTd">otp</td><td class="confluenceTd">TRUE</td><td class="confluenceTd">One time password</td><td class="confluenceTd">string value</td></tr></tbody></table>

</div>**success response:**

```
204 No Content
```

**error responses:**

<p class="callout info">**If an error is received, it is not possible to retry the request.**</p>

```
Code 422
{
    "detail": "some specific details provided by server"
}
```

<div class="code panel pdl conf-macro output-block" data-hasbody="true" data-macro-name="code" id="bkmrk--2"><div class="codeContent panelContent pdl"><div><div class="syntaxhighlighter sh-confluence nogutter  php" id="bkmrk-422-%7B-%C2%A0%C2%A0%C2%A0%C2%A0%22detail%22%3A%C2%A0-0"></div></div></div></div>
### External Verification Notifier

This document describes API for processed KYC verification notifier handling. Clients that are interested into having information about status KYC verification on their side must have implement this API to allow communication with Antaca.

<p class="callout info">Notifier provide notifications only with internal KYC status processes</p>


<p class="callout info">These notifications support sending **[Idempotency Key](https://developer.verestro.com/books/card-management-system/page/your-apis-for-us#bkmrk-jwe-configuration)**</p>

##### Notification verification In-progress

This method is used to transfer information about changed KYC verification status to 'IN\_PROGRESS'.

<div class="code panel pdl conf-macro output-block" data-hasbody="true" data-macro-name="code" id="bkmrk--4"><div class="codeContent panelContent pdl"><div><div class="syntaxhighlighter sh-confluence nogutter  php" id="bkmrk--61"></div></div></div></div>```
POST https://server-domain.com/notifications/verificationInProgress
```

**Headers:**

```
Content-Type: application/json
X-Idempotency-Key: 20e87975-dbfb-4c95-b239-169516c0b707
```

**request body:**

```JSON
{
  	"verificationId": "6faaa45a-41f6-4922-95fe-16e316ba7e91", 
    "userId": "1337",
	"email": "leonbakiewicz@gmail.com",  
    "firstName": "Leon",
    "lastName": "Bakiewicz",
    "status": "IN_PROGRESS",
  	"reason": null,
}

```

**response:**

```
204 No Content
```

##### Notification verification accepted

This method is used to transfer information about changed KYC verification status to 'ACCEPTED'.

```
POST https://server-domain.com/notifications/verificationAccepted
```

**Headers:**

```
Content-Type: application/json
X-Idempotency-Key: 20e87975-dbfb-4c95-b239-169516c0b707
```

**request body:**

```JSON
{
  	"verificationId": "6faaa45a-41f6-4922-95fe-16e316ba7e91", 
    "userId": "1337",
	"email": "leonbakiewicz@gmail.com",  
    "firstName": "Leon",
    "lastName": "Bakiewicz",
    "status": "ACCEPTED",
  	"reason": null,
}

```

**response:**

```
204 No Content
```

#####   


##### Notification verification rejected

This method is used to transfer information about changed KYC verification status to 'REJECTED'.

<div class="code panel pdl conf-macro output-block" data-hasbody="true" data-macro-name="code" id="bkmrk--6"><div class="codeContent panelContent pdl"><div><div class="syntaxhighlighter sh-confluence nogutter  php" id="bkmrk--62"></div></div></div></div>```
POST https://server-domain.com/notifications/verificationRejected
```

**Headers:**

```
Content-Type: application/json
X-Idempotency-Key: 20e87975-dbfb-4c95-b239-169516c0b707
```

**request body:**

```JSON
{
  	"verificationId": "6faaa45a-41f6-4922-95fe-16e316ba7e91", 
    "userId": "1337",
	"email": "leonbakiewicz@gmail.com",  
    "firstName": "Leon",
    "lastName": "Bakiewicz",
    "status": "REJECTED",
  	"reason": 'INVALID_CUSTOMER_DATA',
}

```

**response:**

```
204 No Content
```

**Parameters:**

<div class="table-wrap" id="bkmrk-parameter-required-d-0"><table class="relative-table confluenceTable tablesorter tablesorter-default stickyTableHeaders" role="grid" style="width: 80.3704%; height: 545.835px;"><colgroup><col style="width: 15.5385%;"></col><col style="width: 12.1541%;"></col><col style="width: 56.9228%;"></col><col style="width: 15.3846%;"></col></colgroup><thead class="tableFloatingHeaderOriginal"><tr class="tablesorter-headerRow" role="row" style="height: 46.5938px;"><th aria-disabled="false" aria-label="Parameter: No sort applied, activate to apply an ascending sort" aria-sort="none" class="confluenceTh tablesorter-header sortableHeader tablesorter-headerUnSorted" data-column="0" role="columnheader" scope="col" style="height: 46.5938px;" tabindex="0"><div class="tablesorter-header-inner">Parameter</div></th><th aria-disabled="false" aria-label="Required: No sort applied, activate to apply an ascending sort" aria-sort="none" class="confluenceTh tablesorter-header sortableHeader tablesorter-headerUnSorted" data-column="1" role="columnheader" scope="col" style="height: 46.5938px;" tabindex="0"><div class="tablesorter-header-inner">Required</div></th><th aria-disabled="false" aria-label="Description: No sort applied, activate to apply an ascending sort" aria-sort="none" class="confluenceTh tablesorter-header sortableHeader tablesorter-headerUnSorted" data-column="2" role="columnheader" scope="col" style="height: 46.5938px;" tabindex="0"><div class="tablesorter-header-inner">Description</div></th><th aria-disabled="false" aria-label="Values: No sort applied, activate to apply an ascending sort" aria-sort="none" class="confluenceTh tablesorter-header sortableHeader tablesorter-headerUnSorted" data-column="3" role="columnheader" scope="col" style="height: 46.5938px;" tabindex="0"><div class="tablesorter-header-inner">Type</div></th></tr></thead><tbody aria-live="polite" aria-relevant="all"><tr style="height: 35.3984px;"><td style="height: 35.3984px;">verificationId

</td><td style="height: 35.3984px;">TRUE</td><td style="height: 35.3984px;">Verification identifier</td><td style="height: 35.3984px;">uuid v4</td></tr><tr role="row" style="height: 49.5938px;"><td class="confluenceTd" style="height: 49.5938px;">userId

</td><td class="confluenceTd" style="height: 49.5938px;">TRUE</td><td class="confluenceTd" style="height: 49.5938px;">User identifier</td><td class="confluenceTd" style="height: 49.5938px;">integer value</td></tr><tr role="row" style="height: 29.7969px;"><td style="height: 29.7969px;">email</td><td style="height: 29.7969px;">TRUE</td><td style="height: 29.7969px;">User's email address</td><td style="height: 29.7969px;">string value</td></tr><tr style="height: 35.3984px;"><td style="height: 35.3984px;">firstName</td><td style="height: 35.3984px;">TRUE</td><td style="height: 35.3984px;">User first name</td><td style="height: 35.3984px;">string value

</td></tr><tr style="height: 29.7969px;"><td style="height: 29.7969px;">lastName</td><td style="height: 29.7969px;">TRUE</td><td style="height: 29.7969px;">User last name</td><td style="height: 29.7969px;">string value</td></tr><tr style="height: 109.234px;"><td class="confluenceTd" style="height: 109.234px;">status</td><td class="confluenceTd" style="height: 109.234px;">TRUE</td><td class="confluenceTd" style="height: 109.234px;">Verification status. Possible values:

- REJECTED
- IN\_PROGRESS
- ACCEPTED

</td><td class="confluenceTd" style="height: 109.234px;">string value</td></tr><tr style="height: 210.023px;"><td style="height: 210.023px;">reason</td><td style="height: 210.023px;">TRUE</td><td style="height: 210.023px;">Verification status reason

**ACCEPTED**: null

**IN\_PROGRESS**: null

**REJECTED**:

- INVALID\_CUSTOMER\_DATA
- BLURRED\_DOCUMENT\_PHOTO
- INVALID\_DOCUMENT\_PHOTO
- BLURRED\_SELFIE
- INVALID\_SELFIE

</td><td style="height: 210.023px;">null/string value</td></tr></tbody></table>

</div>**Sensitive data:**

This method is used to share your public key for encryption.

```
GET https://server-domain.com/public-key
```

**response:**

```
200 OK
{
  "publicKey": "QSBwdWJsaWMga2V5IHNob3VsZCBiZSBoZXJlIGhvd2V2ZXIgaXQgd2FzIHRvbyBsb25nIDoo"
}
```

### External Card Block Notifier

This document describes an external API for communicating card blocks, which requires client-side implementation for clients wishing to receive these notifications.

#### API External Card Notifier for Locks

This method is used to transfer information about a card's blocking status and the reason for it.

```
POST https://server-domain.com/notifications/cardLocked
```


<div class="code panel pdl conf-macro output-block" data-hasbody="true" data-macro-name="code" id="bkmrk--7"><div class="codeContent panelContent pdl"><div><div class="syntaxhighlighter sh-confluence nogutter  php" id="bkmrk--8"></div></div></div></div>**Headers:**

```
Content-Type: application/json
```

**Request body:**

```
{
  "dcCardId": "11",
  "date": "2025-06-17T13:42:54+00:00",
  "reason": "PIN_TRIES_EXCEEDED"
}
```

<div class="code panel pdl conf-macro output-block" data-hasbody="true" data-macro-name="code" id="bkmrk--9"><div class="codeContent panelContent pdl"><div><div class="syntaxhighlighter sh-confluence nogutter  php" id="bkmrk--10"></div></div></div></div>**Parameters:**

<div class="table-wrap" id="bkmrk-parameter-required-d-1"><table class="relative-table confluenceTable tablesorter tablesorter-default stickyTableHeaders" role="grid" style="width: 100.357%; height: 277.563px;"><colgroup><col style="width: 18.6289%;"></col><col style="width: 12.2206%;"></col><col style="width: 43.2191%;"></col><col style="width: 25.9314%;"></col></colgroup><thead class="tableFloatingHeaderOriginal"><tr class="tablesorter-headerRow" role="row" style="height: 29.7969px;"><th aria-disabled="false" aria-label="Parameter: No sort applied, activate to apply an ascending sort" aria-sort="none" class="confluenceTh tablesorter-header sortableHeader tablesorter-headerUnSorted" data-column="0" role="columnheader" scope="col" style="height: 29.7969px;" tabindex="0"><div class="tablesorter-header-inner">Parameter</div></th><th aria-disabled="false" aria-label="Required: No sort applied, activate to apply an ascending sort" aria-sort="none" class="confluenceTh tablesorter-header sortableHeader tablesorter-headerUnSorted" data-column="1" role="columnheader" scope="col" style="height: 29.7969px;" tabindex="0"><div class="tablesorter-header-inner">Required</div></th><th aria-disabled="false" aria-label="Description: No sort applied, activate to apply an ascending sort" aria-sort="none" class="confluenceTh tablesorter-header sortableHeader tablesorter-headerUnSorted" data-column="2" role="columnheader" scope="col" style="height: 29.7969px;" tabindex="0"><div class="tablesorter-header-inner">Description</div></th><th aria-disabled="false" aria-label="Values: No sort applied, activate to apply an ascending sort" aria-sort="none" class="confluenceTh tablesorter-header sortableHeader tablesorter-headerUnSorted" data-column="3" role="columnheader" scope="col" style="height: 29.7969px;" tabindex="0"><div class="tablesorter-header-inner">Type</div></th></tr></thead><tbody aria-live="polite" aria-relevant="all"><tr role="row" style="height: 29.7969px;"><td class="confluenceTd" style="height: 29.7969px;">dcCardId

</td><td class="confluenceTd" style="height: 29.7969px;">TRUE</td><td class="confluenceTd" style="height: 29.7969px;">Card identifier</td><td class="confluenceTd" style="height: 29.7969px;">integer value</td></tr><tr role="row" style="height: 29.7969px;"><td class="confluenceTd" style="height: 29.7969px;">date

</td><td class="confluenceTd" style="height: 29.7969px;">TRUE</td><td class="confluenceTd" style="height: 29.7969px;">Timestamp of lock</td><td class="confluenceTd" style="height: 29.7969px;">datetime</td></tr><tr role="row" style="height: 29.7969px;"><td class="confluenceTd" style="height: 29.7969px;">reason

</td><td class="confluenceTd" style="height: 29.7969px;">TRUE</td><td class="confluenceTd" style="height: 29.7969px;">Reason of lock</td><td class="confluenceTd" style="height: 29.7969px;">string value,

possible values:

CARD\_LOST

CARD\_STOLEN

PENDING\_QUERY

CARD\_CONSOLIDATION

CARD\_INACTIVE

PIN\_TRIES\_EXCEEDED

SUSPECTED\_FRAUD

CARD\_REPLACED

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

</div>**Success response:**

```
204 No Content
```

#### API External Card Notifier for Unlocks

This method is used to transfer information about that card is unlocked.

```
POST https://server-domain.com/notifications/cardUnlocked
```

**Headers:**

```
Content-Type: application/json
```

**Request body:**

```
{
  "dcCardId": "11",
  "date": "2025-06-17T13:42:54+00:00",
}
```

<div class="code panel pdl conf-macro output-block" data-hasbody="true" data-macro-name="code" id="bkmrk--12"><div class="codeContent panelContent pdl"><div><div class="syntaxhighlighter sh-confluence nogutter  php" id="bkmrk--13"></div></div></div></div>**Parameters:**

<div class="table-wrap" id="bkmrk-parameter-required-d-2"><table class="relative-table confluenceTable tablesorter tablesorter-default stickyTableHeaders" role="grid" style="width: 99.881%; height: 277.563px;"><colgroup><col style="width: 18.6078%;"></col><col style="width: 12.1821%;"></col><col style="width: 43.2396%;"></col><col style="width: 25.9705%;"></col></colgroup><thead class="tableFloatingHeaderOriginal"><tr class="tablesorter-headerRow" role="row" style="height: 29.7969px;"><th aria-disabled="false" aria-label="Parameter: No sort applied, activate to apply an ascending sort" aria-sort="none" class="confluenceTh tablesorter-header sortableHeader tablesorter-headerUnSorted" data-column="0" role="columnheader" scope="col" style="height: 29.7969px;" tabindex="0"><div class="tablesorter-header-inner">Parameter</div></th><th aria-disabled="false" aria-label="Required: No sort applied, activate to apply an ascending sort" aria-sort="none" class="confluenceTh tablesorter-header sortableHeader tablesorter-headerUnSorted" data-column="1" role="columnheader" scope="col" style="height: 29.7969px;" tabindex="0"><div class="tablesorter-header-inner">Required</div></th><th aria-disabled="false" aria-label="Description: No sort applied, activate to apply an ascending sort" aria-sort="none" class="confluenceTh tablesorter-header sortableHeader tablesorter-headerUnSorted" data-column="2" role="columnheader" scope="col" style="height: 29.7969px;" tabindex="0"><div class="tablesorter-header-inner">Description</div></th><th aria-disabled="false" aria-label="Values: No sort applied, activate to apply an ascending sort" aria-sort="none" class="confluenceTh tablesorter-header sortableHeader tablesorter-headerUnSorted" data-column="3" role="columnheader" scope="col" style="height: 29.7969px;" tabindex="0"><div class="tablesorter-header-inner">Type</div></th></tr></thead><tbody aria-live="polite" aria-relevant="all"><tr role="row" style="height: 29.7969px;"><td class="confluenceTd" style="height: 29.7969px;">dcCardId

</td><td class="confluenceTd" style="height: 29.7969px;">TRUE</td><td class="confluenceTd" style="height: 29.7969px;">Card identifier</td><td class="confluenceTd" style="height: 29.7969px;">integer value</td></tr><tr role="row" style="height: 29.7969px;"><td class="confluenceTd" style="height: 29.7969px;">date

</td><td class="confluenceTd" style="height: 29.7969px;">TRUE</td><td class="confluenceTd" style="height: 29.7969px;">Timestamp of unlock</td><td class="confluenceTd" style="height: 29.7969px;">datetime</td></tr></tbody></table>

</div>**Success response:**

```
204 No Content
```

### External Transactional Lock Reason Notifier

This document describes an external API for communicating transactional lock reason actions, which requires client-side implementation for clients wishing to receive these notifications.

#### API External Transactional Lock Reason Added

This method is used to transfer information about that transactional lock reason is added.

```
POST https://server-domain.com/notifications/transactionalLockReasonAdded
```

**Headers:**

```
Content-Type: application/json
X-Idempotency-Key: 20e87975-dbfb-4c95-b239-169516c0b707
```

**Request body:**

```
{
  "resourceType": "corporation",
  "resourceId": "a3f33118-946d-4b9c-b27f-e009d28355fa",
  "lockReason": "FRAUD_SUSPECTED",
  "timestamp": "2025-06-17T13:42:54+00:00",
}
```

<div class="code panel pdl conf-macro output-block" data-hasbody="true" data-macro-name="code" id="bkmrk--11"><div class="codeContent panelContent pdl"><div><div class="syntaxhighlighter sh-confluence nogutter  php" id="bkmrk--14"></div></div></div></div>**Parameters:**

<div class="table-wrap" id="bkmrk-parameter-required-d-3"><table class="relative-table confluenceTable tablesorter tablesorter-default stickyTableHeaders" role="grid" style="width: 99.881%; height: 277.563px;"><colgroup><col style="width: 18.6078%;"></col><col style="width: 12.1821%;"></col><col style="width: 43.2396%;"></col><col style="width: 25.9705%;"></col></colgroup><thead class="tableFloatingHeaderOriginal"><tr class="tablesorter-headerRow" role="row" style="height: 29.7969px;"><th aria-disabled="false" aria-label="Parameter: No sort applied, activate to apply an ascending sort" aria-sort="none" class="confluenceTh tablesorter-header sortableHeader tablesorter-headerUnSorted" data-column="0" role="columnheader" scope="col" style="height: 29.7969px;" tabindex="0"><div class="tablesorter-header-inner">Parameter</div></th><th aria-disabled="false" aria-label="Required: No sort applied, activate to apply an ascending sort" aria-sort="none" class="confluenceTh tablesorter-header sortableHeader tablesorter-headerUnSorted" data-column="1" role="columnheader" scope="col" style="height: 29.7969px;" tabindex="0"><div class="tablesorter-header-inner">Required</div></th><th aria-disabled="false" aria-label="Description: No sort applied, activate to apply an ascending sort" aria-sort="none" class="confluenceTh tablesorter-header sortableHeader tablesorter-headerUnSorted" data-column="2" role="columnheader" scope="col" style="height: 29.7969px;" tabindex="0"><div class="tablesorter-header-inner">Description</div></th><th aria-disabled="false" aria-label="Values: No sort applied, activate to apply an ascending sort" aria-sort="none" class="confluenceTh tablesorter-header sortableHeader tablesorter-headerUnSorted" data-column="3" role="columnheader" scope="col" style="height: 29.7969px;" tabindex="0"><div class="tablesorter-header-inner">Type</div></th></tr></thead><tbody aria-live="polite" aria-relevant="all"><tr role="row" style="height: 29.7969px;"><td class="confluenceTd" style="height: 29.7969px;">resourceType

</td><td class="confluenceTd" style="height: 29.7969px;">TRUE</td><td class="confluenceTd" style="height: 29.7969px;">Type of resource</td><td class="confluenceTd" style="height: 29.7969px;">string value:  
- corporation  
- user</td></tr><tr role="row" style="height: 29.7969px;"><td class="confluenceTd" style="height: 29.7969px;">resourceId

</td><td class="confluenceTd" style="height: 29.7969px;">TRUE</td><td class="confluenceTd" style="height: 29.7969px;">Id of resource</td><td class="confluenceTd" style="height: 29.7969px;">numeric string or uuid</td></tr><tr><td>lockReason

</td><td>TRUE</td><td>Reason of lock</td><td>string value:

DOCUMENT\_EXPIRED  
FRAUD\_SUSPECTED  
SCREENING\_DETECTED  
TEMPORARY\_LOCKED  
PEKAO\_LOCK  
ZEN\_LOCK  
PROSECUTOR\_LOCK  
FENIGE\_LOCK  
POLICE\_LOCK  
MANY\_CARDS\_LOCK  
NAGATIVE\_VERIFICATION  
PRADO\_VERIFICATION

</td></tr><tr><td>timestamp

</td><td>TRUE</td><td>Datetime of add/remove lock reason</td><td>datetime

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

</div>**Success response:**

```
204 No Content
```

#### API External Transactional Lock Reason Removed

This method is used to transfer information about that transactional lock reason is removed.

```
POST https://server-domain.com/notifications/transactionalLockReasonRemoved
```

**Headers:**

```
Content-Type: application/json
X-Idempotency-Key: 20e87975-dbfb-4c95-b239-169516c0b707
```

**Request body:**

```
{
  "resourceType": "corporation",
  "resourceId": "a3f33118-946d-4b9c-b27f-e009d28355fa",
  "lockReason": "FRAUD_SUSPECTED",
  "timestamp": "2025-06-17T13:42:54+00:00",
}
```

<div class="code panel pdl conf-macro output-block" data-hasbody="true" data-macro-name="code" id="bkmrk--15"><div class="codeContent panelContent pdl"><div><div class="syntaxhighlighter sh-confluence nogutter  php" id="bkmrk--16"></div></div></div></div>**Parameters:**

<div class="table-wrap" id="bkmrk-parameter-required-d-4"><table class="relative-table confluenceTable tablesorter tablesorter-default stickyTableHeaders" role="grid" style="width: 99.881%; height: 277.563px;"><colgroup><col style="width: 18.6078%;"></col><col style="width: 12.1821%;"></col><col style="width: 43.2396%;"></col><col style="width: 25.9705%;"></col></colgroup><thead class="tableFloatingHeaderOriginal"><tr class="tablesorter-headerRow" role="row" style="height: 29.7969px;"><th aria-disabled="false" aria-label="Parameter: No sort applied, activate to apply an ascending sort" aria-sort="none" class="confluenceTh tablesorter-header sortableHeader tablesorter-headerUnSorted" data-column="0" role="columnheader" scope="col" style="height: 29.7969px;" tabindex="0"><div class="tablesorter-header-inner">Parameter</div></th><th aria-disabled="false" aria-label="Required: No sort applied, activate to apply an ascending sort" aria-sort="none" class="confluenceTh tablesorter-header sortableHeader tablesorter-headerUnSorted" data-column="1" role="columnheader" scope="col" style="height: 29.7969px;" tabindex="0"><div class="tablesorter-header-inner">Required</div></th><th aria-disabled="false" aria-label="Description: No sort applied, activate to apply an ascending sort" aria-sort="none" class="confluenceTh tablesorter-header sortableHeader tablesorter-headerUnSorted" data-column="2" role="columnheader" scope="col" style="height: 29.7969px;" tabindex="0"><div class="tablesorter-header-inner">Description</div></th><th aria-disabled="false" aria-label="Values: No sort applied, activate to apply an ascending sort" aria-sort="none" class="confluenceTh tablesorter-header sortableHeader tablesorter-headerUnSorted" data-column="3" role="columnheader" scope="col" style="height: 29.7969px;" tabindex="0"><div class="tablesorter-header-inner">Type</div></th></tr></thead><tbody aria-live="polite" aria-relevant="all"><tr role="row" style="height: 29.7969px;"><td class="confluenceTd" style="height: 29.7969px;">resourceType

</td><td class="confluenceTd" style="height: 29.7969px;">TRUE</td><td class="confluenceTd" style="height: 29.7969px;">Type of resource</td><td class="confluenceTd" style="height: 29.7969px;">string value:  
- corporation  
- user</td></tr><tr role="row" style="height: 29.7969px;"><td class="confluenceTd" style="height: 29.7969px;">resourceId

</td><td class="confluenceTd" style="height: 29.7969px;">TRUE</td><td class="confluenceTd" style="height: 29.7969px;">Id of resource</td><td class="confluenceTd" style="height: 29.7969px;">numeric string or uuid</td></tr><tr><td>lockReason

</td><td>TRUE</td><td>Reason of lock</td><td>string value:

DOCUMENT\_EXPIRED  
FRAUD\_SUSPECTED  
SCREENING\_DETECTED  
TEMPORARY\_LOCKED  
PEKAO\_LOCK  
ZEN\_LOCK  
PROSECUTOR\_LOCK  
FENIGE\_LOCK  
POLICE\_LOCK  
MANY\_CARDS\_LOCK  
NAGATIVE\_VERIFICATION  
PRADO\_VERIFICATION

</td></tr><tr><td>timestamp

</td><td>TRUE</td><td>Datetime of add/remove lock reason</td><td>datetime

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

</div>**Success response:**

```
204 No Content
```




### Transactions notifier

To get notifications about transactions use [Transaction History Core API](https://developer.verestro.com/books/transaction-history-api/page/technical-documentation-thc-external-api)

# Digital Cards Design

### <span style="color: #1c1e3f;">Design Specifications for Graphic Designers and Customers Required for the MDES Manager Application</span>

1. <span style="color: #1c1e3f;">Sizes required for the MDES Manager: **1536 px x 969 px**</span>
2. <span style="color: #1c1e3f;">File format: **PNG** </span>  
    <span style="color: #1c1e3f;">If you are submitting files to be verified by Verestro, you will need the SVG format.</span>
3. <span style="color: #1c1e3f;">The corners of the cards should not be rounded. The corners will be rounded in the application.</span>
4. **Safety shape.** If the card background blends with the Mastercard Symbol and reduces its visibility, a **safety shape** must be used to ensure sufficient contrast. Mastercard allows two forms: **oval** (an oval around the mark) or **corner** (a black or white corner shape). This guarantees the symbol remains clear and readable. [![safety shape_1.png](https://developer.verestro.com/uploads/images/gallery/2025-11/scaled-1680-/M8Ysafety-shape-1.png)](https://developer.verestro.com/uploads/images/gallery/2025-11/M8Ysafety-shape-1.png)
    
    [![safety shape_2 1.png](https://developer.verestro.com/uploads/images/gallery/2025-11/scaled-1680-/safety-shape-2-1.png)](https://developer.verestro.com/uploads/images/gallery/2025-11/safety-shape-2-1.png)
    
      
    <span style="color: #1c1e3f;">[![digital cards.png](https://developer.verestro.com/uploads/images/gallery/2024-02/scaled-1680-/Jbvdigital-cards.png)](https://developer.verestro.com/uploads/images/gallery/2024-02/Jbvdigital-cards.png)</span>

<p class="callout info"><span style="color: #000000;"><span style="color: #1c1e3f;">Remember that in the Apple Pay and Google Pay applications, the card number is placed in the bottom left corner of the cards. The card numbers should be visible.</span></span></p>

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

<span style="color: #1c1e3f;">**What do we need for MDES Manager?**<span style="background-color: #c2e0f4;">**<span style="background-color: #f1c40f;">  
</span>**</span></span>  
<span style="color: #1c1e3f;">1. Preparation of the **card for** **MDES Manager** (according to the guidelines above).</span>  
<span style="color: #1c1e3f;">2. Client's **logo for MDES Manager** (size: 1372px x 293px).  
3\. Client **icon (favicon) for MDES Manager** (size: 100px x 100px).</span>  
  
<span style="color: #1c1e3f;">**What do we need for 3ds?**<span style="background-color: #f1c40f;">  
  
</span>1. Preparation of the client's logo for **3DS** (size: 129px x 60 px).</span>

<span style="color: #1c1e3f;">The UX department will help provide logos and icons in appropriate sizes, please provide the icon and logo that will appear on a white background.</span>

<span style="color: #1c1e3f;">**Download the Mastercard logo in SVG format for your project:**</span>

<span style="color: #1c1e3f;">**[![logo@2x.png](https://developer.verestro.com/uploads/images/gallery/2024-03/scaled-1680-/logo-at-2x.png)](https://developer.verestro.com/attachments/19)**</span>

# Physical Cards Design

### <span style="color: #1c1e3f;">Required Design Specifications for Graphic Designers and Customers Required </span>  


<span style="color: #1c1e3f;">You should prepare <span style="text-decoration: underline;">**two files**</span>:</span>

- <span style="color: #1c1e3f;">**Preview (png).**</span>
- <span style="color: #1c1e3f;">**For printing (pdf, ai).**</span>

<span style="color: #1c1e3f;">**For printing (pdf, ai):**</span>

1. <span style="color: #1c1e3f;">Sizes required : **242 px x 153 px (The workspace in Adobe Illustrator should be exactly this size!)** </span>
2. <span style="color: #1c1e3f;">Bleeds: **5 mm** Below is a <span style="color: rgb(0, 0, 0);">preview</span> of the view in Adobe Illustrator. Note the size of the workspace and the visible bleeds (red line).  
    </span>[![image.png](https://developer.verestro.com/uploads/images/gallery/2025-04/scaled-1680-/e8Vimage.png)](https://developer.verestro.com/uploads/images/gallery/2025-04/e8Vimage.png)
    
    <span style="color: #1c1e3f;">  
    </span>
3. <span style="color: #1c1e3f;">Placed logos should be sent as **vector graphic** (paths, curves).</span>
4. <span style="color: #1c1e3f;">Colour images should have at least **300 dpi** print resolution.</span>
5. <span style="color: #1c1e3f;">Indicate the fonts used and save them on the data carrier or **convert any text to curves**. </span>
6. <span style="text-decoration: underline;"><span style="color: rgb(28, 30, 63); text-decoration: underline;">On the printing card we put only:</span></span>
    - <span style="color: #1c1e3f;">Your logo (vector).</span>
    - <span style="color: #1c1e3f;">Authorized signature.</span>
    - <span style="color: #1c1e3f;">All texts. This text "This card is issued by ... " is required.</span>
    - <span style="color: #1c1e3f;">Custom service</span>
    - <span style="color: #1c1e3f;">Category Identifier (**"credit", "debit" or "prepaid"**)  
        </span>
    - <span style="color: #1c1e3f;">Contactless symbol. [![nfc_black.png](https://developer.verestro.com/uploads/images/gallery/2025-04/scaled-1680-/nfc-black.png)](https://developer.verestro.com/uploads/images/gallery/2025-04/nfc-black.png)  
        </span>

**<span style="color: #1c1e3f;">Preview (png): </span>**

The preview includes **all elements** as for printing. Additionally, you need to include elements such as: Contactless Indicator, Mastercard Brand Mark, chip, signature panel (optional) &amp; signature legend (optional), cardholder, card number, magnetic stripe, Mastercard hologram, valid thru.  
more inspiration: [https://www.figma.com/design/MY1hIQy8YdvEl9WEuqeqI3/Physical-cards?node-id=239-42&amp;t=Ro7GQEsQjRX0CML3-1](https://www.figma.com/design/MY1hIQy8YdvEl9WEuqeqI3/Physical-cards?node-id=239-42&t=Ro7GQEsQjRX0CML3-1)

**<span style="text-decoration: underline; color: rgb(0, 0, 0);">Don’t forget!</span>  
Safety shape.** If the card background blends with the Mastercard Symbol and reduces its visibility, a **safety shape** must be used to ensure sufficient contrast. Mastercard allows two forms: **oval** (an oval around the mark) or **corner** (a black or white corner shape). This guarantees the symbol remains clear and readable.

[![safety shape_1.png](https://developer.verestro.com/uploads/images/gallery/2025-11/scaled-1680-/nw3safety-shape-1.png)](https://developer.verestro.com/uploads/images/gallery/2025-11/nw3safety-shape-1.png)

[![safety shape_2 1.png](https://developer.verestro.com/uploads/images/gallery/2025-11/scaled-1680-/BT4safety-shape-2-1.png)](https://developer.verestro.com/uploads/images/gallery/2025-11/BT4safety-shape-2-1.png)

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

<p class="callout info"><span style="color: #000000;"><span style="color: #1c1e3f;">For a more detailed description of how to prepare the card and its appearance options, see the [Mastercard Design Specifications](https://www.mastercard.com/brandcenter/en/download-artwork) for Graphic Designers and Customers.</span></span></p>

<span style="color: #1c1e3f;"> **Download the Mastercard logo in SVG format for your project:** </span>

[![logo@2x.png](https://developer.verestro.com/uploads/images/gallery/2024-03/scaled-1680-/logo-at-2x.png)](https://developer.verestro.com/attachments/20)

**Download the NFC symbol in SVG format:**

[![nfc_black.png](https://developer.verestro.com/uploads/images/gallery/2025-04/scaled-1680-/VXwnfc-black.png)](https://developer.verestro.com/attachments/26)

# Legacy Transactions Notifier

<p class="callout warning">This document describes an API, that was deprecated and exists only to support legacy integrations. If you're working on new integration **do not use** this API. Use **[Transaction History Core API](https://developer.verestro.com/books/transaction-history-api/page/technical-documentation-thc-external-api)** instead.</p>

This document describes API for external transaction event notifications. Client who is interested in receiving notification about any transaction that occur in system, must implement below API.

<p class="callout info">These notifications support sending [**Idempotency Key**](https://developer.verestro.com/books/card-issuing-and-core-banking/page/your-apis-for-us-notifications#bkmrk-jwe-configuration)</p>

#### Security

Security for this endpoint is described in **The** **Security** section in the beginning of this page.

#### Api

For obtaining transaction event notification the Antaca is using single endpoint.

```HTML
POST https://server-domain.com/notifications/transaction
```

##### Header

```
Content-Type: application/json
X-Idempotency-Key: 51ec546d-049a-4b8f-a05e-933938656eb2
```

#####   


##### Request body  


```YAML
{
  "status": "SUCCESS",
  "date": "2023-11-17T11:32:16+00:00",
  "description": "APPROVED",
  "transaction": {
    "id": "b4f534ef-77c2-4f16-ab4d-496806a76fb6",
    "balanceId": "60036f20-3b2c-470e-b9de-3c6cfbe8a5ff",
    "resourceId": "b3de5060-2ae2-4f3c-9b94-9c27a90dc6fe",
    "resource": "card",
    "cardId": "357970",
    "externalTransactionId": "d275ecb8-138e-4d0e-b5bf-c4158b4ce516",
    "referenceExternalTransactionId": null,
    "type": "POS",
    "category": "DEBIT",
    "amount": 10000,
    "currency": "PLN",
    "originalAmount": 12300,
    "originalCurrency": "PLN",
    "status": "AUTHORIZED",
    "description": "FrogShop Lublin POL",
    "date": "2023-11-17T11:32:16+00:00",
    "referenceExternalTransactionDate": null,
    "transactionData": {
      "mcc": "5122",
      "merchantIdentifier": "12345",
      "captureMode": "NFC",
      "lastFourDigits": "0911",
      "acquirerCountry": "POL"
    }
  }
}
```

**Parameters:**

<table border="1" id="bkmrk-parameter-required-d-4" style="border-collapse: collapse; width: 100%; border-color: #000000; border-style: none; height: 283.4px;"><tbody><tr style="height: 29.8px;"><td style="width: 24.9691%; height: 29.8px;">**Name**  
</td><td style="width: 24.9691%; height: 29.8px;">**Required**  
</td><td style="width: 24.9691%; height: 29.8px;">**Description**  
</td><td style="width: 24.9691%; height: 29.8px;">**Allowed values**  
</td></tr><tr style="height: 147.4px;"><td style="width: 24.9691%; height: 147.4px;">status  
</td><td style="width: 24.9691%; height: 147.4px;">TRUE</td><td style="width: 24.9691%; height: 147.4px;">Status of the transaction processing.   
**SUCCESS** - indicates that the transaction has been successfully processed in Antaca.   
**DECLINED** - indicates that the transaction has been declined.  
**INVALID -** indicates that the transaction can't be processed.  
</td><td style="width: 24.9691%; height: 147.4px;">SUCCESS, DECLINED, INVALID  
</td></tr><tr style="height: 46.6px;"><td style="width: 24.9691%; height: 46.6px;">date  
</td><td style="width: 24.9691%; height: 46.6px;">TRUE</td><td style="width: 24.9691%; height: 46.6px;">Date time of request generation in ISO 8601 date  
</td><td style="width: 24.9691%; height: 46.6px;">ISO 8601 date, eg. 2023-11-16T13:41:40+00:00  
</td></tr><tr style="height: 29.8px;"><td style="width: 24.9691%; height: 29.8px;">description  
</td><td style="width: 24.9691%; height: 29.8px;">TRUE</td><td style="width: 24.9691%; height: 29.8px;">Describes more details for returned status  
</td><td style="width: 24.9691%; height: 29.8px;">describes in **description section details**  
</td></tr><tr style="height: 29.8px;"><td style="width: 24.9691%; height: 29.8px;">transaction  
</td><td style="width: 24.9691%; height: 29.8px;">TRUE  
</td><td style="width: 24.9691%; height: 29.8px;">The transaction properties  
</td><td style="width: 24.9691%; height: 29.8px;">transaction object described in **the** **transaction object** section</td></tr></tbody></table>

**Description details:**

<table border="1" id="bkmrk-%C2%A0-3" style="border-collapse: collapse; width: 100%; height: 813.8px;"><tbody><tr style="height: 29.8px;"><td style="width: 50.0494%; height: 29.8px;">**Value**  
</td><td style="width: 50.0494%; height: 29.8px;">**Description**  
</td></tr><tr style="height: 46.6px;"><td style="width: 50.0494%; height: 46.6px;">APPROVED</td><td style="width: 50.0494%; height: 46.6px;">Indicates a successful transaction. Antaca processed the transaction with no errors. </td></tr><tr style="height: 29.8px;"><td style="width: 50.0494%; height: 29.8px;">EXCEEDS\_AMOUNT\_LIMIT</td><td style="width: 50.0494%; height: 29.8px;">Occurs when the transaction amount exceeds card limits.  
</td></tr><tr style="height: 29.8px;"><td style="width: 50.0494%; height: 29.8px;">INSUFFICIENT\_FUNDS</td><td style="width: 50.0494%; height: 29.8px;">There is not enough money on balance.  
</td></tr><tr style="height: 29.8px;"><td style="width: 50.0494%; height: 29.8px;">CARD\_NOT\_FOUND</td><td style="width: 50.0494%; height: 29.8px;">Antaca cannot find card for which the transaction was invoked.  
</td></tr><tr style="height: 46.6px;"><td style="width: 50.0494%; height: 46.6px;">BALANCE\_NOT\_FOUND</td><td style="width: 50.0494%; height: 46.6px;">Antaca cannot find balance for which the transaction was invoked.  
</td></tr><tr style="height: 29.8px;"><td style="width: 50.0494%; height: 29.8px;">INVALID\_AMOUNT</td><td style="width: 50.0494%; height: 29.8px;">Amount of the transaction was passed as &lt;= 0.   
</td></tr><tr style="height: 46.4px;"><td style="width: 50.0494%; height: 46.4px;">INSUFFICIENT\_FUNDS\_ON\_DEPOSIT\_BALANCE</td><td style="width: 50.0494%; height: 46.4px;">Deposit balance has not enough funds to process the transaction.  
</td></tr><tr style="height: 46.6px;"><td style="width: 50.0494%; height: 46.6px;">DEPOSIT\_BALANCE\_NOT\_FOUND</td><td style="width: 50.0494%; height: 46.6px;">Occurs when client has not configured deposit balance in currency used for rejected the transaction.  
</td></tr><tr style="height: 29.8px;"><td style="width: 50.0494%; height: 29.8px;">AML\_EXCEPTION</td><td style="width: 50.0494%; height: 29.8px;">AML regulations does not allow to process the transaction.  
</td></tr><tr style="height: 63.4px;"><td style="width: 50.0494%; height: 63.4px;">AMBIGUOUS\_REFERENCED\_TRANSACTION</td><td style="width: 50.0494%; height: 63.4px;">Antaca cannot determine for which a transaction refer current the transaction request. System has found more then one transaction matched by transaction parameters.   
</td></tr><tr style="height: 29.8px;"><td style="width: 50.0494%; height: 29.8px;">REFERENCED\_TRANSACTION\_NOT\_FOUND</td><td style="width: 50.0494%; height: 29.8px;">System cannot find any transaction for which the request refer.  
</td></tr><tr style="height: 29.8px;"><td style="width: 50.0494%; height: 29.8px;">CURRENCY\_MISMATCH</td><td style="width: 50.0494%; height: 29.8px;">The transaction currency is different than balance currency.  
</td></tr><tr style="height: 46.4px;"><td style="width: 50.0494%; height: 46.4px;">CUSTOMER\_NOT\_FOUND</td><td style="width: 50.0494%; height: 46.4px;">System cannot find customer who is involved in the transaction.  
</td></tr><tr style="height: 46.4px;"><td style="width: 50.0494%; height: 46.4px;">BUDGET\_EXCEEDED</td><td style="width: 50.0494%; height: 46.4px;">The budget limitation for an card or an customer has been exceeded.  
</td></tr><tr style="height: 29.8px;"><td style="width: 50.0494%; height: 29.8px;">LIMIT\_EXCEED</td><td style="width: 50.0494%; height: 29.8px;">General limitation for the transaction has been exceeded.  
</td></tr><tr style="height: 63.4px;"><td style="width: 50.0494%; height: 63.4px;">COLLATERAL\_BALANCE\_NOT\_FOUND</td><td style="width: 50.0494%; height: 63.4px;">System cannot find an collateral balance in proper currency configured for client instance. Those balances could be eg. deposit, credit, technical etc.   
</td></tr><tr style="height: 46.6px;"><td style="width: 50.0494%; height: 46.6px;">INSUFFICIENT\_FUNDS\_ON\_COLLATERAL\_BALANCE</td><td style="width: 50.0494%; height: 46.6px;">An collateral balance has not enough funds to process transaction request.  
</td></tr><tr style="height: 46.6px;"><td style="width: 50.0494%; height: 46.6px;">UNKNOWN\_TRANSACTION\_TYPE</td><td style="width: 50.0494%; height: 46.6px;">System cannot determine kind of the transaction and reject it for security reason.  
</td></tr><tr style="height: 46.6px;"><td style="width: 50.0494%; height: 46.6px;">UNKNOWN\_ERROR</td><td style="width: 50.0494%; height: 46.6px;">General error. System cannot match any of concrete description.  
</td></tr></tbody></table>

**Transaction object:**

<table border="1" id="bkmrk-parameter-required-d-5" style="border-collapse: collapse; width: 100%; height: 1674.84px;"><tbody><tr style="height: 29.7969px;"><td style="width: 35.5913%; height: 29.7969px;">**Name**  
</td><td style="width: 14.3469%; height: 29.7969px;">**Required**  
</td><td style="width: 24.9691%; height: 29.7969px;">**Description**  
</td><td style="width: 24.9691%; height: 29.7969px;">**Allowed** **values**  
</td></tr><tr style="height: 63.3906px;"><td style="width: 35.5913%; height: 63.3906px;">id</td><td style="width: 14.3469%; height: 63.3906px;">TRUE  
</td><td style="width: 24.9691%; height: 63.3906px;">Unique identifier of the transaction in UUID format.  
</td><td style="width: 24.9691%; height: 63.3906px;">any value in UUID v4 format, eg. ddb55ff9-11ca-4621-9129-81f939e66011  
</td></tr><tr style="height: 80.1953px;"><td style="width: 35.5913%; height: 80.1953px;">balanceId</td><td style="width: 14.3469%; height: 80.1953px;">TRUE</td><td style="width: 24.9691%; height: 80.1953px;">The balance identifier in UUID format. This could refere to a customer or any of collateral balance.</td><td style="width: 24.9691%; height: 80.1953px;">any value in uuid v4 format, eg. 6bb3745f-1ddf-4579-855f-913c3f272d19  
</td></tr><tr style="height: 63.3984px;"><td style="width: 35.5913%; height: 63.3984px;">resourceId</td><td style="width: 14.3469%; height: 63.3984px;">TRUE</td><td style="width: 24.9691%; height: 63.3984px;">Identifier of resource used to process transaction. This is always in uuid format.</td><td style="width: 24.9691%; height: 63.3984px;">any value in uuid v4 format, eg. 846edf0f-9a96-4f1d-bc38-9c963605b9e8  
</td></tr><tr style="height: 147.375px;"><td style="width: 35.5913%; height: 147.375px;">resource</td><td style="width: 14.3469%; height: 147.375px;">TRUE</td><td style="width: 24.9691%; height: 147.375px;">Name of resource used to process transaction. This could be eg. card, balance, creditBalance, depositBalance etc. This list could change in future so please do not hardcode this value.</td><td style="width: 24.9691%; height: 147.375px;">card, balance, creditBalance, debitBalance</td></tr><tr style="height: 80.1953px;"><td style="width: 35.5913%; height: 80.1953px;">cardId</td><td style="width: 14.3469%; height: 80.1953px;">TRUE</td><td style="width: 24.9691%; height: 80.1953px;">The card identifier in string format. This value could be used to communicate with the Antaca services.</td><td style="width: 24.9691%; height: 80.1953px;">any string value. Mostly it should be eg. "1234" but it can change in the future and become UUID format.   
</td></tr><tr style="height: 130.594px;"><td style="width: 35.5913%; height: 130.594px;">externalTransactionId</td><td style="width: 14.3469%; height: 130.594px;">TRUE</td><td style="width: 24.9691%; height: 130.594px;">This is transaction identifier obtained from the transaction processor. This value is not unique and can be duplicated over time. The Antaca is not responsible for this value.</td><td style="width: 24.9691%; height: 130.594px;">any string value  
</td></tr><tr style="height: 147.398px;"><td style="width: 35.5913%; height: 147.398px;">referenceExternalTransactionId</td><td style="width: 14.3469%; height: 147.398px;">FALSE</td><td style="width: 24.9691%; height: 147.398px;">This is similar like externalTransactionId except it refers to previously obtained a transaction. This value is not unique and can be duplicated over time. Antaca is not responsible for this value.</td><td style="width: 24.9691%; height: 147.398px;">any string value</td></tr><tr style="height: 315.344px;"><td style="width: 35.5913%; height: 315.344px;">type</td><td style="width: 14.3469%; height: 315.344px;">TRUE</td><td style="width: 24.9691%; height: 315.344px;">Type of transaction.</td><td style="width: 24.9691%; height: 315.344px;">This list could evolve over time so please check this documentation from time to time.   
POS, ATM, Cashback, AFT, Balance Inquiry, Payment, commission, fee, funding, interest, withdrawal, collateralDebit, companyDebit, ibanTechnicalDebit, cashback, creditIbanTransfer, loan, payment, topUp, collateralCredit, companyCredit, ibanTechnicalCredit  
  
</td></tr><tr style="height: 63.3984px;"><td style="width: 35.5913%; height: 63.3984px;">category</td><td style="width: 14.3469%; height: 63.3984px;">TRUE</td><td style="width: 24.9691%; height: 63.3984px;">Category of the transaction used for identification of funds movement.</td><td style="width: 24.9691%; height: 63.3984px;">CREDIT, DEBIT  
</td></tr><tr style="height: 63.3984px;"><td style="width: 35.5913%; height: 63.3984px;">amount</td><td style="width: 14.3469%; height: 63.3984px;">TRUE</td><td style="width: 24.9691%; height: 63.3984px;">Amount of the transaction. This is always integer in minor value.</td><td style="width: 24.9691%; height: 63.3984px;">any integer value greater than 0.  
</td></tr><tr style="height: 46.5938px;"><td style="width: 35.5913%; height: 46.5938px;">currency</td><td style="width: 14.3469%; height: 46.5938px;">FALSE</td><td style="width: 24.9691%; height: 46.5938px;">Currency of transaction in ISO 4217 3-letter code.</td><td style="width: 24.9691%; height: 46.5938px;">any ISO 4217 3 letter code eg. PLN, USD, EUR  
</td></tr><tr style="height: 63.3984px;"><td style="width: 35.5913%; height: 63.3984px;">originalAmount</td><td style="width: 14.3469%; height: 63.3984px;">FALSE</td><td style="width: 24.9691%; height: 63.3984px;">Amount of the original transaction in integer minor value.</td><td style="width: 24.9691%; height: 63.3984px;">any integer value greater than 0. Also this field could has null value  
</td></tr><tr style="height: 63.3984px;"><td style="width: 35.5913%; height: 63.3984px;">originalCurrency</td><td style="width: 14.3469%; height: 63.3984px;">FALSE</td><td style="width: 24.9691%; height: 63.3984px;">Currency of the original transaction in ISO 4217 3-letter code.</td><td style="width: 24.9691%; height: 63.3984px;">any ISO 4217 3 letter code eg. PLN, USD, EUR. Also this field could has null value  
</td></tr><tr style="height: 63.3984px;"><td style="width: 35.5913%; height: 63.3984px;">status</td><td style="width: 14.3469%; height: 63.3984px;">TRUE</td><td style="width: 24.9691%; height: 63.3984px;">Current status of the transaction (after Antaca service process).</td><td style="width: 24.9691%; height: 63.3984px;">AUTHORIZED, CLEARED,  
</td></tr><tr style="height: 46.5938px;"><td style="width: 35.5913%; height: 46.5938px;">description</td><td style="width: 14.3469%; height: 46.5938px;">TRUE</td><td style="width: 24.9691%; height: 46.5938px;">Detailed description of the transaction.</td><td style="width: 24.9691%; height: 46.5938px;">any string value  
</td></tr><tr style="height: 63.3906px;"><td style="width: 35.5913%; height: 63.3906px;">date</td><td style="width: 14.3469%; height: 63.3906px;">TRUE</td><td style="width: 24.9691%; height: 63.3906px;">Date of the transaction in ISO 8601 date.</td><td style="width: 24.9691%; height: 63.3906px;">any data specified by iso 8601. Eg. 2023-11-17T11:32:18+00:00  
</td></tr><tr style="height: 80.1875px;"><td style="width: 35.5913%; height: 80.1875px;">referenceExternalTransactionDate</td><td style="width: 14.3469%; height: 80.1875px;">FALSE</td><td style="width: 24.9691%; height: 80.1875px;">Date of the transaction for which this transaction is refer to. Date in ISO 8601 date.</td><td style="width: 24.9691%; height: 80.1875px;">any data specified by ISO 8601. Eg. 2023-11-17T11:32:18+00:00</td></tr><tr style="height: 63.3906px;"><td style="width: 35.5913%; height: 63.3906px;">transactionData</td><td style="width: 14.3469%; height: 63.3906px;">TRUE</td><td style="width: 24.9691%; height: 63.3906px;">The transaction data object described in **the** **transaction data section.**</td><td style="width: 24.9691%; height: 63.3906px;">Keep in mind that this object is always passed but it can be empty.  
</td></tr></tbody></table>

**Transaction data object**

<table border="1" id="bkmrk-%C2%A0-2" style="border-collapse: collapse; width: 100%; height: 314.8px;"><tbody><tr style="height: 29.8px;"><td style="width: 35.5995%; height: 29.8px;">**Name**  
</td><td style="width: 14.3387%; height: 29.8px;">**Required**  
</td><td style="width: 24.9691%; height: 29.8px;">**Description**  
</td><td style="width: 24.9691%; height: 29.8px;">**Allowed** **values**  
</td></tr><tr style="height: 29.8px;"><td style="width: 35.5995%; height: 29.8px;">mcc</td><td style="width: 14.3387%; height: 29.8px;">FALSE</td><td style="width: 24.9691%; height: 29.8px;">Merchant category code.</td><td style="width: 24.9691%; height: 29.8px;">any mcc value, eg. can be found here: [https://global.alipay.com/docs/ac/files/mcclist](https://global.alipay.com/docs/ac/files/mcclist)</td></tr><tr style="height: 46.6px;"><td style="width: 35.5995%; height: 46.6px;">merchantIdentifier</td><td style="width: 14.3387%; height: 46.6px;">FALSE</td><td style="width: 24.9691%; height: 46.6px;">The merchant identifier for the transaction.</td><td style="width: 24.9691%; height: 46.6px;">  
</td></tr><tr style="height: 29.8px;"><td style="width: 35.5995%; height: 29.8px;">merchantName</td><td style="width: 14.3387%; height: 29.8px;">FALSE</td><td style="width: 24.9691%; height: 29.8px;">Name of the merchant.</td><td style="width: 24.9691%; height: 29.8px;">  
</td></tr><tr style="height: 29.8px;"><td style="width: 35.5995%; height: 29.8px;">captureMode</td><td style="width: 14.3387%; height: 29.8px;">FALSE</td><td style="width: 24.9691%; height: 29.8px;">Capture mode.</td><td style="width: 24.9691%; height: 29.8px;">magstripe, manual, emv, on behalf (EMV), nfc, ecommerce, adj</td></tr><tr style="height: 29.8px;"><td style="width: 35.5995%; height: 29.8px;">lastFourDigits</td><td style="width: 14.3387%; height: 29.8px;">FALSE</td><td style="width: 24.9691%; height: 29.8px;">last 4 digits of a card.</td><td style="width: 24.9691%; height: 29.8px;">  
</td></tr><tr style="height: 29.8px;"><td style="width: 35.5995%; height: 29.8px;">acquirerCountry</td><td style="width: 14.3387%; height: 29.8px;">FALSE</td><td style="width: 24.9691%; height: 29.8px;">Country of acquirer.</td><td style="width: 24.9691%; height: 29.8px;">ISO 3166-1 alpha-3 code</td></tr><tr style="height: 29.8px;"><td style="width: 35.5995%; height: 29.8px;">mdesDigitizedWalletId</td><td style="width: 14.3387%; height: 29.8px;">FALSE</td><td style="width: 24.9691%; height: 29.8px;">The Wallet ID (Wallet Reference) used to digitize the card.</td><td style="width: 24.9691%; height: 29.8px;">m4m, google pay, samsung pay, apple pay</td></tr><tr style="height: 29.8px;"><td style="width: 35.5995%; height: 29.8px;">cashbackPosCurrencyCode</td><td style="width: 14.3387%; height: 29.8px;">FALSE</td><td style="width: 24.9691%; height: 29.8px;">Represents the currency code of the cashback amount.</td><td style="width: 24.9691%; height: 29.8px;">ISO 4217 3-letter code</td></tr><tr style="height: 29.8px;"><td style="width: 35.5995%; height: 29.8px;">cashbackPosAmount</td><td style="width: 14.3387%; height: 29.8px;">FALSE</td><td style="width: 24.9691%; height: 29.8px;">Displays the actual cashback amount.</td><td style="width: 24.9691%; height: 29.8px;">integer value in gross</td></tr></tbody></table>

##### Response  


Only responses with http code 200 &amp; 204 are allowed.

```
200 OK

204 NoContent
```

In case of any other response code, Antaca will try to send a request once again (up to 5 times). Every time a request will be identical with the same **X-idempotency-key.** Keep in mind that if your service has answered properly, network errors can arise either way. If Antaca resends the request with the same X-Idempotency-Key, the response should be retrieved from the cache.

#####   
Transaction Types Description

Debit transactions list:

<table id="bkmrk-type%C2%A0-description-po" style="width: 100%;"><tbody><tr><td style="width: 18.0413%;">**Type**

</td><td style="width: 81.9587%;">**Description**

</td></tr><tr><td style="width: 18.0413%;"><span style="font-weight: 400;">POS</span>

</td><td style="width: 81.9587%;"><span style="font-weight: 400;">POS transaction (A point-of-sale) applies to the situation when a customer makes a purchase and the payment is processed through the POS system.</span>

</td></tr><tr><td style="width: 18.0413%;"><span style="font-weight: 400;">ATM</span>

</td><td style="width: 81.9587%;"><span style="font-weight: 400;">ATM Transaction is when the cardholder uses a physical card at an ATM to withdraw cash.</span>

</td></tr><tr><td style="width: 18.0413%;"><span style="font-weight: 400;">Balance Inquiry</span></td><td style="width: 81.9587%;">Check the available balance of funds.

</td></tr><tr><td style="width: 18.0413%;"><span style="font-weight: 400;">CollateralDebit</span>

</td><td style="width: 81.9587%;"><span style="font-weight: 400;">internal transaction dedicated only for bin-sponsor (via PA) or internal Verestro APIs (via specific CN) to top up the credit/debit partner balance.</span>

<span style="font-weight: 400;">Antaca automatically </span>**debits** <span style="font-weight: 400;">the </span>**credit partner balance** <span style="font-weight: 400;">with:</span>

- <span style="font-weight: 400;">internal </span>**cashback, loan, payment, top-up** <span style="font-weight: 400;">transactions that were credits the user balance.</span>

<span style="font-weight: 400;">Antaca automatically </span>**debits** <span style="font-weight: 400;">the </span>**deposit partner balance** <span style="font-weight: 400;">with:</span>

- <span style="font-weight: 400;">any authorized</span> **debit** <span style="font-weight: 400;">transaction from the card network transactions except </span>**FX**<span style="font-weight: 400;"> transactions</span>

</td></tr><tr><td style="width: 18.0413%;"><span style="font-weight: 400;">Commission</span>

</td><td style="width: 81.9587%;"><span style="font-weight: 400;">internal transaction for a partner who wants to debit user balance as a commission referenced to the other transaction.</span>

</td></tr><tr><td style="width: 18.0413%;"><span style="font-weight: 400;">CompanyDebit</span>

</td><td style="width: 81.9587%;"><span style="font-weight: 400;">internal transaction dedicated only for bin-sponsor (via PA) or internal Verestro APIs (via specific CN) to debit company balance used for settlements between the partner and the bin-sponsor.</span>

<span style="font-weight: 400;">Antaca automatically </span>**debits**<span style="font-weight: 400;"> company balance with:</span>

- **FX**<span style="font-weight: 400;"> transactions generated by the processor</span>
- **interchange** <span style="font-weight: 400;">obtained from MC during settlement</span>

</td></tr><tr><td style="width: 18.0413%;"><span style="font-weight: 400;">Fee</span>

</td><td style="width: 81.9587%;"><span style="font-weight: 400;">internal transaction for a partner who wants to debit user balance as a fee.</span>

<span style="font-weight: 400;">Antaca automatically </span>**credits**<span style="font-weight: 400;"> company balance with the funds that were debit the user's balance</span>

</td></tr><tr><td style="width: 18.0413%;"><span style="font-weight: 400;">Funding</span>

</td><td style="width: 81.9587%;"><span style="font-weight: 400;">internal transaction type used to debit the user's balance. This type indicates that the funds still remain in the Antaca system, usually in conjunction with a payment type a credit transaction on the user's balance.</span>

<span style="font-weight: 400;">Antaca automatically </span>**credit** <span style="font-weight: 400;">the </span>**credit partner balance**<span style="font-weight: 400;"> with this transaction</span>

</td></tr><tr><td style="width: 18.0413%;"><span style="font-weight: 400;">IbanTechnicalDebit</span>

</td><td style="width: 81.9587%;"><span style="font-weight: 400;">internal transaction dedicated only for IMS API (via specific CN). IMS API uses this balance to account funds that could not be related to the user's balance</span>

</td></tr><tr><td style="width: 18.0413%;"><span style="font-weight: 400;">Interest</span>

</td><td style="width: 81.9587%;"><span style="font-weight: 400;">internal transaction for a partner who wants debit the user's balance as part of the interest connected with credit agreement.</span>

</td></tr><tr><td style="width: 18.0413%;"><span style="font-weight: 400;">Withdrawal</span>

</td><td style="width: 81.9587%;"><span style="font-weight: 400;">internal transaction type used to debit the user's balance. This type indicates that the funds go outside the Antaca system, fe: withdrawal from an account at a bank branch.</span>

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

<span style="font-weight: 400;">Credit transactions list:</span>

<table id="bkmrk-topup-internal-trans" style="width: 100%;"><tbody><tr><td style="width: 18.4149%;"><span style="font-weight: 400;">TopUp</span>

</td><td style="width: 81.5851%;"><span style="font-weight: 400;">internal transaction type used to top up the user's balance. This type indicates that the funds come from outside the Antaca system, fe: payment to an account at a bank branch.</span>

<span style="font-weight: 400;">Antaca automatically </span>**debit** <span style="font-weight: 400;">the </span>**credit partner balance**<span style="font-weight: 400;"> with this transaction</span>

</td></tr><tr><td style="width: 18.4149%;"><span style="font-weight: 400;">Payment</span>

</td><td style="width: 81.5851%;"><span style="font-weight: 400;">internal transaction type used to top up the user's balance. This type indicates that the funds come from the Antaca system, usually in conjunction with a funding type a debit transaction on the user's balance</span>

<span style="font-weight: 400;">Antaca automatically </span>**debit** <span style="font-weight: 400;">the </span>**credit partner balance**<span style="font-weight: 400;"> with this transaction</span>

</td></tr><tr><td style="width: 18.4149%;"><span style="font-weight: 400;">Loan</span>

</td><td style="width: 81.5851%;"><span style="font-weight: 400;">internal transaction for a partner who wants to top up the user's balance as part of the credit agreement.</span>

<span style="font-weight: 400;">Antaca automatically </span>**debit** <span style="font-weight: 400;">the </span>**credit partner balance**<span style="font-weight: 400;"> with this transaction</span>

</td></tr><tr><td style="width: 18.4149%;"><span style="font-weight: 400;">IbanTechnicalCredit</span>

</td><td style="width: 81.5851%;"><span style="font-weight: 400;">internal transaction dedicated only for IMS API (via specific CN). IMS API uses this balance to account funds that could not be related to the user's balance</span>

</td></tr><tr><td style="width: 18.4149%;"><span style="font-weight: 400;">interchangeCredit</span>

</td><td style="width: 81.5851%;"><span style="font-weight: 400;">transaction automatically generated by Antaca as a result of settlement previously authorized transactions. This type of transaction top up only the company balance.</span>

</td></tr><tr><td style="width: 18.4149%;"><span style="font-weight: 400;">CreditIbanTransfer</span>

</td><td style="width: 81.5851%;"><span style="font-weight: 400;">internal transaction dedicated only for IMS API (via specific CN). IMS API uses this balance to credit funds on the user's balance.</span>

</td></tr><tr><td style="width: 18.4149%;"><span style="font-weight: 400;">CompanyCredit</span>

</td><td style="width: 81.5851%;"><span style="font-weight: 400;">internal transaction dedicated only for bin-sponsor (via PA) or internal Verestro APIs (via specific CN) to top up company balance used for settlements between the partner and the bin-sponsor.</span>

<span style="font-weight: 400;">Antaca automatically </span>**credits**<span style="font-weight: 400;"> company balance with:</span>

- **FX**<span style="font-weight: 400;"> transactions generated by the processor</span>
- **fee**<span style="font-weight: 400;"> transactions that were charged from user balance</span>
- **interchange** <span style="font-weight: 400;">obtained from MC during settlement</span>

</td></tr><tr><td style="width: 18.4149%;"><span style="font-weight: 400;">CollateralCredit</span>

</td><td style="width: 81.5851%;"><span style="font-weight: 400;">internal transaction dedicated only for bin-sponsor (via PA) or internal Verestro APIs (via specific CN) to top up the credit/debit partner balance.</span>

<span style="font-weight: 400;">Antaca automatically </span>**credits** <span style="font-weight: 400;">the </span>**credit partner balance** <span style="font-weight: 400;">with:</span>

- <span style="font-weight: 400;">internal </span>**funding** <span style="font-weight: 400;">transaction that were charged from user balance.</span>

<span style="font-weight: 400;">Antaca automatically </span>**credits** <span style="font-weight: 400;">the </span>**deposit partner balance** <span style="font-weight: 400;">with:</span>

- <span style="font-weight: 400;">the </span>**force credit**<span style="font-weight: 400;"> from the card network transactions except </span>**FX**<span style="font-weight: 400;"> transactions</span>

</td></tr><tr><td style="width: 18.4149%;"><span style="font-weight: 400;">Cashback</span>

</td><td style="width: 81.5851%;"><span style="font-weight: 400;">internal transaction for a partner who wants to top up the user's balance as part of the loyalty program</span>

<span style="font-weight: 400;">Antaca automatically </span>**debit** <span style="font-weight: 400;">the </span>**credit partner balance**<span style="font-weight: 400;"> with this transaction</span>

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

# Frequently Asked Questions

### Frequently Asked Questions (FAQ)


Below you will find answers to the most common questions about the **Card Issuing &amp; Core Banking** module.

If you can't find the answer you're looking for, please contact our Support team.

**[Go to the Card Issuing &amp; Core Banking FAQ](https://developer.verestro.com/books/faq/page/faq#bkmrk-faq---card-issuing)**