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