The order resource in Everifin Paygate API tries to reflect merchant’s order (in most cases there is relationship: one order - one payment, but some merchants have concept of orders with possibility of multiple payments - customers can add items to the same order later when some items of the order were already paid).
In case you do not need scenario of multiple successful payments for one order (majority of online businesses use relation 1:1), Order entity is not important to you and you should focus only on payment entity. However, you do need to store the order ID upon posting the payment order as it is needed for the request URL to get the payment detail and status.
All available endpoints related to orders and payments are described here: Orders API
Order initialization
The payment process starts with creating the payment order. There is one related payment resource created automatically with each new order (amount is equal as the amount of the whole order).
Once the order is created, it can be further processed by Redirect flow (using Everifin GUI).
In order initialization you send the information about the order and its first payment to Everifin. Everifin responds with an order ID, processable payment ID and redirect link pointing to Everifin Paygate page.
Request
HTTP headers
Initiation of a order must contain following headers.
Header | Type | Description |
---|---|---|
Authorization | Bearer token | Authorization token to access API. |
Body
Field | Type | Optional | Description |
---|---|---|---|
instructionId | text, unique (max 64 chars) | yes | Your unique identification string. |
amount | number (0.01 - 9999999999) | no | Amount of the payment. |
currency | text, valid currency (min/max 3 chars) | no | Currency of the payment. Must be a valid currency code, e.g. EUR, CZK, PLN. |
recipientIban | text, valid iban (max 50 chars) | no | Your IBAN account number to collect the payment (not payer`s IBAN). This IBAN must be whitelisted in Everifin Paygate, otherwise the payment will be denied. |
recipientBankBic | text, valid BIC | yes | BIC of the integrator's bank account |
senderBankId | text, valid bank identifier in Everifin | yes | ID of the bank selected for the payment |
senderIban | text, valid iban (max 50 chars) | yes | IBAN of sender's bank account, if known at the time of order creation |
variableSymbol | numeric text (max 10 chars) | no (symbols or reference must be used) | Symbol for SK/CZ market. Cannot be combined with reference. |
constantSymbol | numeric text (max 10 chars) | yes | Symbol for SK/CZ market. Cannot be combined with reference. |
specificSymbol | numeric text (max 4 chars) | yes | Symbol for SK/CZ market. Cannot be combined with reference. |
reference | text (max 35 chars) | no (symbols or reference must be used) | Payment reference. Cannot be combined with symbols. |
senderEmail | valid email | no | Email of the customer |
redirectUrl | text (max 5000 chars) | no | Redirect URL back to your system. This redirect URL has to be whitelisted in Everifin Paygate. It must be string satisfying URL rules. E.g. hostname must contain at least one dot (for local development URL like this can be used: http://yourapp.local/xyz). Custom query parameters are accepted. |
paymentMessage | text (max 140 chars) | no | Message to your customer. This message will be visible in his bank transaction as description of the transfer. |
recipientName | text (max 140 chars) | yes | Name of the recipient of the money (e.g. online store). If this field is not used, the name of the API client registered in the Back Office is used (value agreed with the integrator and configured in Back Office). This name will appear in payer’s bank transaction as recipient of the money. |
userLocale | language code | yes | If you want to force Everifin Paygate UI language for your customer, use this property. List of supported languages: 'en', 'sk', 'cs' (it is being extended continuously) . If not defined, browser language will be applied. |
refundLimitPercentage | Valid positive number (Integer or floating up to 2 decimals) or zero | yes | Specifies the refund limit of an order. If value equals 100, refund can be created up to the amount of an order. If set to 0, the refund limit is not applied, i.e. any amount can be refunded. |
preferredBankCountryCode | ISO 3-char country code | yes | If specified, Paygate UI will open with this country as preselected. The list of the banks of specified country will be displayed. User can still change the country in the dropdown. |
externalId | Free text, maximum 255 characters | yes | Can be used to match the order with data in client's systems. Might be different from instructionId, because the instructionId could be unique for each payment within an order. |
hookData | JSON object | yes | Can be used to provide additional data specific for the payment. They will be sent back to API consumer when webhook is called by our server. More details about the structure being sent via webhook call are described here: |
Example call
POST {everifin_url}/api/v2/orders { "instructionId": "ABCD11234", "amount" : 1.05, "currency": "EUR", "recipientIban": "SK132465798132456", "recipientName": "The best e-shop in the world", "variableSymbol": "0000000001", "constantSymbol": "0308", "specificSymbol": "0000000003", "reference": null, "redirectUrl": "https://thebesteshopintheworld.com", "paymentMessage": "Payment for The best eshop", "senderEmail": "customer@email.com" }
Response
Field | Type | Optional | Description |
---|---|---|---|
id | uuid, unique | no | Order ID |
processablePaymentId | uuid, unique | no | Payment ID (not your instruction id from the request) |
link | text | no | Redirect URL to Everifin Paygate |
status | enum | no | Order status |
Example response
200: { "meta": { "status": "SUCCESS" }, "data": { "id": "bf4f2fa8-9426-441d-b450-67a5c801a9ef", "processablePaymentId": "372f9684-184b-437b-b974-e3331bbc879a", "link": "{{redirect-to-everifin}}", "status": "UNPAID" } }
Order’s payment detail
To get information about order’s payment and it's status, Get Order Payment endpoint can be used. List of possible statuses can be found here: https://everifin.atlassian.net/wiki/spaces/EPAD/pages/2467561491/Paygate+Payment+Flow#Payment-statuses.
Endpoint Documentation: https://documenter.getpostman.com/view/21056419/2s9Y5Ww3LU#99db82cc-ce02-46a8-a92a-072dea0a60b7
List of all payments
To search payments, use the Get Payments endpoint.
See the Postman documentation for instructions how to use this endpoint - filtering, sorting and pagination is supported.
Documentation: https://documenter.getpostman.com/view/21056419/2s9Y5Ww3LU#8ba9728a-e31a-4984-9b5a-4195a8558283
Order detail
In case you use concept of one order - one payment in your online business (i.e. not allowing to add multiple successful payments for one order), you should work with payment entity and skip to next paragraph to find out how to get status of the payment.
Order detail endpoint can be used to get the order data and status. Possible statuses can be found here:
https://everifin.atlassian.net/wiki/spaces/EPAD/pages/2467561491/Paygate+Payment+Flow#Order-statuses.
The response already contains list of payments and refunds for the order.
Endpoint Documentation: https://documenter.getpostman.com/view/21056419/2s9Y5Ww3LU#f80d920b-4016-4c77-855a-e616dcb166be
List of all orders
To search orders, use the Search Orders endpoint.
See the Postman documentation for instructions how to use this endpoint - filtering, sorting and pagination is supported.
Documentation: https://documenter.getpostman.com/view/21056419/2s9Y5Ww3LU#2cb3f925-60c6-47c0-ac9f-2affdb218473
Order update
Order can be updated (e.g. amount adjusted Update Order endpoint) and the result is based on the status of the related payment resource:
when payment has not been initialized yet - order and related payment is updated
when payment has been processed already - new payment is created and added to order
Also, the refund limit can be updated for an order.
Request
HTTP headers
Request must contain following headers.
Header | Type | Description |
---|---|---|
Authorization | Bearer token | Authorization token to access API. |
Body
Field | Type | Optional |
---|---|---|
amount | number (0.01 - 9999999999) | yes |
refundLimitPercentage | Valid positive number (Integer or floating up to 2 decimals) or zero | yes |
Error codes
Following error codes can be returned if the request fails:
code | description |
---|---|
INVALID_ORDER_AMOUNT | The requested amount is lower than the sum of paid payments |
ORDER_CANNOT_BE_UPDATED | The order’s amount is not updatable at the moment - payment might be processing. Only refundLimitPercentage is updatable when the payment is processing. |
Order withdrawal
You can withdraw (invalidate / cancel) an order by calling Everifin Paygate endpoint with DELETE method. The order cannot be withdrawn, when there are finalized payments for the order (successful or failure) and also in case the user has already started a payment authorization.
On details, how to use this endpoint, see the Postman documentation: https://documenter.getpostman.com/view/21056419/2s9Y5Ww3LU#e293bcb2-fb12-48ff-88ed-62c96de93d97
Error codes
code | description |
---|---|
ORDER_CANNOT_BE_WITHDRAWN | Order’s state does not allow to withdraw it. Payment might be processing at the moment or was already processed. |