Introduction
API Production Endpoint
https://api.everypay.gr
API Sandbox Endpoint
https://sandbox-api.everypay.gr
This documentation will guide you through EveryPay REST API in order to show you how to authenticate, make requests, and retrieve data. Our API accepts form-encoded request bodies and returns responses in JSON format.
Authentication
Example authentication request
$ curl https://api.everypay.gr/payments \
-u sk_PqSohnrYrRI1GUKOZvDkK5VVWAhnlU3R:
All requests to EveryPay API have to be authenticated and have to be made over HTTPS. Our API uses HTTP Basic Auth for authentication.
To authenticate you need to provide your API secret key, as username and leave the password blank. Some REST clients expect a username:password pair separated by a colon. Since there is no explicit password with the API key, it will need to be followed simply by a colon in those cases.
You can find you API keys in your account settings once you login to your account. Please keep your private keys secure and don’t pass them to anyone. These private keys have extreme secure information for handling the transactions of your account.
Metadata
Example request with metadata
$ curl https://api.everypay.gr/payments \
-u sk_PqSohnrYrRI1GUKOZvDkK5VVWAhnlU3R: \
-d token=ctn_KJ53Qx3ZGaNLttUNxyB5JQO3 \
-d amount=1000 \
-d metadata[order_id]="A123"
Example request to unset metadata
$ curl https://api.everypay.gr/payments/pmt_lkPJrywRlDAp5oKrqOeRHEt0 \
-u sk_PqSohnrYrRI1GUKOZvDkK5VVWAhnlU3R: \
-d metadata=""
Metadata is a useful attribute that can be used to store custom pairs of key-value data. You can specify up to 20 keys, with key names up to 40 characters long and values up to 200 characters long. Resources that support metadata functionality are payments
and refunds
.
Do not store any sensitive information such as credit card details as metadata.
Errors
Error response example
{
"error": {
"status": 401,
"code": 10000,
"message": "Please provide a valid API key"
}
}
The EveryPay API uses HTTP Status codes to reflect successful or error requests. 2XX status codes represent a successful request, 4XX/5XX status codes represent an error took place. If you receive an error HTTP status code, check the body for an error code and message.
Status Code | Description | Most Likely Cause |
---|---|---|
200 | OK | Successful request |
400 | Bad Request | Request has invalid data or is missing a required field |
401 | Unauthorized | Provided API key is missing or invalid |
402 | Payment Failed | Request was valid but card processing has failed |
404 | Not Found | Requested object was not found |
409 | Conflict | The request conflicts with another request |
500 | Server Error | Something wrong happened on our side |
Open Banking API
What is the EveryPay API Portal
The EveryPay API Portal allows Third Party Providers (TPPs) to develop new products and services using APIs. API technology (Application Programming Interface) enables the exchange of data, such as account information and payment initiation services. Initially, TPP developers and other interested parties can visit the EveryPay API Portal to register and explore EveryPay’s API technology in a Sandbox test environment.
What the new technology offers
The collaboration between licensed institutions and TPPs enhances customer experience by offering significant benefits:
- Increased protection of their data.
- Greater security in online transactions.
- Access to innovative products and services.
Customers have the right to choose the TPP they want to collaborate with. TPPs must obtain explicit customer consent before accessing their data.
Who is the EveryPay API Portal for
The EveryPay API Portal is intended for TPPs, such as:
- Account Information Service Providers (AISPs) – They provide services that aggregate all consumer financial data from different banks or financial institutions in one place. AISPs only have access to information regarding consumer accounts (personal and corporate) and credit cards.
- Payment Initiation Service Providers (PISPs) – They offer digital services that allow the direct transfer of money from the payer’s account to the payee’s account.
EveryPay has adapted its systems and service terms to the new provisions of Law 4537/2018 (PSD2) to provide a more secure transaction environment.
Payments
Payments are charges made with a payment card (credit, debit, prepaid).
The payment object
The payment object
{
"token": "pmt_lkPJrywRlDAp5oKrqOeRHEt0",
"date_created": "2019-02-14T19:47:03+0200",
"description": "Order #GGA-435167",
"currency": "EUR",
"status": "Captured",
"amount": 1000,
"refund_amount": 0,
"fee_amount": 48,
"payee_email": null,
"payee_phone": null,
"merchant_ref": null,
"card": {
"token": "crd_U0FBPmz5t2zjDjKaOGABlo6A",
"expiration_month": "05",
"expiration_year": "2022",
"bin": "411111",
"last_four": "1111",
"type": "Visa",
"holder_name": "John Doe",
"supports_installments": false,
"status": "valid",
"friendly_name": "Visa xxxx 1111 (05/2022)",
"tds": {
"enrolled": null,
"eci_flag": null,
"auth_code": null,
"auth_desc": null
}
},
"metadata": {},
"refunded": false,
"refunds": [],
"installments_count": 0,
"installments": [],
"split": false,
"transfer_amount": 0,
"transfers": [],
"branch_token": "brc_0E0pqRYhL167TaKhtge83YNy"
}
Property | Description |
---|---|
token string | Unique identifier (ID) for the payment object. Always starts with the prefix pmt_. |
date_created string | The creation date of payment in ISO 8601 format. |
description string | A description of the payment. |
amount integer | The payment amount in the smallest currency unit e.g in cents. |
currency string | Currency represented as three-letter ISO 4217 code. |
status string | Indicates the payment status.Captured Failed Refunded Partially Refunded Disputed Pending Pre Authorized Canceled Expired |
refund_amount integer | Amount refunded in cents which is less or equal than the payment amount. |
fee_amount integer | Service fee amount for the payment. |
payee_email string | The email address to which a payment receipt will be sent. |
payee_phone string | Customer’s phone number. |
merchant_ref string | A unique ID set by the merchant. |
card object | An object containing card details with which the payment was completed. |
metadata object | A set of custom key-value pairs. |
refunded boolean | Indicates whether payment has been fully refunded. If the payment is only partially refunded, this attribute will still be false. |
refunds list | A list of refunds that have been applied to the payment. |
installments_count integer | An integer which indicates the installment count supplied to the payment. |
installments list | A list of installment objects that have been applied to the payment. |
split boolean | Whether the payment is a split payment. |
transfer_amount integer | Amount transferred in cents which is less or equal than the payment amount. |
transfers list | A list of transfers that have been applied to the payment. |
mandate string | Unique identifier that is used on recurring subsequent charges. |
mandate_reference string min: 5 | A unique ID that merchants set on recurring payments. |
branch_token string | Unique identifier for the associated branch object. Empty if there is not an associated branch. |
Create a payment
Definition
POST https://api.everypay.gr/payments
Example request with card data
$ curl https://api.everypay.gr/payments \
-u sk_PqSohnrYrRI1GUKOZvDkK5VVWAhnlU3R: \
-d card_number=4111111111111111 \
-d expiration_year=2022 \
-d expiration_month=05 \
-d holder_name="John Doe" \
-d cvv=123 \
-d amount=1000 \
-d description="Order #GGA-435167"
Example request with card token
$ curl https://api.everypay.gr/payments \
-u sk_PqSohnrYrRI1GUKOZvDkK5VVWAhnlU3R: \
-d token=ctn_KJ53Qx3ZGaNLttUNxyB5JQO3 \
-d amount=1000 \
-d description="Order #GGA-435167"
Example request with customer token
$ curl https://api.everypay.gr/payments \
-u sk_PqSohnrYrRI1GUKOZvDkK5VVWAhnlU3R: \
-d token=cus_RxE6DEcITxOYyynErDK6VoBa \
-d amount=1000 \
-d description="Order #GGA-435167"
Example Response
200 OK
{
"token": "pmt_lkPJrywRlDAp5oKrqOeRHEt0",
"date_created": "2019-02-14T19:47:03+0200",
"description": "Order #GGA-435167",
"currency": "EUR",
"status": "Captured",
"amount": 1000,
"refund_amount": 0,
"fee_amount": 48,
"payee_email": null,
"payee_phone": null,
"merchant_ref": null,
"card": {
"token": "crd_U0FBPmz5t2zjDjKaOGABlo6A",
"expiration_month": "05",
"expiration_year": "2022",
"bin": "411111",
"last_four": "1111",
"type": "Visa",
"holder_name": "John Doe",
"supports_installments": false,
"status": "valid",
"friendly_name": "Visa xxxx 1111 (05/2022)",
"tds": {
"enrolled": null,
"eci_flag": null,
"auth_code": null,
"auth_desc": null
}
},
"metadata": {},
"refunded": false,
"refunds": [],
"installments_count": 0,
"installments": [],
"split": false,
"transfer_amount": 0,
"transfers": [],
"branch_token": "brc_0E0pqRYhL167TaKhtge83YNy"
}
You can create a payment by charging a payment card using one of the following, as shown in the examples:
- A dictionary with Card Arguments
- An unused and non expired Card Token ID
- An active Customer ID
Body Arguments | |
---|---|
amount required | A positive integer in the smallest currency unit e.g in cents (e.g 10,99 EUR shall be converted to 1099). |
card arguments optional | All required fields of the Card Arguments. |
token optional | It can be either a Card Token ID or a Customer ID. |
card optional | In case a payment is made with a Customer ID you can define which card of the customer will be charged by providing a valid Card ID. If this atrribute is skipped then the customer’s default card will be used. |
description optional | A description of the payment. |
capture optional 1 |
Whether to immediately capture the payment.1 payment will be captured. 0 only a pre-authorize request will be send in order to hold on the amount. In that case you have to capture the payment in a second step. |
payee_email optional | Provide the email address to which a payment receipt will be sent. This will override a customer’s email address in case payment is made with a customer token. |
payee_phone optional | Provide the customer’s phone. |
installments optional | A positive integer indicating the number of installments which the payer has applied to. Max. installment count is 36 and depends on merchant’s configuration. If card or merchant account doesn’t support installments an error will be thrown. |
max_installments optional | A positive integer indicating the maximum count of allowed installments. This value is taken into account only if in the token parameter a Token ID is passed. This will ensure that the max. installment value of the token matches the provided value. If a mismatch is encountered then an error will be thrown. |
merchant_ref optional | A unique ID set by the merchant. The merchant reference ID remains the same throughout the lifetime of the payment. Maximum chars 120. If a payment with the same merchant reference ID is again submitted then an error will be thrown. |
metadata optional | A set of custom key-value pairs. |
create_customer optional 0 |
1 after a successful payment a customer object is created and the payment card is assigned to it as default card.0 no customer object is created. |
customer optional | By providing a Customer ID along with the payment details, the payment and the Card is assigned to the specified customer. This is useful if in case a customer is paying with a new card and you want to avoid multiple API calls. |
default_card optional 0 |
Shall be used in conjuction with the customer parameter.1 If the payment succeeds the used card will be assigned to the above customer object and marked as default.0 the card will be added to the list of cards of the customer object. |
split optional 0 |
Whether the payment will be split into transfers.1 Payment is marked a split payment and awaits transfer data with additional requests.0 Payment is processed as a non-marketplace payment and funds will be deposited to your account. |
mandate optional | By providing this unique mandate identifier, a customer’s card can be charged on a subsequent recurring transaction. |
mandate_reference optional | Provide a unique identifier on this field in order to identify mandate. |
branch_token optional | By providing a Branch token, the payment is associated to the specified branch. |
Retrieve a payment
Definition
GET https://api.everypay.gr/payments/{paymentId}
Example Request
$ curl https://api.everypay.gr/payments/pmt_lkPJrywRlDAp5oKrqOeRHEt0 \
-u sk_PqSohnrYrRI1GUKOZvDkK5VVWAhnlU3R:
Example Response
200 OK
{
"token": "pmt_lkPJrywRlDAp5oKrqOeRHEt0",
"date_created": "2019-02-14T19:47:03+0200",
"description": "Order #GGA-435167",
"currency": "EUR",
"status": "Captured",
"amount": 1000,
"refund_amount": 0,
"fee_amount": 48,
"payee_email": null,
"payee_phone": null,
"merchant_ref": null,
"card": {
"token": "crd_U0FBPmz5t2zjDjKaOGABlo6A",
"expiration_month": "05",
"expiration_year": "2022",
"bin": "411111",
"last_four": "1111",
"type": "Visa",
"holder_name": "John Doe",
"supports_installments": false,
"status": "valid",
"friendly_name": "Visa xxxx 1111 (05/2022)",
"tds": {
"enrolled": null,
"eci_flag": null,
"auth_code": null,
"auth_desc": null
}
},
"metadata": {},
"refunded": false,
"refunds": [],
"installments_count": 0,
"installments": [],
"split": false,
"transfer_amount": 0,
"transfers": [],
"branch_token": "brc_0E0pqRYhL167TaKhtge83YNy"
}
Retrieves the details of a payment. Provide the unique payment ID that was returned from the creation call.
Path Arguments | |
---|---|
paymentId required | The unique Payment ID. |
Capture a payment
Definition
PUT https://api.everypay.gr/payments/{paymentId}/capture
Example Request
$ curl https://api.everypay.gr/payments/pmt_lkPJrywRlDAp5oKrqOeRHEt0/capture \
-u sk_PqSohnrYrRI1GUKOZvDkK5VVWAhnlU3R:
-X PUT
Example Response
200 OK
{
"token": "pmt_lkPJrywRlDAp5oKrqOeRHEt0",
"date_created": "2019-02-14T19:47:03+0200",
"description": "Order #GGA-435167",
"currency": "EUR",
"status": "Captured",
"amount": 1000,
"refund_amount": 0,
"fee_amount": 48,
"payee_email": null,
"payee_phone": null,
"merchant_ref": null,
"card": {
"token": "crd_U0FBPmz5t2zjDjKaOGABlo6A",
"expiration_month": "05",
"expiration_year": "2022",
"bin": "411111",
"last_four": "1111",
"type": "Visa",
"holder_name": "John Doe",
"supports_installments": false,
"status": "valid",
"friendly_name": "Visa xxxx 1111 (05/2022)",
"tds": {
"enrolled": null,
"eci_flag": null,
"auth_code": null,
"auth_desc": null
}
},
"metadata": {},
"refunded": false,
"refunds": [],
"installments_count": 0,
"installments": [],
"split": false,
"transfer_amount": 0,
"transfers": [],
"branch_token": "brc_0E0pqRYhL167TaKhtge83YNy"
}
Capture a previous per-authorized payment that was created with captured
=0 argument. This is the second part of the two step payment flow.
Path Arguments | |
---|---|
paymentId required | The unique Payment ID. |
Update a payment
Definition
PUT https://api.everypay.gr/payments/{paymentId}
Example Request
$ curl https://api.everypay.gr/payments/pmt_lkPJrywRlDAp5oKrqOeRHEt0 \
-u sk_PqSohnrYrRI1GUKOZvDkK5VVWAhnlU3R: \
-d description="Order #23" \
-X PUT
Example Response
200 OK
{
"token": "pmt_lkPJrywRlDAp5oKrqOeRHEt0",
"date_created": "2019-02-14T19:47:03+0200",
"description": "Order #23",
"currency": "EUR",
"status": "Captured",
"amount": 1000,
"refund_amount": 0,
"fee_amount": 48,
"payee_email": null,
"payee_phone": null,
"merchant_ref": null,
"card": {
"token": "crd_U0FBPmz5t2zjDjKaOGABlo6A",
"expiration_month": "05",
"expiration_year": "2022",
"bin": "411111",
"last_four": "1111",
"type": "Visa",
"holder_name": "John Doe",
"supports_installments": false,
"status": "valid",
"friendly_name": "Visa xxxx 1111 (05/2022)",
"tds": {
"enrolled": null,
"eci_flag": null,
"auth_code": null,
"auth_desc": null
}
},
"metadata": {
},
"refunded": false,
"refunds": [
],
"installments_count": 0,
"installments": [
],
"split": true,
"transfer_amount": 0,
"transfers": [
],
"branch_token": "brc_0E0pqRYhL167TaKhtge83YNy"
}
Update an existing payment’s information. Any not provided parameter will be left unchanged.
Path Arguments | |
---|---|
paymentId required | The Payment ID. |
Body Arguments | |
---|---|
description optional | A description of your payment object. |
metadata optional | A set of custom key-value pairs. You can unset all metadata by posting an empty value. |
List all payments
Definition
GET https://api.everypay.gr/payments
Example Request
$ curl https://api.everypay.gr/payments?count=5&offset=0 \
-u sk_PqSohnrYrRI1GUKOZvDkK5VVWAhnlU3R:
Example Response
200 OK
{
"total_count": 381,
"items": [
{
"token": "pmt_lkPJrywRlDAp5oKrqOeRHEt0",
"date_created": "2019-02-14T19:47:03+0200",
"description": "Order #GGA-435167",
"currency": "EUR",
"status": "Captured",
"amount": 1000,
"refund_amount": 0,
"fee_amount": 48,
"payee_email": null,
"payee_phone": null,
"merchant_ref": null,
"card": {
"token": "crd_U0FBPmz5t2zjDjKaOGABlo6A",
"expiration_month": "05",
"expiration_year": "2019",
"bin": "411111",
"last_four": "1111",
"type": "Visa",
"holder_name": "John Doe",
"supports_installments": false,
"status": "valid",
"friendly_name": "Visa •••• 1111 (05/2019)",
"tds": {
"enrolled": null,
"eci_flag": null,
"auth_code": null,
"auth_desc": null
}
},
"refunded": false,
"refunds": [],
"installments_count": 0,
"installments": [],
"split": false,
"transfer_amount": 0,
"transfers": []
},
{...},
{...},
{...},
{...}
]
}
Returns a list of payments. You can use the below parameters to limit the results and paginate through the list.
Query Arguments | |
---|---|
count optional 10 20 |
The number of records to return back in response. Limit can range between 1 and 20. |
offset optional 0 |
The number of records to skip before adding results to the response. (e.g to get the records from position 10 and after, use offset=9). The default value is 0. |
date_from optional | Provide a date from in YYYY-MM-DD format. |
date_to optional | Provide a date to in YYYY-MM-DD format. |
merchant_ref optional | Provide the unique merchant reference ID used in the payment creation call. |
Refunds
Refunds allow you to refund a payment. The refunded amount will be credited to the payment card that was originally charged.
The refund object
The refund object
{
"token": "ref_ew6fZqrUbWrfCQuPgcSjeYD7",
"date_created": "2019-02-15T18:54:38+0300",
"status": "Captured",
"amount": 10000,
"fee_amount": 120,
"description": "Refund for Order #123",
"metadata": {},
"payment": "pmt_UKQs1FCubxhtOdVIGfZPt1ER"
}
Property | Description |
---|---|
token string | Unique identifier (ID) for the refund object. Always starts with the prefix ref_. |
date_created string | The creation date of refund in ISO 8601 format. |
status string | Indicates the refund status.Captured Failed |
amount integer | The refund amount in the smallest currency unit e.g in cents. |
fee_amount integer | The service fee amount that is refunded as well, and is calculated proportionally to the refund amount. |
description string | The refund reason. |
metadata object | A set of custom key-value pairs. |
payment string | A Payment ID of the payment that was refunded. |
Create a refund
Definition
POST https://api.everypay.gr/refunds
Example request
$ curl https://api.everypay.gr/refunds \
-u sk_PqSohnrYrRI1GUKOZvDkK5VVWAhnlU3R: \
-d payment=pmt_UKQs1FCubxhtOdVIGfZPt1ER \
-d amount=10000 \
-d description="Refund for Order #123"
Example Response
200 OK
{
"token": "ref_ew6fZqrUbWrfCQuPgcSjeYD7",
"date_created": "2019-02-15T18:54:38+0300",
"status": "Captured",
"amount": 10000,
"fee_amount": 120,
"description": "Refund for Order #123",
"metadata": {},
"payment": "pmt_UKQs1FCubxhtOdVIGfZPt1ER"
}
Refund an existing payment, which will result in funds being returned to the previously charged payment card. It is possible to only refund part of captured payment. This partial refund can be repeated for as long as the payment is not fully refunded.
Body Arguments | |
---|---|
payment required | The Payment ID of the payment to refund. |
amount optional | The amount (in cents) to refund. This must be less or equal to current amount of payment that is being refunded. If no amount is provided then the remaining amount of payment will be used. |
description optional | Useful to describe the refund reason. |
send_receipt optional 0 |
1 A refund receipt will be sent to the customer for this specific refund, even if email notifications to the customer for new payments/refunds are disabled from settings. The customer email will be taken from the payee_email parameter, if set. Otherwise, the payee email from payment will be used or, if this is also not set, the customer email, in case a customer token was used for the payment. 0 A return receipt will be send only if customer notifications for new payments/refunds are enabled. |
payee_email optional | The customer email that will be used to send the refund receipt. |
metadata optional | A set of custom key-value pairs. |
Retrieve a refund
Definition
GET https://api.everypay.gr/refunds/{refundId}
Example Request
$ curl https://api.everypay.gr/refunds/ref_ew6fZqrUbWrfCQuPgcSjeYD7 \
-u sk_PqSohnrYrRI1GUKOZvDkK5VVWAhnlU3R:
Example Response
200 OK
{
"token": "ref_ew6fZqrUbWrfCQuPgcSjeYD7",
"date_created": "2019-02-15T18:54:38+0300",
"status": "Captured",
"amount": 10000,
"fee_amount": 120,
"description": "Refund for Order #123",
"metadata": {},
"payment": "pmt_UKQs1FCubxhtOdVIGfZPt1ER"
}
Retrieves the details of a refund. Provide the unique refund ID that was returned from the creation call.
Path Arguments | |
---|---|
refundId required | The unique Refund ID. |
List all refunds
Definition
GET https://api.everypay.gr/refunds
Example Request
$ curl https://api.everypay.gr/refunds \
-u sk_PqSohnrYrRI1GUKOZvDkK5VVWAhnlU3R:
Example Response
200 OK
{
"total_count": 122,
"items": [
{
"token": "ref_ew6fZqrUbWrfCQuPgcSjeYD7",
"date_created": "2019-02-15T18:54:38+0300",
"status": "Captured",
"amount": 10000,
"fee_amount": 120,
"description": "Refund for Order #123",
"payment": "pmt_UKQs1FCubxhtOdVIGfZPt1ER"
},
{...},
{...},
{...},
{...}
]
}
Returns a list of refunds. You can use the below parameters to limit the results and paginate through the list.
Query Arguments | |
---|---|
count optional 10 20 |
The number of records to return back in response. Limit can range between 1 and 20. |
offset optional 0 |
The number of records to skip before adding results to the response. |
date_from optional | Provide a date from in YYYY-MM-DD format. |
date_to optional | Provide a date to in YYYY-MM-DD format. |
payment optional | Provide the Payment ID to fetch refunds only for the specified payment. |
Notifications
Notifications are used in order to collect payments from your customers through a notification email. You can create a notification by using our API or through your merchant dashboard.
Create a notification
Definition
POST https://api.everypay.gr/notifications
Example request with customer data and merchant secret key
$ curl https://api.everypay.gr/notifications \
-u sk_PqSohnrYrRI1GUKOZvDkK5VVWAhnlU3R: \
-d payee_name="John Doe" \
-d payee_email="john.doe@themail.com" \
-d payee_phone=2106969169 \
-d amount=4500 \
-d description="Payment for item #450"
-d expiration_date="2015-10-19 15:52:00" \
Example Response
200 OK
{
"token": "pnt_lmPLs5zHKCK2sa8B20wZ9xNq",
"status": "Pending",
"date_created": "2020-06-03T17:20:35+0300",
"description": "Payment for item #450",
"amount": 4500,
"payee_name": "John Doe",
"payee_email": "john.doe@themail.com",
"payee_phone": "2106969169",
"expiration_date": "2020-10-18T15:52:00+0300",
"locale": "el",
"skip_notify": false,
"payment": null,
"create_customer": false
}
Creates a payment notification from the merchant to a certain customer. The notification will be sent to the customer by email.
Body Arguments | |
---|---|
payee_name required | Provide the name of the customer to whom we want to send the notification. |
payee_email required | Provide the email address of the customer to whom we want to send the notification. |
payee_phone required | Provide the phone number of the customer to whom we want to send the notification. |
amount required | A positive integer in the smallest currency unit e.g in cents (e.g 10,99 EUR shall be converted to 1099). |
description required | A short description of the payment that will be requested by the notification. |
expiration_date optional | The expiration date of the payment notification (should not be less than 24 hours after the creation of the notification. Signifies the last date when the notification could be used.). For example: “2015-10-18T15:52:00+0300” |
locale optional | The language to be used for the notification email that will be sent to the customer. |
skip_notify optional 0 |
0 : the notification will be sent to the customer at the provided email. 1 : no email will be sent to the customer. |
create_customer optional 0 |
0 : no customer object will be created during the payment. 1 : a customer object will be created during the payment. |
split optional 0 |
0 : This parameter is to be used only by marketplaces and has similar meaning to the split parameter used when creating new payments. It should be set to 1 if the payment should be processed as a marketplace-payment. |
Retrieve a notification
Definition
GET https://api.everypay.gr/notifications/{notificationId}
Example Request
$ curl https://api.everypay.gr/notifications/pnt_ZO0maRe68evdrVnLDmdsR3xE \
-u sk_PqSohnrYrRI1GUKOZvDkK5VVWAhnlU3R:
Example Response
200 OK
{
"token": "pnt_lmPLs5zHKCK2sa8B20wZ9xNq",
"status": "Pending",
"date_created": "2020-06-03T17:20:35+0300",
"description": "Payment for item #450",
"amount": 4500,
"payee_name": "John Doe",
"payee_email": "john.doe@themail.com",
"payee_phone": "2106969169",
"expiration_date": "2020-10-18T15:52:00+0300",
"locale": "el",
"skip_notify": false,
"payment": null,
"create_customer": false
}
Retrieves the details of a certain payment notification. Provide the unique notification ID that was returned from the creation call.
Path Arguments | |
---|---|
notificationId required | The unique notification ID. |
List all notifications
Definition
GET https://api.everypay.gr/notifications
Example Request
$ curl https://api.everypay.gr/notifications?count=3&offset=1 \
-u sk_PqSohnrYrRI1GUKOZvDkK5VVWAhnlU3R:
Example Response
200 OK
{
"total_count": 10,
"items": [
{
"token": "pnt_ZO0maRe68evdrVnLDmdsR3xE",
"status": "Pending",
"date_created": "2016-01-14T13:21:29+0200",
"description": "Δόση 1η 2016",
"amount": 4500,
"payee_name": "John Doe",
"payee_email": "john.doe@gmail.com",
"payee_phone": "2106561444",
"expiration_date": "2016-02-25T23:59:00+0200",
"locale": "el"
"skip_notify": false
"payment": null
"create_customer": false
},
{
"token": "pnt_RobdUp58eeNzUQtOhaFHwxhi",
"status": "Expired",
"date_created": "2015-10-12T16:31:03+0300",
"description": "Καλάθι #2199",
"amount": 1100,
"payee_name": "John Doe",
"payee_email": "john.doe@gmail.com",
"payee_phone": "2106561444",
"expiration_date": "2015-10-22T23:59:00+0300",
"locale": "el"
"skip_notify": false
"payment": null
"create_customer": false
},
{
"token": "pnt_UuvUZgi12l76CuqBdRv1XLbK",
"status": "Expired",
"date_created": "2015-10-12T16:25:10+0300",
"description": "Δόση 12",
"amount": 2500,
"payee_name": "Mike Doe",
"payee_email": "mike.doe@gmail.com",
"payee_phone": "2106561333",
"expiration_date": "2015-10-15T23:59:00+0300",
"locale": "el"
"skip_notify": false
"payment": null
"create_customer": false
}
]
}
Returns a list of payment notifications. You can use the parameters below to limit the results and paginate through the list. Notifications are listed in order of creation date (the most recent at the top).
Query Arguments | |
---|---|
count optional 10 20 |
The number of records to return back in response. Limit can range between 1 and 20. If not specified, a default value of 10 is used. |
offset optional 0 |
The number of records to skip before adding results to the response (e.g to get the records from position 10 and after, use offset=9). The default value is 0. |
date_from optional | Provide a date from in YYYY-MM-DD format. |
date_to optional | Provide a date to in YYYY-MM-DD format. |
Cancel a notification
Definition
DELETE https://api.everypay.gr/notifications/{notificationId}
Example Request
$ curl https://api.everypay.gr/notifications/pnt_ZO0maRe68evdrVnLDmdsR3xE \
-u sk_PqSohnrYrRI1GUKOZvDkK5VVWAhnlU3R: \
-X DELETE
Example Response
200 OK
{
"token": "pnt_lmPLs5zHKCK2sa8B20wZ9xNq",
"status": "Pending",
"date_created": "2020-06-03T17:20:35+0300",
"description": "Payment for item #450",
"amount": 4500,
"payee_name": "John Doe",
"payee_email": "john.doe@themail.com",
"payee_phone": "2106969169",
"expiration_date": "2020-10-18T15:52:00+0300",
"locale": "el",
"skip_notify": false,
"payment": null,
"create_customer": false
}
Cancels a pending notification.
Path Arguments | |
---|---|
notificationId required | The unique notification ID. |
Tokens
Tokens are used in case you do not want to process or store sensitive card data, such as card number or CVV, on your servers. They can be easily obtained with the use of the EveryPay Button, but you can also create tokens, via our API, in other environments (for example in mobile apps).
Tokens can be created by using either your Public Key or your Secret Key. You can safely embed your Public Key in JavaScript frontend apps or mobile apps (such as iOS or Android), in order to avoid processing of sensitive card data.
The token object
The token object
{
"token": "ctn_KJ53Qx3ZGaNLttUNxyB5JQO3",
"is_used": false,
"has_expired": false,
"amount": 1000,
"date_created": "2019-02-14T16:51:46+0200",
"card": {
"token": "crd_N9YNHC2TUskLo2hWNi3BkK8Z",
"expiration_month": "05",
"expiration_year": "2022",
"bin": "411111",
"last_four": "1111",
"type": "Visa",
"holder_name": "John Doe",
"supports_installments": false,
"max_installments": 0,
"status": "valid",
"friendly_name": "Visa xxxx 1111 (05/2022)",
"tds": {
"enrolled": null,
"eci_flag": null,
"auth_code": null,
"auth_desc": null
}
}
}
Property | Description |
---|---|
token string | Unique identifier (ID) for the token object. Always starts with the prefix ctn_. |
is_used boolean | Determines whether this token has already been used. |
has_expired boolean | Determines whether the token has expired. If token has expired it can not be used in any transaction. |
amount integer | A positive integer in the smallest currency unit e.g in cents (e.g 10,99 EUR shall be converted to 1099). You can use this to bind the specific token with the provided amount. |
date_created string | The creation date of token in ISO 8601 format. |
card object | A card object containing the card details. |
Create a token
Definition
POST https://api.everypay.gr/tokens
Example Request
$ curl https://api.everypay.gr/tokens \
-u pk_atFzbY3VB94gFFJ3FxArEWM8DpnuA1y8: \
-d card_number=411111111111111 \
-d expiration_year=2022 \
-d expiration_month=05 \
-d cvv=334 \
-d holder_name="John Doe" \
-d amount=1000
Example Response
200 OK
{
"token": "ctn_KJ53Qx3ZGaNLttUNxyB5JQO3",
"is_used": false,
"has_expired": false,
"amount": 1000,
"date_created": "2019-02-14T16:51:46+0200",
"card": {
"token": "crd_N9YNHC2TUskLo2hWNi3BkK8Z",
"expiration_month": "05",
"expiration_year": "2022",
"bin": "411111",
"last_four": "1111",
"type": "Visa",
"holder_name": "John Doe",
"supports_installments": false,
"max_installments": 0,
"status": "valid",
"friendly_name": "Visa xxxx 1111 (05/2022)",
"tds": {
"enrolled": null,
"eci_flag": null,
"auth_code": null,
"auth_desc": null
}
}
}
Creates a single-use token that represents a payment card’s details.
Body Arguments | |
---|---|
card arguments required | All required fields of the Card Arguments. |
amount optional | A positive integer in the smallest currency unit e.g in cents (e.g 10,99 EUR shall be converted to 1099). |
Retrieve a token
Definition
GET https://api.everypay.gr/tokens/{tokenId}
Example Request
$ curl https://api.everypay.gr/tokens/ctn_KJ53Qx3ZGaNLttUNxyB5JQO3 \
-u pk_atFzbY3VB94gFFJ3FxArEWM8DpnuA1y8:
Example Response
200 OK
{
"token": "ctn_KJ53Qx3ZGaNLttUNxyB5JQO3",
"is_used": false,
"has_expired": false,
"amount": 1000,
"date_created": "2019-02-14T16:51:46+0200",
"card": {
"token": "crd_N9YNHC2TUskLo2hWNi3BkK8Z",
"expiration_month": "05",
"expiration_year": "2022",
"bin": "411111",
"last_four": "1111",
"type": "Visa",
"holder_name": "John Doe",
"supports_installments": false,
"max_installments": 0,
"status": "valid",
"friendly_name": "Visa xxxx 1111 (05/2022)",
"tds": {
"enrolled": null,
"eci_flag": null,
"auth_code": null,
"auth_desc": null
}
}
}
Retrieve an existing token object.
Path Arguments | |
---|---|
tokenId required | The unique Token ID. |
Customers
Customers allows you to store multiple tokenized cards for later use on a single object. Customers are useful for tracking payments and perform recurring payment that are associated with the same entity.
The customer object
The customer object
{
"token": "cus_RxE6DEcITxOYyynErDK6VoBa",
"description": "Club Member",
"email": "cofounder@themail.com",
"date_created": "2019-02-14T17:50:09+0200",
"full_name": "John Doe",
"is_active": true,
"date_modified": "2019-02-14T17:50:09+0200",
"card": {
"token": "crd_xDQhOiVCyKFcUphQMEdUPuXQ",
"expiration_month": "05",
"expiration_year": "2022",
"bin": "411111",
"last_four": "1111",
"type": "Visa",
"holder_name": "John Doe",
"supports_installments": false,
"max_installments": 0,
"status": "valid",
"friendly_name": "Visa xxxx 1111 (05/2022)",
"tds": {
"enrolled": null,
"eci_flag": null,
"auth_code": null,
"auth_desc": null
}
},
"cards": {
"count": 1,
"data": [
{
"token": "crd_xDQhOiVCyKFcUphQMEdUPuXQ",
"expiration_month": "05",
"expiration_year": "2022",
"bin": "411111",
"last_four": "1111",
"type": "Visa",
"holder_name": "John Doe",
"supports_installments": false,
"max_installments": 0,
"status": "valid",
"friendly_name": "Visa xxxx 1111 (05/2022)",
"tds": {
"enrolled": null,
"eci_flag": null,
"auth_code": null,
"auth_desc": null
}
}
]
}
}
Property | Description |
---|---|
token string | Unique identifier (ID) for the customer object. Always starts with the prefix cus_. |
description string | A description of your customer object. |
full_name string | Customer’s full name. |
email string | Customer’s email address. In case a payment is made with a customer object this address will be used to send a payment receipt. |
date_created string | The creation date of customer in ISO 8601 format. |
is_active boolean | Indicates if customer is active. Inactive customer cannot longer perform any payments. |
date_modified string | The latest modification date of customer in ISO 8601 format. |
card object | An object containing card details which indicates the customer’s default card as well. |
cards list | A list of cards associated with this customer. |
Create a customer
Definition
POST https://api.everypay.gr/customers
Example request with card data
$ curl https://api.everypay.gr/customers \
-u sk_PqSohnrYrRI1GUKOZvDkK5VVWAhnlU3R: \
-d card_number=4111111111111111 \
-d expiration_year=2022 \
-d expiration_month=05 \
-d holder_name="John Doe" \
-d email=customer@themail.com \
-d description="Club Member" \
-d full_name="John Doe"
Example request with card token
$ curl https://api.everypay.gr/customers \
-u sk_PqSohnrYrRI1GUKOZvDkK5VVWAhnlU3R: \
-d token=ctn_KJ53Qx3ZGaNLttUNxyB5JQO3 \
-d email=customer@themail.com \
-d description="Club Member" \
-d full_name="John Doe"
Example Response
200 OK
{
"token": "cus_RxE6DEcITxOYyynErDK6VoBa",
"description": "Club Member",
"email": "cofounder@themail.com",
"date_created": "2019-02-14T17:50:09+0200",
"full_name": "John Doe",
"is_active": true,
"date_modified": "2019-02-14T17:50:09+0200",
"card": {
"token": "crd_xDQhOiVCyKFcUphQMEdUPuXQ",
"expiration_month": "05",
"expiration_year": "2022",
"bin": "411111",
"last_four": "1111",
"type": "Visa",
"holder_name": "John Doe",
"supports_installments": false,
"max_installments": 0,
"status": "valid",
"friendly_name": "Visa xxxx 1111 (05/2022)",
"tds": {
"enrolled": null,
"eci_flag": null,
"auth_code": null,
"auth_desc": null
}
},
"cards": {
"count": 1,
"data": [
{
"token": "crd_xDQhOiVCyKFcUphQMEdUPuXQ",
"expiration_month": "05",
"expiration_year": "2022",
"bin": "411111",
"last_four": "1111",
"type": "Visa",
"holder_name": "John Doe",
"supports_installments": false,
"max_installments": 0,
"status": "valid",
"friendly_name": "Visa xxxx 1111 (05/2022)",
"tds": {
"enrolled": null,
"eci_flag": null,
"auth_code": null,
"auth_desc": null
}
}
]
}
}
You can create a customer object by providing one of the following, as shown in the examples:
- A dictionary with Card Arguments
- An unused and non expired Card Token ID
Body Arguments | |
---|---|
card arguments optional | All required fields of the Card Arguments, except card’s CVV. |
token optional | An unused and non expired Card Token ID. |
description optional | A description of your customer object. |
full_name optional | Customer’s full name. |
email optional | Customer’s email address. This address is used in order to send the payment receipt. |
Retrieve a customer
Definition
GET https://api.everypay.gr/customers/{customerId}
Example Request
$ curl https://api.everypay.gr/customers/cus_RxE6DEcITxOYyynErDK6VoBa \
-u sk_PqSohnrYrRI1GUKOZvDkK5VVWAhnlU3R:
Example Response
200 OK
{
"token": "cus_RxE6DEcITxOYyynErDK6VoBa",
"description": "Club Member",
"email": "cofounder@themail.com",
"date_created": "2019-02-14T17:50:09+0200",
"full_name": "John Doe",
"is_active": true,
"date_modified": "2019-02-14T17:50:09+0200",
"card": {
"token": "crd_xDQhOiVCyKFcUphQMEdUPuXQ",
"expiration_month": "05",
"expiration_year": "2022",
"bin": "411111",
"last_four": "1111",
"type": "Visa",
"holder_name": "John Doe",
"supports_installments": false,
"max_installments": 0,
"status": "valid",
"friendly_name": "Visa xxxx 1111 (05/2022)",
"tds": {
"enrolled": null,
"eci_flag": null,
"auth_code": null,
"auth_desc": null
}
},
"cards": {
"count": 1,
"data": [
{
"token": "crd_xDQhOiVCyKFcUphQMEdUPuXQ",
"expiration_month": "05",
"expiration_year": "2022",
"bin": "411111",
"last_four": "1111",
"type": "Visa",
"holder_name": "John Doe",
"supports_installments": false,
"max_installments": 0,
"status": "valid",
"friendly_name": "Visa xxxx 1111 (05/2022)",
"tds": {
"enrolled": null,
"eci_flag": null,
"auth_code": null,
"auth_desc": null
}
}
]
}
}
Retrieve an existing customer object.
Path Arguments | |
---|---|
customerId required | The unique Customer ID. |
Update a customer
Definition
PUT https://api.everypay.gr/customers/{customerId}
Example update request of customer’s details
$ curl https://api.everypay.gr/customers/cus_RxE6DEcITxOYyynErDK6VoBa \
-u sk_PqSohnrYrRI1GUKOZvDkK5VVWAhnlU3R: \
-d email="newmail@example.com" \
-d full_name="Steve Doe" \
-d description="Silver Member" \
-X PUT
Example update request of customer’s default card
$ curl https://api.everypay.gr/customers/cus_RxE6DEcITxOYyynErDK6VoBa \
-u sk_PqSohnrYrRI1GUKOZvDkK5VVWAhnlU3R: \
-d card=crd_xDQhOiVCyKFcUphQMEdUPuXQ
-d default_card=1
-X PUT
Example Response
200 OK
{
"token": "cus_RxE6DEcITxOYyynErDK6VoBa",
"description": "Silver Member",
"email": "newmail@example.com",
"date_created": "2019-02-14T17:50:09+0200",
"full_name": "Steve Doe",
"is_active": true,
"date_modified": "2019-02-14T17:50:09+0200",
"card": {
"token": "crd_xDQhOiVCyKFcUphQMEdUPuXQ",
"expiration_month": "05",
"expiration_year": "2022",
"bin": "411111",
"last_four": "1111",
"type": "Visa",
"holder_name": "John Doe",
"supports_installments": false,
"max_installments": 0,
"status": "valid",
"friendly_name": "Visa xxxx 1111 (05/2022)",
"tds": {
"enrolled": null,
"eci_flag": null,
"auth_code": null,
"auth_desc": null
}
},
"cards": {
"count": 1,
"data": [
{
"token": "crd_xDQhOiVCyKFcUphQMEdUPuXQ",
"expiration_month": "05",
"expiration_year": "2022",
"bin": "411111",
"last_four": "1111",
"type": "Visa",
"holder_name": "John Doe",
"supports_installments": false,
"max_installments": 0,
"status": "valid",
"friendly_name": "Visa xxxx 1111 (05/2022)",
"tds": {
"enrolled": null,
"eci_flag": null,
"auth_code": null,
"auth_desc": null
}
}
]
}
}
Update an existing customer’s information. Any not provided parameter will be left unchanged.
Path Arguments | |
---|---|
customerId required | The Customer ID. |
Body Arguments | |
---|---|
description optional | A description of your customer object. |
full_name optional | Customer’s full name. |
email optional | Customer’s email address. This address is used in order to send the payment receipt. |
card optional | The Card ID. |
default_card optional 0 |
Whether to set provided card as default.1 mark card as default.0 no change is performed. |
Delete a customer
Definition
DELETE https://api.everypay.gr/customers/{customerId}
Example Request
$ curl https://api.everypay.gr/customers/cus_RxE6DEcITxOYyynErDK6VoBa \
-u sk_PqSohnrYrRI1GUKOZvDkK5VVWAhnlU3R: \
-X DELETE
Example Response
200 OK
{
"token": "cus_RxE6DEcITxOYyynErDK6VoBa",
"description": "Club Member",
"email": "customer@themail.com",
"date_created": "2019-02-14T17:50:09+0200",
"full_name": "John Doe",
"is_active": false,
"date_modified": "2019-02-14T17:50:09+0200"
}
Deletes an existing customer object.
Path Arguments | |
---|---|
customerId required | The unique Customer ID. |
List all customers
Definition
GET https://api.everypay.gr/customers
Example Request
$ curl https://api.everypay.gr/customers?count=5&offset=0 \
-u sk_PqSohnrYrRI1GUKOZvDkK5VVWAhnlU3R:
Example Response
200 OK
{
"total_count": 122,
"items": [
{
"token": "cus_RxE6DEcITxOYyynErDK6VoBa",
"description": "Club Member",
"email": "customer@themail.com",
"date_created": "2019-02-14T17:50:09+0200",
"full_name": "John Doe",
"is_active": true,
"date_modified": "2019-02-14T17:50:09+0200",
"card": {
"token": "crd_xDQhOiVCyKFcUphQMEdUPuXQ",
"expiration_month": "05",
"expiration_year": "2022",
"bin": "411111",
"last_four": "1111",
"type": "Visa",
"holder_name": "John Doe",
"supports_installments": false,
"status": "valid",
"friendly_name": "Visa •••• 1111 (05/2022)",
"tds": {
"enrolled": null,
"eci_flag": null,
"auth_code": null,
"auth_desc": null
}
},
"cards": {
"count": 1,
"data": [
{
"token": "crd_xDQhOiVCyKFcUphQMEdUPuXQ",
"expiration_month": "05",
"expiration_year": "2022",
"bin": "411111",
"last_four": "1111",
"type": "Visa",
"holder_name": "John Doe",
"supports_installments": false,
"status": "valid",
"friendly_name": "Visa •••• 1111 (05/2022)",
"tds": {
"enrolled": null,
"eci_flag": null,
"auth_code": null,
"auth_desc": null
}
}
]
}
},
{...},
{...},
{...},
{...}
]
}
Returns a list of customers. You can use the below parameters to limit the results and paginate through the list.
Query Arguments | |
---|---|
count optional 10 20 |
The number of records to return back in response. Limit can range between 1 and 20. |
offset optional 0 |
The number of records to skip before adding results to the response. |
date_from optional | Provide a date from in YYYY-MM-DD format. |
date_to optional | Provide a date to in YYYY-MM-DD format. |
Mandates
Mandates allow merchants to collect payments recurrently.
The mandate object
The mandate object
{
"token": "man_saKM36D59XehC9IEr1F3QgUW",
"date_created": "2021-06-23 17:17:19",
"status": "valid",
"payment_method": "card",
"mandate_reference": null,
"payment_method_details": {
"token": "crd_pMynGf1CpI3QC7fX6ocV22f7",
"type": "MasterCard",
"bin": "521792",
"last_four": "6273",
"expiration_month": "12",
"expiration_year": "2023",
"holder_name": "test",
"status": "valid",
"customer": "cus_ZKTziKqElUcg0fLUNkfA0J5d",
"friendly_name": "MasterCard •••• 6273 (12/2023)",
"billing": {
"country": "GR",
"city": null,
"state": "A",
"postal_code": null,
"address_line1": null,
"address_line2": null
},
"issuer": null,
"issuer_country": null,
"tds": {
"enrolled": "Y",
"eci_flag": "05",
"auth_code": "Success",
"auth_desc": "Authenticated"
}
},
}
Property | Description |
---|---|
token string | Unique identifier (ID) for the mandate object. Always starts with the prefix man_. |
date_created string | The creation date of the mandate in ISO 8601 format. |
mandate_reference string | Unique merchant identifier (ID) for the mandate. |
payment_method_details object | Contains information about the recurring transaction such as the card details. |
status string | Indicates the mandate status.valid revoked |
payment_method string | The payment method that was used during the recurring transaction. |
Retrieve a mandate
Retrieve all details of an existing mandate.
Definition
GET /customers/{customerId}/mandates/{mandateId}
Example Request
$ curl https://api.everypay.gr/customers/cus_ZKTziKqElUcg0fLUNkfA0J5d/mandates/man_saKM36D59XehC9IEr1F3QgUW \
-u sk_PqSohnrYrRI1GUKOZvDkK5VVWAhnlU3R:
Example Response
200 OK
{
"token": "man_saKM36D59XehC9IEr1F3QgUW",
"date_created": "2021-06-23 17:17:19",
"status": "valid",
"payment_method": "card",
"mandate_reference": null,
"payment_method_details": {
"token": "crd_pMynGf1CpI3QC7fX6ocV22f7",
"type": "MasterCard",
"bin": "521792",
"last_four": "6273",
"expiration_month": "12",
"expiration_year": "2023",
"holder_name": "test",
"status": "valid",
"customer": "cus_ZKTziKqElUcg0fLUNkfA0J5d",
"friendly_name": "MasterCard •••• 6273 (12/2023)",
"billing": {
"country": "GR",
"city": null,
"state": "A",
"postal_code": null,
"address_line1": null,
"address_line2": null
},
"issuer": null,
"issuer_country": null,
"tds": {
"enrolled": "Y",
"eci_flag": "05",
"auth_code": "Success",
"auth_desc": "Authenticated"
}
},
}
Path Arguments | |
---|---|
customerId required | The unique Customer ID that is assigned to that mandate. |
mandateId required | The unique Mandate ID that can be obtained on initial recurring charges. |
Revoke a mandate
Definition
DELETE /customers/{customerId}/mandates/{mandateId}
Example Request
$ curl https://api.everypay.gr/customers/cus_ZKTziKqElUcg0fLUNkfA0J5d/mandates/man_saKM36D59XehC9IEr1F3QgUW \
-u sk_PqSohnrYrRI1GUKOZvDkK5VVWAhnlU3R: \
-X DELETE
Example Response
200 OK
{
"token": "man_saKM36D59XehC9IEr1F3QgUW",
"date_created": "2021-06-23 17:17:19",
"status": "revoked",
"payment_method": "card",
"mandate_reference": null,
"payment_method_details": {
"token": "crd_pMynGf1CpI3QC7fX6ocV22f7",
"type": "MasterCard",
"bin": "521792",
"last_four": "6273",
"expiration_month": "12",
"expiration_year": "2023",
"holder_name": "test",
"status": "valid",
"customer": "cus_ZKTziKqElUcg0fLUNkfA0J5d",
"friendly_name": "MasterCard •••• 6273 (12/2023)",
"billing": {
"country": "GR",
"city": null,
"state": "A",
"postal_code": null,
"address_line1": null,
"address_line2": null
},
"issuer": null,
"issuer_country": null,
"tds": {
"enrolled": "Y",
"eci_flag": "05",
"auth_code": "Success",
"auth_desc": "Authenticated"
}
},
}
Revoke a mandate for a specific customer.
Path Arguments | |
---|---|
customerId required | The unique Customer ID that is assigned to that mandate. |
mandateId required | The unique Mandate ID that will be deleted. |
List all Mandates
Definition
GET https://api.everypay.gr/customers/{customerID}/mandates
Example Request
$ curl https://api.everypay.gr/customers/cus_ZKTziKqElUcg0fLUNkfA0J5d/mandates \
-u sk_PqSohnrYrRI1GUKOZvDkK5VVWAhnlU3R:
Example Response
200 OK
{
"total_count": 3,
"items": [
{
"token": "man_saKM36D59XehC9IEr1F3QgUW",
"date_created": "2021-06-23 17:17:19",
"status": "valid",
"payment_method": "card",
"mandate_reference": null,
"payment_method_details": {
"token": "crd_pMynGf1CpI3QC7fX6ocV22f7",
"type": "MasterCard",
"bin": "521792",
"last_four": "6273",
"expiration_month": "12",
"expiration_year": "2023",
"holder_name": "test",
"status": "valid",
"customer": "cus_ZKTziKqElUcg0fLUNkfA0J5d",
"friendly_name": "MasterCard •••• 6273 (12/2023)",
"billing": {
"country": "GR",
"city": null,
"state": "A",
"postal_code": null,
"address_line1": null,
"address_line2": null
},
"issuer": null,
"issuer_country": null,
"tds": {
"enrolled": "Y",
"eci_flag": "05",
"auth_code": "Success",
"auth_desc": "Authenticated"
}
},
},
{..},
{..}
]
}
Get a list of mandates that belong to a customer. You can use the below parameters to limit the results and paginate through the list.
Path Arguments | |
---|---|
customerId required | The unique Customer ID. |
Query Arguments | |
---|---|
mandate_reference optional min: 5 | The unique mandate reference ID. |
status optional | Provide one of the following statuses. completed revoked |
count optional 10 20 |
The number of records to return back in response. Limit can range between 1 and 20. |
offset optional 0 |
The number of records to skip before adding results to the response. |
date_from optional | Provide a date from in YYYY-MM-DD format. |
date_to optional | Provide a date to in YYYY-MM-DD format. |
Cards
Cards are representing a payment card (credit, debit, prepaid) and are used to save card data for later use.
Cards can also be used to represent card data in other operations (for example to specify card data when creating a new Payment or a Token).
The card object
The card object
{
"token": "crd_xDQhOiVCyKFcUphQMEdUPuXQ",
"type": "Visa",
"bin": "411111",
"last_four": "1111",
"expiration_month": "05",
"expiration_year": "2022",
"holder_name": "John Doe",
"status": "valid",
"customer": "cus_RxE6DEcITxOYyynErDK6VoBa",
"supports_installments": false,
"friendly_name": "Visa xxxx 1111 (05/2022)",
"tds": {
"enrolled": null,
"eci_flag": null,
"auth_code": null,
"auth_desc": null
}
}
Property | Description |
---|---|
token string | Unique identifier (ID) for the card object. Always starts with the prefix crd_. |
type string | The card type (Visa, MasterCard, etc.). |
bin string | The first six digits of the payment card number. |
last_four string | The last four digits of the card number. |
expiration_month string | A two-digit number representing the expiration month of a card (e.g., 08 for August). |
expiration_year string | A four-digit number representing the expiration year of a card (e.g. 2022). |
holder_name string | The cardholder’s name. |
status string | Indicates the card status.valid expired |
customer string | A Customer ID that is owner of this card. |
supports_installments boolean | Indicates if card supports installments. |
friendly_name string | A friendly representation of card’s data. |
tds.enrolled string | tds.enrolled |
tds.eci_flag string | tds.eci_flag |
tds.auth_code string | tds.auth_code |
tds.auth_desc string | tds.auth_desc |
Create a card
Definition
POST https://api.everypay.gr/customers/{customerId}/cards
Example request with card data
$ curl https://api.everypay.gr/customers/cus_RxE6DEcITxOYyynErDK6VoBa/cards \
-u sk_PqSohnrYrRI1GUKOZvDkK5VVWAhnlU3R: \
-d card_number=4111111111111111 \
-d expiration_year=2022 \
-d expiration_month=05 \
-d holder_name="John Doe" \
-d default_card=1
Example request with card token
$ curl https://api.everypay.gr/customers/cus_RxE6DEcITxOYyynErDK6VoBa/cards \
-u sk_PqSohnrYrRI1GUKOZvDkK5VVWAhnlU3R: \
-d token=ctn_KJ53Qx3ZGaNLttUNxyB5JQO3
Example Response
200 OK
{
"token": "crd_xDQhOiVCyKFcUphQMEdUPuXQ",
"type": "Visa",
"bin": "411111",
"last_four": "1111",
"expiration_month": "05",
"expiration_year": "2022",
"holder_name": "John Doe",
"status": "valid",
"customer": "cus_RxE6DEcITxOYyynErDK6VoBa",
"supports_installments": false,
"friendly_name": "Visa xxxx 1111 (05/2022)",
"tds": {
"enrolled": null,
"eci_flag": null,
"auth_code": null,
"auth_desc": null
}
}
You can add a new card to an existing customer by providing, the same arguments as in a Create Customer call. By providing the argument default_card=1
you can set the newly created card as the customer’s default card.
Path Arguments | |
---|---|
customerId required | The unique Customer ID. |
Body Arguments | |
---|---|
card arguments optional | All required fields of the Card Arguments, except card’s CVV. |
token optional | An unused and non expired Card Token ID. |
default_card optional 0 |
Whether to set provided card as default.1 mark card as default.0 no change is performed. |
Retrieve a card
Definition
GET https://api.everypay.gr/customers/{customerId}/cards/{cardId}
Example Request
$ curl https://api.everypay.gr/customers/cus_RxE6DEcITxOYyynErDK6VoBa/cards/crd_xDQhOiVCyKFcUphQMEdUPuXQ \
-u sk_PqSohnrYrRI1GUKOZvDkK5VVWAhnlU3R:
Example Response
200 OK
{
"token": "crd_xDQhOiVCyKFcUphQMEdUPuXQ",
"type": "Visa",
"bin": "411111",
"last_four": "1111",
"expiration_month": "05",
"expiration_year": "2022",
"holder_name": "John Doe",
"status": "valid",
"customer": "cus_RxE6DEcITxOYyynErDK6VoBa",
"supports_installments": false,
"friendly_name": "Visa xxxx 1111 (05/2022)",
"tds": {
"enrolled": null,
"eci_flag": null,
"auth_code": null,
"auth_desc": null
}
}
Retrieve details of an existing card object that belongs to a customer.
Path Arguments | |
---|---|
customerId required | The unique Customer ID. |
cardId required | The unique Card ID. |
Delete a card
Definition
DELETE https://api.everypay.gr/customers/{customerId}/cards/{cardId}
Example Request
$ curl https://api.everypay.gr/customers/cus_RxE6DEcITxOYyynErDK6VoBa/cards/crd_FIAoNSiXlwpnSJrfojsrPdH4 \
-u sk_PqSohnrYrRI1GUKOZvDkK5VVWAhnlU3R: \
-X DELETE
Example Response
200 OK
{
"token": "crd_xDQhOiVCyKFcUphQMEdUPuXQ",
"is_deleted": true
}
You can delete a customer card by using this resource. If you delete a card that is the default card then the most recently added card will be used as new default card.
Path Arguments | |
---|---|
customerId required | The unique Customer ID. |
cardId required | The unique Card ID. |
List all cards
Definition
GET https://api.everypay.gr/customers/{customerID}/cards
Example Request
$ curl https://api.everypay.gr/customers/cus_RxE6DEcITxOYyynErDK6VoBa/cards \
-u sk_PqSohnrYrRI1GUKOZvDkK5VVWAhnlU3R:
Example Response
200 OK
{
"total_count": 3,
"items": [
{
"token": "crd_xDQhOiVCyKFcUphQMEdUPuXQ",
"type": "Visa",
"bin": "411111",
"last_four": "1111",
"expiration_month": "05",
"expiration_year": "2022",
"holder_name": "John Doe",
"status": "valid",
"customer": "cus_RxE6DEcITxOYyynErDK6VoBa",
"supports_installments": false,
"friendly_name": "Visa •••• 1111 (05/2022)",
"tds": {
"enrolled": null,
"eci_flag": null,
"auth_code": null,
"auth_desc": null
}
},
{...},
{...}
]
}
Returns a list of the cards belonging to a customer. You can use the below parameters to limit the results and paginate through the list.
Path Arguments | |
---|---|
customerId required | The unique Customer ID. |
cardId required | The unique Card ID. |
Query Arguments | |
---|---|
count optional 10 20 |
The number of records to return back in response. Limit can range between 1 and 20. |
offset optional 0 |
The number of records to skip before adding results to the response. |
date_from optional | Provide a date from in YYYY-MM-DD format. |
date_to optional | Provide a date to in YYYY-MM-DD format. |
Balance
The balance object represents your account balance.
The balance object
The balance object
{
"marketplace": {
"available_amount": 40000,
"current_amount": 200000,
}
}
Property | Description |
---|---|
marketplace.available_amount integer | The available balance of your marketplace account. This amount occurs from funds that are collected from transfer commissions or from direct credit transfers. |
marketplace.current_amount integer | Represents the current balance of your marketplace account. This amount occurs from unsettled seller payments. |
Retrieve balance
Definition
GET https://api.everypay.gr/balance
Example Request
$ curl https://api.everypay.gr/balance \
-u sk_PqSohnrYrRI1GUKOZvDkK5VVWAhnlU3R:
Example Response
200 OK
{
"marketplace": {
"available_amount": 40000,
"current_amount": 200000,
}
}
Retrieves the balance details of your account.
Path Arguments |
---|
No arguments required
Branches
Branches allow for companies to support more than one physical entities.
The branch object
The branch object
{
"token": "brc_0E0pqRYhL167TaKhtge83YNy",
"date_created": "2024-10-30T15:55:25+0200",
"title": "Branch 1",
"description": null,
"street_number": null,
"street": null,
"postal_code": null,
"address_area": null
}
Property | Description |
---|---|
token string | Unique identifier (ID) for the branch object. Always starts with the prefix brc_. |
date_created string | The creation date of branch in ISO 8601 format. |
title string | A title of your branch object. |
description string | A description of your branch object. |
street_number string | Branch’s street number. |
street string | Branch’s street. |
postal_code string | Branch’s postal code. |
address_area string | Branch’s address area. |
List all Branches
Definition
GET https://api.everypay.gr/branches
Example Request
$ curl https://api.everypay.gr/branches \
-u sk_PqSohnrYrRI1GUKOZvDkK5VVWAhnlU3R:
Example Response
200 OK
{
"total_count": 1,
"items": [
{
"token": "brc_0E0pqRYhL167TaKhtge83YNy",
"date_created": "2024-10-30T15:55:25+0200",
"title": "Branch 1",
"description": null,
"street_number": null,
"street": null,
"postal_code": null,
"address_area": null
}
]
}
Get a list of branches that belong to the company. You can use the below parameters to limit the results and paginate through the list.
Query Arguments | |
---|---|
count optional 10 20 |
The number of records to return back in response. Limit can range between 1 and 20. |
offset optional 0 |
The number of records to skip before adding results to the response. |
Sellers
To start accepting payments on your marketplace and on behalf of your sellers, you need to onboard them first to EveryPay Link.
With EveryPay Link, you will be able to perform the following:
- Create seller accounts and define payout schedules.
- Split payments and transfer funds to one or multiple linked seller accounts.
- Reverse transferred funds and manage customer refunds with automated reversals.
- Credit or debit a seller account to cover specific business cases, such as subscription or chargeback fees.
The seller object
The seller object
{
"token": "sel_lkPJrywRlDAp5oKrqOeRHEt0",
"date_created": "2019-02-14T19:47:03+0200",
"date_modified": "2019-02-14T17:50:09+0200",
"status": "Authorized",
"is_authorized": true,
"email": "seller1@example.com",
"contact_phone": "+302109999999",
"description": "Seller #1",
"business": {
"name": "Acme Corporation Societe Anonyme",
"title": "Acme S.A",
"tax_number": "999000999",
"address": "Sesame St. 23"
},
"bank_accounts": [
{
"token": "bnk_pvLDfMPn8gtcYjHuuMIbV5p5",
"date_created": "2019-02-14T17:50:09+0200",
"iban": "GR6501101100000011047025496",
"bank_name": "NATIONAL BANK OF GREECE S.A.",
"beneficiary_name": "John Doe",
"is_default": true
}
],
"payout_interval": "weekly",
"payout_frequency": [
"monday",
"friday"
],
"payout_threshold_amount": 0,
"payouts_on_hold": false,
"is_c2c": false
}
Property | Description |
---|---|
token string | Unique identifier (ID) for the seller object. Always starts with the prefix sel_. |
date_created string | The creation date of the seller object in ISO 8601 format. |
date_modified string | Last modification date and time of the seller object. |
status string | Indicates the seller’s status.Authorized Suspended Closed |
is_authorized bool | Indicates if the seller can receive transfers. Is true only if the status is Authorized . |
email string | The email address of the seller. |
contact_phone string | The contact phone of the seller. |
description string | A short description of the seller. |
business_name string | The name of the seller’s business. |
business_title string | The distinctive title of the seller’s business. |
business_tax_number string | The tax number of the seller’s business. |
bank_accounts list | A list of the seller’s bank accounts. |
business_address string | The address of the seller’s business. |
payout_interval string | Indicates the payout interval. daily weekly monthly |
payout_frequency list | Indicates the frequency of the payout_interval property. |
payout_threshold_amount integer | Indicates the seller’s minimum threshold payout amount. |
payouts_on_hold bool | This flag indicates whether seller’s payouts shall be created or not. |
is_c2c bool or null | This flag indicates whether seller is a Customer-to-Customer Marketplace business entity. It has null value if undefined. |
Create a seller
Definition
POST https://api.everypay.gr/sellers
Example Request
$ curl https://api.everypay.gr/sellers \
-u sk_PqSohnrYrRI1GUKOZvDkK5VVWAhnlU3R: \
-d email="seller1@example.com" \
-d contact_phone="+302109999999" \
-d description="Seller #1" \
-d business_name="Acme Corporation Societe Anonyme" \
-d business_title="Acme S.A" \
-d business_tax_number="999000999" \
-d business_address="Sesame St. 23" \
-d bank_account_iban="GR6501101100000011047025496" \
-d bank_account_beneficiary="John Doe" \
-d payout_interval="weekly" \
-d payout_frequency="monday,friday"
Example Response
200 OK
{
"token": "sel_lkPJrywRlDAp5oKrqOeRHEt0",
"date_created": "2019-02-14T19:47:03+0200",
"date_modified": "2019-02-14T17:50:09+0200",
"status": "Authorized",
"is_authorized": true,
"email": "seller1@example.com",
"contact_phone": "+302109999999",
"description": "Seller #1",
"business": {
"name": "Acme Corporation Societe Anonyme",
"title": "Acme S.A",
"tax_number": "999000999",
"address": "Sesame St. 23"
},
"bank_accounts": [
{
"token": "bnk_pvLDfMPn8gtcYjHuuMIbV5p5",
"date_created": "2019-02-14T17:50:09+0200",
"iban": "GR6501101100000011047025496",
"bank_name": "NATIONAL BANK OF GREECE S.A.",
"beneficiary_name": "John Doe",
"is_default": true
}
],
"payout_interval": "weekly",
"payout_frequency": [
"monday",
"friday"
],
"payout_threshold_amount": 0,
"payouts_on_hold": false,
"is_c2c": false
}
Through this endpoint you can create a seller object.
Body Arguments | |
---|---|
email required | The email address of the seller. |
contact_phone required | The contact phone of the seller. |
description required | A description of your seller object. |
business_name required | The name of the seller’s business. |
business_title required | The distinctive title of the seller’s business. |
business_tax_number required | The tax number of the seller’s business. |
business_address required | The address of the seller’s business. |
bank_account_iban required | The seller’s IBAN account number. |
bank_account_beneficiary required | The beneficiary name of the seller’s bank account. |
payout_interval optional daily |
Indicates the payout interval. daily weekly monthly |
payout_frequency optional | This property contains a comma separated list of values. For a weekly interval the allowed values are monday , tuesday , wednesday , thursday , friday .For a monthly interval you may pass the days of the month the payout should be done. E.g:1 The payout is done every 1st of every month.1,11,21 The payout is done every 1st, 11th and 21st of every month.15,31 The payout is done every 15th and every last day of every month.Payouts scheduled between the 29th and 31st of the month are processed on the last day of shorter months. |
payout_threshold_amount optional 0 |
A positive integer in the smallest currency unit e.g in cents, which will be considered as the minimum threshold amount for payout creation. If the seller’s balance exceeds this threshold then the payout will be created. |
payouts_on_hold optional false |
Use this flag in order to control the payout creation of a seller. If this flag is set to true then no payouts will be created. By default all payouts are processed automatically according to the seller’s payout schedule. Accepted values are 1 or 0 . |
is_c2c optional None |
Use this flag in order to define the Seller’s business relation with the Marketplace. If this flag is set to 1 then seller is created as a C2C (Customer-to-Customer) Marketplace business entity. If this flag is set to 0 Seller is treated as Marketplace company business entities. Accepted values are 1 or 0 . |
Retrieve a seller
Definition
GET https://api.everypay.gr/sellers/{sellerId}
Example Request
$ curl https://api.everypay.gr/sellers/sel_lkPJrywRlDAp5oKrqOeRHEt0 \
-u sk_PqSohnrYrRI1GUKOZvDkK5VVWAhnlU3R:
Example Response
200 OK
{
"token": "sel_lkPJrywRlDAp5oKrqOeRHEt0",
"date_created": "2019-02-14T19:47:03+0200",
"date_modified": "2019-02-14T17:50:09+0200",
"status": "Authorized",
"is_authorized": true,
"email": "seller1@example.com",
"contact_phone": "+302109999999",
"description": "Seller #1",
"business": {
"name": "Acme Corporation Societe Anonyme",
"title": "Acme S.A",
"tax_number": "999000999",
"address": "Sesame St. 23"
},
"bank_accounts": [
{
"token": "bnk_pvLDfMPn8gtcYjHuuMIbV5p5",
"date_created": "2019-02-14T17:50:09+0200",
"iban": "GR6501101100000011047025496",
"bank_name": "NATIONAL BANK OF GREECE S.A.",
"beneficiary_name": "John Doe",
"is_default": true
}
],
"payout_interval": "weekly",
"payout_frequency": [
"monday",
"friday"
],
"payout_threshold_amount": 0,
"payouts_on_hold": false,
"is_c2c": false
}
Retrieve an existing seller object.
Path Arguments | |
---|---|
sellerId required | The unique Seller ID. |
Update a seller
Definition
PUT https://api.everypay.gr/sellers/{sellerId}
Example Request
$ curl https://api.everypay.gr/sellers/sel_lkPJrywRlDAp5oKrqOeRHEt0 \
-u sk_PqSohnrYrRI1GUKOZvDkK5VVWAhnlU3R: \
-d email="seller1@newmail.com" \
-d business_address="Sesame St. 25" \
-d description="Seller new description #2" \
-d payout_frequency="monday,thursday" \
-X PUT
Example Response
200 OK
{
"token": "sel_lkPJrywRlDAp5oKrqOeRHEt0",
"date_created": "2019-02-14T19:47:03+0200",
"date_modified": "2019-02-14T17:50:09+0200",
"status": "Authorized",
"is_authorized": true,
"email": "seller1@newmail.com",
"contact_phone": "+302109999999",
"description": "Seller new description #2",
"business": {
"name": "Acme Corporation Societe Anonyme",
"title": "Acme S.A",
"tax_number": "999000999",
"address": "Sesame St. 25"
},
"bank_accounts": [
{
"token": "bnk_pvLDfMPn8gtcYjHuuMIbV5p5",
"date_created": "2019-02-14T17:50:09+0200",
"iban": "GR6501101100000011047025496",
"bank_name": "NATIONAL BANK OF GREECE S.A.",
"beneficiary_name": "John Doe",
"is_default": true
}
],
"payout_interval": "weekly",
"payout_frequency": [
"monday",
"thursday"
],
"payout_threshold_amount": 0,
"payouts_on_hold": false,
"is_c2c": false
}
Update an existing seller’s information. Any not provided parameter will be left unchanged.
Path Arguments | |
---|---|
sellerId required | The Seller ID. |
Body Arguments | |
---|---|
email optional | The email address of the seller. |
description optional | A description of your seller object. |
business_name optional | The name of the seller’s business. |
business_title optional | The distinctive title of the seller’s business. |
business_address optional | The address of the seller’s business. |
payout_interval optional | Indicates the payout interval. daily weekly monthly |
payout_frequency optional | This property contains a comma separated list of values. For a weekly interval the allowed values are monday , tuesday , wednesday , thursday , friday .For a monthly interval you may pass the days of the month the payout should be done. E.g:1 The payout is done every 1st of every month.1,11,21 The payout is done every 1st, 11th and 21st of every month.15,31 The payout is done every 15th and every last day of every month.Payouts scheduled between the 29th and 31st of the month are processed on the last day of shorter months. |
payout_threshold_amount optional 0 |
A positive integer in the smallest currency unit e.g in cents, which will be considered as the minimum threshold amount for payout creation. If the seller’s balance exceeds this threshold then the payout will be created. |
payouts_on_hold optional false |
Use this flag in order to control the payout creation of a seller. If this flag is set to true then no payouts will be created. By default all payouts are processed automatically according to the seller’s payout schedule. Accepted values are 1 or 0 . |
List all sellers
Definition
GET https://api.everypay.gr/sellers
Example Request
$ curl https://api.everypay.gr/sellers?count=10 \
-u sk_PqSohnrYrRI1GUKOZvDkK5VVWAhnlU3R:
Example Response
200 OK
{
"total_count": 23,
"items": [
{
"token": "sel_lkPJrywRlDAp5oKrqOeRHEt0",
"date_created": "2019-02-14T19:47:03+0200",
"date_modified": "2019-02-14T17:50:09+0200",
"status": "Authorized",
"is_authorized": true,
"email": "seller1@example.com",
"contact_phone": "+302109999999",
"description": "Seller #1",
"business": {
"name": "Acme Corporation Societe Anonyme",
"title": "Acme S.A",
"tax_number": "999000999",
"address": "Sesame St. 23"
},
"bank_accounts": [
{
"token": "bnk_pvLDfMPn8gtcYjHuuMIbV5p5",
"date_created": "2019-02-14T17:50:09+0200",
"iban": "GR6501101100000011047025496",
"bank_name": "NATIONAL BANK OF GREECE S.A.",
"beneficiary_name": "John Doe",
"is_default": true
}
],
"payout_interval": "weekly",
"payout_frequency": [
"monday",
"friday"
],
"payout_threshold_amount": 0,
"payouts_on_hold": false,
"is_c2c": false
},
{...},
{...}
]
}
Returns a list of sellers. You can use the below parameters to limit the results and paginate through the list.
Query Arguments | |
---|---|
count optional 10 20 |
The number of records to return back in response. Limit can range between 1 and 20. |
offset optional 0 |
The number of records to skip before adding results to the response. |
date_from optional | Provide a date from in YYYY-MM-DD format. |
date_to optional | Provide a date to in YYYY-MM-DD format. |
tax_number optional | Provide a tax_number filter. |
payouts_on_hold optional | Provide a value of 1 or 0 . |
Retrieve a seller’s balance
Definition
GET https://api.everypay.gr/sellers/{sellerId}/balance
Example Request
$ curl https://api.everypay.gr/sellers/sel_lkPJrywRlDAp5oKrqOeRHEt0/balance \
-u sk_PqSohnrYrRI1GUKOZvDkK5VVWAhnlU3R:
Example Response
200 OK
{
"available_amount": 10000
}
Retrieve a seller’s account balance.
Path Arguments | |
---|---|
sellerId required | The unique Seller ID. |
Transfers
Transfers are used by marketplaces and have two types.
The payment transfer splits the funds from a payment to one or multiple sellers. A marketplace commission fee can be applied in this case.
The direct transfer is used in order to move funds between the marketplace and a seller.
The transfer object
The transfer object
{
"token": "tra_lkPJrywRlDAp5oKrqOeRHEt0",
"date_created": "2019-02-14T19:47:03+0200",
"amount": 10000,
"currency": "EUR",
"description": "Order #122",
"type": "payment",
"seller": "sel_KJ53Qx3ZGaNLttUNxyB5JQO3",
"payment": "pmt_U0FBPmz5t2zjDjKaOGABlo6A",
"commission_amount:" 200,
"on_hold": false,
"payout": null,
"additional_amount": 0,
"reversed_amount": 0,
"reversed_commission_amount": 0,
"is_reversed": false,
"reversals": []
}
Property | Description |
---|---|
token string | Unique identifier (ID) for the transfer object. |
date_created string | The creation date of transfer in ISO 8601 format. |
amount integer | The transfer amount in the smallest currency unit e.g in cents. |
currency string | Currency represented as three-letter ISO 4217 code. |
description string | A description of the transfer. |
type string | Indicates the type of transfer.payment Indicates this is a split payment. The funds will be transferred from the payment to the seller’s account. debit Indicates that funds will be transferred from the seller’s account to the marketplace. credit Indicates that funds will be transferred from the marketplace to the seller’s account. |
seller string | The Seller ID the funds will be transferred from or to, depending on the type of the transfer. |
payment string | The Payment ID the funds are transferred from. This property is set only when the type property has the value payment . |
commission_amount integer | The commission amount held by the merchant’s marketplace. |
on_hold boolean | Whether the transfer payout is put on hold. |
payout string | The Payout ID in which the transfer has been included. |
additional_amount integer | The amount that was included in the transfer amount and taken directly from your balance. |
reversed_amount integer | The amount that has been reversed. |
reversed_commission_amount integer | The commission amount the has been reversed. |
is_reversed boolean | Indicates whether transfer has been fully reversed. If the transfer is only partially reversed, this attribute will still be false. |
reversals list | A list of reversals that have been applied to the transfer. |
Create a payment transfer
Definition
POST https://api.everypay.gr/payments/{paymentId}/transfers
Example Request
$ curl https://api.everypay.gr/payments/pmt_lkPJrywRlDAp5oKrqOeRHEt0/transfers \
-u sk_PqSohnrYrRI1GUKOZvDkK5VVWAhnlU3R: \
-d seller=sel_U0FBPmz5t2zjDjKaOGABlo6A \
-d amount=10000 \
-d commission_amount=200 \
-d description="Order #122"
Example Response
200 OK
{
"token": "tra_lkPJrywRlDAp5oKrqOeRHEt0",
"date_created": "2019-02-14T19:47:03+0200",
"amount": 10000,
"currency": "EUR",
"description": "Order #122",
"type": "payment",
"seller": "sel_KJ53Qx3ZGaNLttUNxyB5JQO3",
"payment": "pmt_U0FBPmz5t2zjDjKaOGABlo6A",
"commission_amount:" 200,
"on_hold": false,
"payout": null,
"additional_amount": 0,
"reversed_amount": 0,
"reversed_commission_amount": 0,
"is_reversed": false,
"reversals": []
}
You can split a payment after it has been successfully captured by providing the specific Payment ID.
If enabled in your marketplace account, you may transfer an amount that is greater than the remaining payment amount. To enable this feature, please contact our support team. The transfer method requires your account to have sufficient balance to process the transfer, and will fail in case of insufficient funds.
When splitting a payment the following limitations must be taken into consideration. In case any of those apply an error will be thrown.
- A payment must be captured in order to successfully split it. Payments that are in
Pre Authorized
state cannot be split. - A payment with installments cannot be split.
- A payment cannot be split after a full refund is initiated.
- Only payments that were created with flag
split=1
can be split. - The
commission_amount
should be less than the transferamount
.
Path Arguments | |
---|---|
paymentId required | The unique Payment ID. |
Body Arguments | |
---|---|
seller required | The Seller ID that will be receiving the payment. |
amount required | The amount in cents the seller will receive. |
commission_amount required | The commission amount your marketplace will charge the seller. |
description required | The description of the transfer. |
on_hold optional 0 |
Whether the funds will be processed for payout or not.1 Funds will not be payout. In order to payout this transfer a second call is required.0 Funds will be payout according to schedule. |
Create a direct transfer
POST https://api.everypay.gr/sellers/{sellerId}/transfers
Example Request
$ curl https://api.everypay.gr/sellers/sel_U0FBPmz5t2zjDjKaOGABlo6A/transfers \
-u sk_PqSohnrYrRI1GUKOZvDkK5VVWAhnlU3R: \
-d type="debit" \
-d amount=5000 \
-d description="Monthly subscription fee - Inv. #345"
Example Response
200 OK
{
"token": "tra_lkPJrywRlDAp5oKrqOeRHEt0",
"date_created": "2019-02-14T19:47:03+0200",
"amount": 5000,
"currency": "EUR",
"description": "Monthly subscription fee - Inv. #345",
"type": "debit",
"seller": "sel_KJ53Qx3ZGaNLttUNxyB5JQO3",
"payment": null,
"commission_amount:" 0,
"on_hold": false,
"payout": null,
"reversed_amount": 0,
"reversed_commission_amount": 0,
"is_reversed": false,
"reversals": []
}
In order to enable specific business use-cases, you can direct transfer an amount, without linking any payments to it, from your account to a linked seller account or from a seller to your account provided a sufficient balance.
Please note that direct transfers are made with funds from the marketplace available balance amount and not from current balance amount.
Path Arguments | |
---|---|
sellerId required | The unique Seller ID. |
Body Arguments | |
---|---|
type required | Specifies the type of the direct transfer. debit Indicates that funds will be transferred from the seller’s account to the marketplace. credit Indicates that funds will be transferred from the marketplace to the seller’s account. |
amount required | A positive integer in the smallest currency unit e.g in cents (e.g 10,99 EUR shall be converted to 1099). |
description required | A short description for the direct transfer reason. |
Retrieve a transfer
Definition
GET https://api.everypay.gr/transfers/{transferId}
Example Request
$ curl https://api.everypay.gr/transfers/tra_lkPJrywRlDAp5oKrqOeRHEt0 \
-u sk_PqSohnrYrRI1GUKOZvDkK5VVWAhnlU3R:
Example Response
200 OK
{
"token": "tra_lkPJrywRlDAp5oKrqOeRHEt0",
"date_created": "2019-02-14T19:47:03+0200",
"amount": 10000,
"currency": "EUR",
"description": "Order #122",
"type": "payment",
"seller": "sel_KJ53Qx3ZGaNLttUNxyB5JQO3",
"payment": "pmt_U0FBPmz5t2zjDjKaOGABlo6A",
"commission_amount:" 200,
"on_hold": false,
"payout": null,
"additional_amount": 0,
"reversed_amount": 0,
"reversed_commission_amount": 0,
"is_reversed": false,
"reversals": []
}
Retrieves the details of a transfer. Provide the unique Transfer ID that was returned from the creation call.
Path Arguments | |
---|---|
transferId required | The unique Transfer ID. |
Update a transfer
Definition
PUT https://api.everypay.gr/transfers/{transferId}
Example Request
$ curl https://api.everypay.gr/transfers/tra_lkPJrywRlDAp5oKrqOeRHEt0 \
-u sk_PqSohnrYrRI1GUKOZvDkK5VVWAhnlU3R: \
-d on_hold=0
Example Response
200 OK
{
"token": "tra_lkPJrywRlDAp5oKrqOeRHEt0",
"date_created": "2019-02-14T19:47:03+0200",
"amount": 10000,
"currency": "EUR",
"description": "Order #122",
"type": "payment",
"seller": "sel_KJ53Qx3ZGaNLttUNxyB5JQO3",
"payment": "pmt_U0FBPmz5t2zjDjKaOGABlo6A",
"commission_amount:" 200,
"on_hold": false,
"payout": null,
"additional_amount": 0,
"reversed_amount": 0,
"reversed_commission_amount": 0,
"is_reversed": false,
"reversals": []
}
Updates the details of a transfer. Provide the unique Transfer ID that was returned from the creation call.
With regards to on_hold
parameter the following limitations must be taken into consideration.
- In case you try to put on hold a transfer that has been already payout, an error will be thrown.
- You cannot put a direct transfer on hold. In that case an error will be thrown.
Path Arguments | |
---|---|
transferId required | The unique Transfer ID. |
Body Arguments | |
---|---|
description optional | A description of the transfer reason. |
on_hold optional | Whether the funds will be processed for payout or not.1 Funds will not be payout. In order to payout this transfer a second call is required.0 Funds will be payout according to schedule. |
List all transfers
Definition
GET https://api.everypay.gr/transfers
Example Request
$ curl https://api.everypay.gr/transfers?seller=sel_5i8KHSpex63i1cjLVfOMMhIa \
-u sk_PqSohnrYrRI1GUKOZvDkK5VVWAhnlU3R:
Example Response
200 OK
{
"total_count": 52,
"items": [
{
"token": "tra_lkPJrywRlDAp5oKrqOeRHEt0",
"date_created": "2019-02-14T19:47:03+0200",
"amount": 10000,
"currency": "EUR",
"description": "Order #122",
"type": "payment",
"seller": "sel_KJ53Qx3ZGaNLttUNxyB5JQO3",
"payment": "pmt_U0FBPmz5t2zjDjKaOGABlo6A",
"commission_amount:" 200,
"on_hold": false,
"payout": null,
"reversed_amount": 0,
"reversed_commission_amount": 0,
"is_reversed": false,
"reversals": []
},
{
"token": "tra_b7QO01Ie4csrDAkRjXijK7aM",
"date_created": "2019-02-14T19:47:03+0200",
"amount": 10000,
"currency": "EUR",
"description": "Order #123",
"type": "payment",
"seller": "sel_KJ53Qx3ZGaNLttUNxyB5JQO3",
"payment": "pmt_U0FBPmz5t2zjDjKaOGABlo6A",
"commission_amount:" 200,
"on_hold": false,
"payout": null,
"reversed_amount": 10000,
"reversed_commission_amount": 200,
"is_reversed": true,
"reversals": [
{
"token": "rev_RobdUp58eeNzUQtOhaFHwxhi",
"date_created": "2019-02-14T19:47:03+0200",
"description": "Refund for Order #123",
"amount": 10000,
"commission_amount": 200,
"currency": "EUR",
"payout": null,
"transfer": "tra_b7QO01Ie4csrDAkRjXijK7aM"
}
]
},
{...},
{...},
{...}
]
}
Returns a list of transfers. You can use the below parameters to limit the results and paginate through the list.
Query Arguments | |
---|---|
count optional 10 20 |
The number of records to return back in response. Limit can range between 1 and 20. |
offset optional 0 |
The number of records to skip before adding results to the response. |
date_from optional | Provide a date from in YYYY-MM-DD format. |
date_to optional | Provide a date to in YYYY-MM-DD format. |
payment optional | A Payment ID to list only transfers for provided payment. |
seller optional | A Seller ID to list only transfers for the provided seller. |
payout optional | A Payout ID to list only transfers for the provided payout. |
paid_out optional | Provide 1 to list transfers that have been paid out to sellers or 0 for those that are not. |
Reversals
When funds transferred to a seller account needs to be reversed for reasons such as refund, adjustment, etc. you can initiate a reversal operation.
The reversal object
The reversal object
{
"token": "rev_RobdUp58eeNzUQtOhaFHwxhi",
"date_created": "2019-02-14T19:47:03+0200",
"description": "Refund for Order #122",
"amount": 5000,
"commission_amount": 100,
"currency": "EUR",
"payout": null,
"transfer": "tra_b7QO01Ie4csrDAkRjXijK7aM"
}
Property | Description |
---|---|
token string | Unique identifier (ID) for the reversal object. Always starts with prefix rev_. |
date_created string | The creation date of reversal in ISO 8601 format. |
amount integer | The reversal amount in the smallest currency unit e.g in cents. |
commission_amount integer | The amount of the commission that has been reversed. |
description string | The reason of the reversal. |
currency string | Currency represented as three-letter ISO 4217 code. |
payout string | The Payout ID in which the reversal has been included. |
transfer string | The Transfer ID that has been reversed. |
Create a reversal
Definition
POST https://api.everypay.gr/reversals
Example request with specified commission amount
$ curl https://api.everypay.gr/reversals \
-u sk_PqSohnrYrRI1GUKOZvDkK5VVWAhnlU3R: \
-d transfer=tra_lkPJrywRlDAp5oKrqOeRHEt0 \
-d amount=5000 \
-d description="Refund for order #122" \
-d commission_amount=100
Example request with amount and auto refund commission
$ curl https://api.everypay.gr/reversals \
-u sk_PqSohnrYrRI1GUKOZvDkK5VVWAhnlU3R: \
-d transfer=tra_lkPJrywRlDAp5oKrqOeRHEt0 \
-d amount=5000 \
-d description="Refund for order #122" \
-d refund_commission=1
Example Response
200 OK
{
"token": "rev_RobdUp58eeNzUQtOhaFHwxhi",
"date_created": "2019-02-14T19:47:03+0200",
"description": "Refund for Order #122",
"amount": 5000,
"commission_amount": 100,
"currency": "EUR",
"payout": null,
"transfer": "tra_b7QO01Ie4csrDAkRjXijK7aM"
}
When you create a new reversal, you must specify a transfer to create it on.
You can reverse fund transfers even after they have been payout, as long as there is a floating balance available in the seller account. You can initiate a partial reversal or reversal upto the amount originally transferred.
This method requires only the Transfer ID as parameter, and if you omit the amount
parameter, a full reversal will be initiated including the commission amount. Once entirely reversed, a transfer can’t be reversed again. This method will return an error when called on an already-reversed transfer.
If you provide the commission_amount
parameter then the refund_commission
parameter will be ignored and the specified amount will be refunded to the seller. If the amount exceeds the remaining commission amount of the transfer an error will be thrown.
When creating a reversal for a direct transfer, the values of the properties commission_amount
and refund_commission
will be ignored.
Body Arguments | |
---|---|
transfer required | The unique Transfer ID. |
amount optional | A positive integer in the smallest currency unit e.g in cents which represents the amount to be reversed. If no amount is specified then the entire amount of the transfer will be reversed. |
description optional | A description of the reversal. |
commission_amount optional | An integer representing the commission amount that will be refunded to the seller. Can be positive or zero. |
refund_commission optional 1 |
Whether the commission amount should be refunded or not.1 If a full transfer reversal is given, the full commission amount will be refunded. Otherwise the commission amount will be refunded with an amount proportional to the amount of the transfer reversed. 0 The commission will not be refunded to the seller. |
Retrieve a reversal
Definition
GET https://api.everypay.gr/reversals/{reversalId}
Example Request
$ curl https://api.everypay.gr/reversals/rev_RobdUp58eeNzUQtOhaFHwxhi \
-u sk_PqSohnrYrRI1GUKOZvDkK5VVWAhnlU3R:
Example Response
200 OK
{
"token": "rev_RobdUp58eeNzUQtOhaFHwxhi",
"date_created": "2019-02-14T19:47:03+0200",
"description": "Refund for Order #122",
"amount": 5000,
"commission_amount": 100,
"currency": "EUR",
"payout": null,
"transfer": "tra_b7QO01Ie4csrDAkRjXijK7aM"
}
Retrieves the details of a reversal. Provide the unique Transfer ID that was returned from the creation call.
Path Arguments | |
---|---|
reversalId required | The unique Reversal ID. |
List all reversals
Definition
GET https://api.everypay.gr/reversals
Example Request
$ curl https://api.everypay.gr/reversals \
-u sk_PqSohnrYrRI1GUKOZvDkK5VVWAhnlU3R:
Example Response
200 OK
{
"total_count": 21,
"items": [
{
"token": "rev_RobdUp58eeNzUQtOhaFHwxhi",
"date_created": "2019-02-14T19:47:03+0200",
"description": "Refund for Order #122",
"amount": 5000,
"commission_amount": 100,
"currency": "EUR",
"payout": null,
"transfer": "tra_b7QO01Ie4csrDAkRjXijK7aM"
},
{...},
{...},
{...}
]
}
Returns a list of reversals. You can use the below parameters to limit the results and paginate through the list.
Query Arguments | |
---|---|
count optional 10 20 |
The number of records to return back in response. Limit can range between 1 and 20. |
offset optional 0 |
The number of records to skip before adding results to the response. |
date_from optional | Provide a date from in YYYY-MM-DD format. |
date_to optional | Provide a date to in YYYY-MM-DD format. |
transfer optional | A Transfer ID to list only reversals for the provided transfer. |
payout optional | A Payout ID to list only reversals for the provided payout. |
paid_out optional | Provide 1 to list reversals that have been paid out to sellers or 0 for those that are not. |
Payouts
A Payout object is created after a seller starts receiving funds to his account. Payouts are created according to a seller’s schedule which can be defined upon seller creation. By default, your marketplace account is configured to send payouts daily to all eligible seller accounts.
When a payout is created its status will be Pending
until it is deposited to the seller’s bank account. After the payout has been sucessfully deposited its status will be marked as Deposited
.
The payout object
The payout object
{
"token": "pay_34FK1pZM8OewGcK1kfIRpN9F",
"date_created": "2019-02-14T19:47:03+0200",
"amount": 9200,
"currency": "EUR",
"status": "Pending",
"is_deposited": false,
"date_deposited": null,
"seller": "sel_lkPJrywRlDAp5oKrqOeRHEt0",
"bank_account": {
"token": "bnk_pvLDfMPn8gtcYjHuuMIbV5p5",
"date_created": "2019-02-14T17:50:09+0200",
"iban": "GR6501101100000011047025496",
"bank_name": "NATIONAL BANK OF GREECE S.A.",
"beneficiary_name": "John Doe",
"is_default": true
},
"statement_description": null,
"transfer_amount": 10000,
"reversal_amount": 0,
"commission_amount": 800,
"reversed_commission_amount": 0,
"transfer_count": 2,
"reversal_count": 0
}
Property | Description |
---|---|
token string | Unique identifier (ID) for the payout object. Always starts with the prefix pay_. |
date_created string | The creation date of the payout in ISO 8601 format. |
amount integer | The amount of the payout in the smallest currency unit e.g in cents that will be deposited on seller’s bank account. |
currency string | Currency represented as three-letter ISO 4217 code. |
status string | Indicates the payout’s status.Pending Payout has not been submitted yet to the seller’s bank account.Deposited Payout has been successfully deposited to seller’s bank account |
is_deposited boolean | Indicates whether the payout amount has been deposited to seller’s bank account. |
date_deposited string | The deposit date of the payout in ISO 8601 format. |
seller string | The Seller ID associated with the payout. |
bank_account object | An object containing the details of the seller’s bank account. |
statement_description string | This description will be displayed on the seller’s bank statement. |
transfer_amount integer | A positive integer indicating the total transfer amount of the payout. |
reversal_amount integer | A positive integer indicating the total amount of reversals. |
commission_amount integer | A positive integer indicating the total commission amount of the marketplace that will be deducted from the total transfer amount. |
reversed_commission_amount integer | A positive integer indicating the total commission amount that was refunded to the seller. |
transfer_count integer | The total number of transfers included in the payout. |
reversal_count integer | The total number of reversals included in the payout. |
Retrieve a payout
Definition
GET https://api.everypay.gr/payouts/{payoutId}
Example Request
$ curl https://api.everypay.gr/payouts/pay_34FK1pZM8OewGcK1kfIRpN9F \
-u sk_PqSohnrYrRI1GUKOZvDkK5VVWAhnlU3R:
Example Response
200 OK
{
"token": "pay_34FK1pZM8OewGcK1kfIRpN9F",
"date_created": "2019-02-14T19:47:03+0200",
"amount": 9200,
"currency": "EUR",
"status": "Pending",
"is_deposited": false,
"date_deposited": null,
"seller": "sel_lkPJrywRlDAp5oKrqOeRHEt0",
"bank_account": {
"token": "bnk_pvLDfMPn8gtcYjHuuMIbV5p5",
"date_created": "2019-02-14T17:50:09+0200",
"iban": "GR6501101100000011047025496",
"bank_name": "NATIONAL BANK OF GREECE S.A.",
"beneficiary_name": "John Doe",
"is_default": true
},
"statement_description": null,
"transfer_amount": 10000,
"reversal_amount": 0,
"commission_amount": 800,
"reversed_commission_amount": 0,
"transfer_count": 2,
"reversal_count": 0
}
Retrieves the details of a payout.
Path Arguments | |
---|---|
payoutId required | The unique Payout ID. |
List all payouts
Definition
GET https://api.everypay.gr/payouts
Example Request
$ curl https://api.everypay.gr/payouts?seller=sel_lkPJrywRlDAp5oKrqOeRHEt0 \
-u sk_PqSohnrYrRI1GUKOZvDkK5VVWAhnlU3R:
Example Response
200 OK
{
"total_count": 23,
"items": [
{
"token": "pay_34FK1pZM8OewGcK1kfIRpN9F",
"date_created": "2019-02-14T19:47:03+0200",
"amount": 9200,
"currency": "EUR",
"status": "Pending",
"is_deposited": false,
"date_deposited": null,
"seller": "sel_lkPJrywRlDAp5oKrqOeRHEt0",
"bank_account": {
"token": "bnk_pvLDfMPn8gtcYjHuuMIbV5p5",
"date_created": "2019-02-14T17:50:09+0200",
"iban": "GR6501101100000011047025496",
"bank_name": "NATIONAL BANK OF GREECE S.A.",
"beneficiary_name": "John Doe",
"is_default": true
},
"statement_description": null,
"transfer_amount": 10000,
"reversal_amount": 0,
"commission_amount": 800,
"reversed_commission_amount": 0,
"transfer_count": 2,
"reversal_count": 0
},
{
"token": "pay_31Pa27qIdAMp00May0GDi28M",
"date_created": "2019-02-14T19:47:03+0200",
"amount": 18900,
"currency": "EUR",
"status": "Deposited",
"is_deposited": true,
"date_deposited": "2019-02-15T19:47:03+0200",
"seller": "sel_lkPJrywRlDAp5oKrqOeRHEt0",
"bank_account": {
"token": "bnk_pvLDfMPn8gtcYjHuuMIbV5p5",
"date_created": "2019-02-14T17:50:09+0200",
"iban": "GR6501101100000011047025496",
"bank_name": "NATIONAL BANK OF GREECE S.A.",
"beneficiary_name": "John Doe",
"is_default": true
},
"statement_description": "MARKETPLACE IDENTIFIER",
"transfer_amount": 26000,
"reversal_amount": 6500,
"commission_amount": 800,
"reversed_commission_amount": 200,
"transfer_count": 4,
"reversal_count": 1
},
{...},
{...}
]
}
Returns a list of payouts. You can use the below parameters to limit the results and paginate through the list.
Query Arguments | |
---|---|
count optional 10 20 |
The number of records to return back in response. Limit can range between 1 and 20. |
offset optional 0 |
The number of records to skip before adding results to the response. |
date_from optional | Provide a date from in YYYY-MM-DD format. |
date_to optional | Provide a date to in YYYY-MM-DD format. |
seller optional | A Seller ID to list only payouts for the provided seller. |
is_deposited optional | Filter payouts by deposit status.1 Returns only payouts that have been deposited.0 Returns payouts that are pending for deposit. |
Card arguments
Arguments | |
---|---|
card_number required | Card number without any separators. |
expiration_year required | Card expiration year (4 digits). |
expiration_month required | Card expiration month (2 digits). |
holder_name required | Cardholder’s name. |
cvv required | The 3 or 4 digits security code of the card. |
POS API Introduction
POS API Production Endpoint
https://api.everypay.gr/pos/v1
POS API Sandbox Endpoint
https://sandbox-api.everypay.gr/pos/v1/
This documentation will guide you through EveryPay POS REST API in order to show you how to authenticate, make requests, and retrieve data.
Authentication
Example authentication request
$ curl https://api.everypay.gr/pos/v1 \
-u p_20ecddc925ff540ab4c73ae79d03d722:
All requests to EveryPay POS API have to be authenticated and have to be made over HTTPS. Our API uses HTTP Basic Auth for authentication.
To authenticate you need to provide your POS API secret key, as username and leave the password blank. Some REST clients expect a username:password pair separated by a colon. Since there is no explicit password with the API key, it will need to be followed simply by a colon in those cases.
You can find your POS API keys in your account settings once you login to your account. Please keep your private keys secure and don’t pass them to anyone. These private keys have extreme secure information for handling the transactions of your account.
Payment Initiation
Request
Example POST request
$ curl https://api.everypay.gr/pos/v1/transactions \
-u p_20ecddc925ff540ab4c73ae79d03d722:
--header 'Content-Type: application/json' \
--data '{
"transaction_id": "b903ed98-041e-40c4-8863-ff884008fb06",
"amount": 1240,
"tip": 0,
"currency": "EUR",
"type": "payment",
"terminal": "trm_g34vbnbK9tBhECaANa1FZG21",
"metadata": {
"order": "ord-001",
"customer": "cus-002"
}
}'
Request body
{
"transaction_id": "29847051-be86-4bd3-a8d1-095d319ededf",
"amount": 1240,
"tip": 0,
"currency": "EUR",
"type": "payment",
"terminal": "trm_g34vbnbK9tBhECaANa1FZG21",
"metadata": {
"order": "ord-001",
"customer": "cus-002"
}
}
Initiates a payment in the POS terminal.
Warning: The timeout for this connection should be >=180 seconds so the customer will have the time to complete the transaction.
If a payment initiation is send with an already used uuid it will simply return the result of the old payment initiation, it will not initiate a new payment transaction on the terminal.
Body Fields | Type | Description |
---|---|---|
transaction_id required string | A uuid v4 string for the transaction ex. “4dee2064-315d-4cd9-b59e-5317bcd37b69” | |
amount required integer | The payment amount in cents (tip is not included) | |
tip optional integer | Payment’s tip in cents, defaults to 0 | |
currency required enum | Supports only “EUR” for now | |
type required string | Should be “payment” | |
terminal required string | The terminal token, starts with “trm_” ex. “trm_g34vbnbK9tBhECaANa1FZG21”, | |
metadata optional object | Metadata fields, required if terminal supports VCR (YPAHES) validation |
Responses
Success (200)
{
"status": "CAPTURED",
"transaction_id": "e389d081-555c-4b52-9018-1a4d2b84cdfa",
"amount": 1240,
"currency": "EUR",
"type": "payment",
"card_number": "4761********0270",
"tid": "EP900001",
"mid": "229537000000750",
"authorization_code": "031306",
"transaction_time": "2024-08-23 16:24:42PM",
"metadata": {
"order": "ord-001",
"customer": "cus-002"
}
}
Cancelled (200)
The transaction was cancelled or timed-out.
{
"status": "CANCELLED"
}
Response Fields | Type | Description |
---|---|---|
status string | Payment’s status, Possible values [“CAPTURED”, “CANCELLED”, “FAILED”, “PENDING”, “INITIATING”, “DEVICE_NOT_CONNECTED”] | |
transaction_id string | transactions uuid as send from the request. example: “123e4567-e89b-12d3-a456-426614174000” | |
amount integer | In cents excluding tip, example: 1000 | |
tip integer | In cents, example: 5 | |
currency string | example: “EUR” | |
type string | example: “payment” | |
card_number string | Masked card PAN example: “4761********0270” | |
tid string length 8 | Terminal’s ID example: “EP999001” | |
mid string | example: “229537000000750” | |
terminal string | Terminal’s token, starts with “trm_”, example: “trm_5555666677778888” | |
authorization_code string | example: “024207” | |
transaction_time string | example: “2024-04-18 10:46:27AM” | |
metadata fields object | As described here |
Possible Error Codes:
- 10001
- 10002
- 10003
- 10004
- 10005
- 10006
- 10007
- 10008
Detailed error list reference
Preload Transaction
Request
Example POST request
$ curl https://api.everypay.gr/pos/v1/transactions \
-u p_20ecddc925ff540ab4c73ae79d03d722:
--header 'Content-Type: application/json' \
--data '{
"transaction_id": "b903ed98-041e-40c4-8863-ff884008fb06",
"description": "short description, max length 200",
"amount": 1240,
"tip": 0,
"currency": "EUR",
"type": "preload",
"terminal": "trm_g34vbnbK9tBhECaANa1FZG21",
"metadata": {
"order": "ord-001",
"customer": "cus-002"
}
}'
Request body
{
"transaction_id": "29847051-be86-4bd3-a8d1-095d319ededf",
"description": "short description, max length 200",
"amount": 1240,
"tip": 0,
"currency": "EUR",
"type": "preload",
"terminal": "trm_g34vbnbK9tBhECaANa1FZG21",
"metadata": {
"order": "ord-001",
"customer": "cus-002"
}
}
Pre-loads a transaction to the POS device. The user can select at a later time to initiate the transaction from the terminal using the “Preloaded” button and select it from the list. After the completion, a request must be made to retrive the transaction’s status and details, more information here.
The request is almost identical as the payment initiation. The only differences are:
- Type should be preload instead of payment
- There is no need for high timeout value in this request.
Body Fields | Type | Description |
---|---|---|
transaction_id required string | A uuid v4 string for the transaction ex. “4dee2064-315d-4cd9-b59e-5317bcd37b69” | |
description optional string min length 1 max length 200 | A short description for the transaction. It will appear in the preloaded transactions list view to help the user distinguish this transaction from the rest. | |
amount required integer | The payment amount in cents (tip is not included) | |
tip optional integer | Payment’s tip in cents, defaults to 0 | |
currency required enum | Supports only “EUR” for now | |
type required string | Should be “preload” | |
terminal required string | The terminal token, starts with “trm_” ex. “trm_g34vbnbK9tBhECaANa1FZG21”, | |
metadata optional object | Metadata fields, required if terminal supports VCR (YPAHES) validation |
Response
Success (200)
{
"status": "PRELOADED"
}
Response Fields | Type | Description |
---|---|---|
status | string | example: “PRELOADED” |
Possible Error Codes:
- 10001
- 10002
- 10003
- 10005
- 10007
Detailed error list reference
Refund Initiation
Request
Example POST request
$ curl https://api.everypay.gr/pos/v1/transactions \
-u p_20ecddc925ff540ab4c73ae79d03d722:
--header 'Content-Type: application/json' \
--data '{
"transaction_id": "b903ed98-041e-40c4-8863-ff884008fb06",
"amount": 1240,
"currency": "EUR",
"type": "refund",
"terminal": "trm_g34vbnbK9tBhECaANa1FZG21",
"metadata": {
"order": "ord-001",
"customer": "cus-002"
},
"original_transaction_id": "5cde1bd8-9c29-49a4-9774-71e3ddabb4d9"
}'
Request body
{
"transaction_id": "29847051-be86-4bd3-a8d1-095d319ededf",
"amount": 1240,
"currency": "EUR",
"type": "refund",
"terminal": "trm_g34vbnbK9tBhECaANa1FZG21",
"metadata": {
"order": "ord-001",
"customer": "cus-002"
},
"original_transaction_id": "5cde1bd8-9c29-49a4-9774-71e3ddabb4d9"
}
This request initiates a refund transaction for a payment. It can be partial or full refund.
Warning: The timeout for this connection should be >=180 seconds so the customer will have the time to complete the transaction.
Body Fields | Type | Description |
---|---|---|
transaction_id required string | A uuid v4 string for the transaction ex. “4dee2064-315d-4cd9-b59e-5317bcd37b69” | |
amount required integer | The refund amount in cents | |
currency required enum | Supports only “EUR” for now | |
type required string | Should be “refund” | |
terminal required string | The terminal token, starts with “trm_” ex. “trm_g34vbnbK9tBhECaANa1FZG21”, | |
metadata optional object | Metadata fields, required if terminal supports VCR (YPAHES) validation | |
original_transaction_id required string | The transaction id (uuid) from the payment initiation request. |
Response
Success (200)
{
"status": "CAPTURED"
}
Response Fields | Description |
---|---|
status string | example: “CAPTURED” |
Possible Error Codes:
- 10001
- 10002
- 10003
- 10004
- 10005
- 10006
- 10007
- 10008
- 10009
Detailed error list reference
Void Initiation
Request
Example POST request
$ curl https://api.everypay.gr/pos/v1/transactions \
-u p_20ecddc925ff540ab4c73ae79d03d722:
--header 'Content-Type: application/json' \
--data '{
"transaction_id": "b903ed98-041e-40c4-8863-ff884008fb06",
"amount": 1240,
"currency": "EUR",
"type": "void",
"terminal": "trm_g34vbnbK9tBhECaANa1FZG21",
"metadata": {
"order": "ord-001",
"customer": "cus-002"
},
"original_transaction_id": "5cde1bd8-9c29-49a4-9774-71e3ddabb4d9"
}'
Request body
{
"transaction_id": "29847051-be86-4bd3-a8d1-095d319ededf",
"amount": 1240,
"currency": "EUR",
"type": "void",
"terminal": "trm_g34vbnbK9tBhECaANa1FZG21",
"metadata": {
"order": "ord-001",
"customer": "cus-002"
},
"original_transaction_id": "5cde1bd8-9c29-49a4-9774-71e3ddabb4d9"
}
This request initiates a void/cancel transaction for a payment.
Warning: The timeout for this connection should be >=180 seconds so the customer will have the time to complete the transaction.
Fields | Description |
---|---|
transaction_id required string | A uuid v4 string for the transaction ex. “4dee2064-315d-4cd9-b59e-5317bcd37b69” |
amount required integer | The payment amount in cents |
currency required enum | Supports only “EUR” for now |
type required string | Should be “void” |
terminal required string | The terminal token, starts with “trm_” ex. “trm_g34vbnbK9tBhECaANa1FZG21”, |
metadata optional object | Metadata fields, required if terminal supports VCR (YPAHES) validation |
original_transaction_id required string | The transaction id (uuid) from the payment initiation request. |
Response
Success (200)
{
"status": "CAPTURED"
}
Fields | Description |
---|---|
status string | example: “CAPTURED” |
Possible Error Codes:
- 10001
- 10002
- 10003
- 10004
- 10005
- 10006
- 10007
- 10008
- 10009
- 10010
- 10011
- 10012
- 10013
Detailed error list reference
Get Transaction
Request
Definition
GET https://api.everypay.gr/pos/v1/transactions/{transactionId}
Example GET request
$ curl https://api.everypay.gr/pos/v1/transactions/e389d081-555c-4b52-9018-1a4d2b84cdfa \
-u p_20ecddc925ff540ab4c73ae79d03d722:
Retrieves the details of a transaction. Provide the unique transaction ID that used during transaction initiation
Path Arguments | |
---|---|
transactionId required | The unique Transaction ID. |
Responses
Success (200)
{
"status": "CAPTURED",
"transaction_id": "e389d081-555c-4b52-9018-1a4d2b84cdfa",
"amount": 1240,
"currency": "EUR",
"type": "payment",
"card_number": "4761********0270",
"tid": "EP900001",
"mid": "229537000000750",
"authorization_code": "031306",
"transaction_time": "2024-08-23 16:24:42PM",
"metadata": {
"order": "ord-001",
"customer": "cus-002"
}
}
Cancelled (200)
The transaction was cancelled or timed-out.
{
"status": "CANCELLED"
}
Response Fields | Type | Description |
---|---|---|
status string | Payment’s status, Possible values [“CAPTURED”, “CANCELLED”, “FAILED”, “PENDING”, “INITIATING”, “DEVICE_NOT_CONNECTED”] | |
transaction_id string | transactions uuid as send from the request. example: “123e4567-e89b-12d3-a456-426614174000” | |
amount integer | In cents excluding tip, example: 1000 | |
tip integer | In cents, example: 5 | |
currency string | example: “EUR” | |
type string | example: “payment” | |
card_number string | Masked card PAN example: “4761********0270” | |
tid string length 8 | Terminal’s ID example: “EP999001” | |
mid string | example: “229537000000750” | |
terminal string | Terminal’s token, starts with “trm_”, example: “trm_5555666677778888” | |
authorization_code string | example: “024207” | |
transaction_time string | example: “2024-04-18 10:46:27AM” | |
metadata fields object | As described here |
Possible Error Codes:
- 10001
- 10002
- 10003
- 10004
- 10005
- 10006
- 10007
- 10008
Detailed error list reference
List Terminals
Request
Example GET request
$ curl https://api.everypay.gr/pos/v1/terminals?page=2&limit=10 \
-u p_20ecddc925ff540ab4c73ae79d03d722:
Lists all the terminals for the merchant
Parameters | Description |
---|---|
page optional default 1 | What page of the results to get, index starts at 1 |
limit optional default 10 | The number of items to return |
Response
Example response
{
"total_count": 34,
"page": 1,
"items": [
{
"status": "enabled",
"tid": "EP999001",
"mid": "000000000000001",
"token": "trm_000000000000000000000001",
"date_onboarded": "2024-01-01 00:00:00",
"company": "com_000000000000000000000001"
},
{
"status": "enabled",
"tid": "EP999002",
"mid": "000000000000001",
"token": "trm_000000000000000000000001",
"date_onboarded": "2024-01-02 00:00:00",
"company": "com_000000000000000000000001"
},
{
"status": "disabled",
"tid": "EP999003",
"mid": "000000000000001",
"token": "trm_000000000000000000000001",
"date_onboarded": "2024-01-03 00:00:00",
"company": "com_000000000000000000000001",
"cash_registry_id": "003",
"cash_registry_type": "VCR",
"cash_registry_validation": true
}
]
}
Field | Description |
---|---|
total_count | Total number of results |
page | Current page number |
items | List of terminals |
Possible Error Codes:
- 10002
Detailed error list reference
Metadata
Example POST request with AADE metadata
$ curl https://api.everypay.gr/pos/v1/transactions \
-u p_20ecddc925ff540ab4c73ae79d03d722:
--header 'Content-Type: application/json' \
--data '{
"transaction_id": "b903ed98-041e-40c4-8863-ff884008fb06",
"amount": 1240,
"tip": 0,
"currency": "EUR",
"type": "payment",
"terminal": "trm_g34vbnbK9tBhECaANa1FZG21",
"metadata": {
"uid": "0444AAF4F3A3E0AE011F2189D9FD2CD283399847",
"net_value": "10.00",
"vat_value": "2.40",
"total_value": "12.40",
"payment_amount": "12.40",
"tid": "EP999001",
"time_stamp": "2024-07-04T14:37:00.000Z",
"signature": "MEQCIAPCIaJACAxd6bBksOAl6mQclQZgroN6EhwXlbMSiYZgAiA2sKQZh6sjBNZuNm8ioyuFLjvaMZEQfYrm4QJW9DIXDg=="
}
}'
Example POST request with custom metadata
$ curl https://api.everypay.gr/pos/v1/transactions \
-u p_20ecddc925ff540ab4c73ae79d03d722:
--header 'Content-Type: application/json' \
--data '{
"transaction_id": "b903ed98-041e-40c4-8863-ff884008fb06",
"amount": 1240,
"tip": 0,
"currency": "EUR",
"type": "payment",
"terminal": "trm_g34vbnbK9tBhECaANa1FZG21",
"metadata": {
"order": "ord-001",
"customer": "cus-002"
}
}'
Metadata is used for VCR (AADE) payload verification using a signature and/or to pass other custom fields. Bellow are the fields necessary for VCR’s (AADE) payload validation.
Fields | Description |
---|---|
uid string | VCR’s unique transaction id ex. “0444AAF4F3A3E0AE011F2189D9FD2CD283399847” |
net_value string | Payment amount without VAT in euro ex. “10.00”, |
vat_value string | VAT amount ex. “2.40”, |
total_value string | Total amount ex. “12.40”, |
payment_amount string | Paid amount ex. “12.40”, |
tid string length 8 | POS Terminal ID, starts with “EP” ex. “EP999001”, |
time_stamp string | Datetime in ISO 8601 format ex. “2024-07-04T14:37:00.000Z”, |
signature string | The signature of the metadata fields in base64 encoding ex. “MEQCIAPCIaJACAxd6bBksOAl6mQclQZgroN6EhwXlbMSiYZgAiA2sKQZh6sjBNZuNm8ioyuFLjvaMZEQfYrm4QJW9DIXDg==” |
The metadata fields have the following restrictions:
- max metadata fields: 23
- max field key length: 40
- max field value length: 200
Errors
Example of error responses:
Validation Error (400)
- Arguments of request body doesn’t match request body schema
{
"type": 10001,
"title": "Invalid data provided",
"invalid-params": [
{
"name": "type",
"reason": "Invalid enum value. Expected 'payment', received 'wrong_type_value'"
}
]
}
Authentication Error (401)
- Invalid Pos Api Key provided.
- Terminal Token doesn’t belong to the Merchant
{
"type": 10002,
"title": "Merchant authorization failed"
}
Unprocessable Entity Error (422)
- The provided terminal doesn’t exist or it has
disabled
status
{
"type": 10003,
"title": "Device is not registered"
}
Request Timeout (408)
{
"type": 10004,
"title": "Request has timed out"
}
Unauthorized (401)
- The provided transaction_id do not belong to this merchant
{
"type": 10005,
"title": "Merchant authorization failed"
}
Not Found Error (404)
- The terminal is not connected
{
"type": 10006,
"title": "The POS Device is not connected"
}
Validation Error (400)
- Signed data from VCR (YPAHES) do not match with request data
{
"type": 10007,
"title": "Validation Failed"
}
Unprocessable Entity Error (422)
- The provided terminal processes another transaction
{
"type": 10008,
"title": "Device processes another transaction."
}
Unprocessable Entity Error (422)
- No advice found with the provided original_transaction_id uuid
{
"type": 10009,
"title": "Advice not found for this transaction"
}
Unprocessable Entity Error (422)
- The transaction is older than 24 hours and cannot be voided
{
"type": 10010,
"title": "Cannot void transaction older than 24 hours"
}
Unprocessable Entity Error (422)
- The terminal token is correct but transaction belongs to a different terminal
{
"type": 10011,
"title": "The requested terminal is not the same as the original transaction's terminal"
}
Unprocessable Entity Error (422)
- The batch was settled so the transaction cannot be voided, it must be refunded instead
{
"type": 10012,
"title": "Cannot void transaction from a settled batch"
}
List of errors
Type | Title *HTTP Status Code* |
---|---|
10001 | Invalid data provided 400 |
10002 | Merchant authorization failed 401 |
10003 | Device is not registered 422 |
10004 | Request has timed out 408 |
10005 | Merchant authorization failed 401 |
10006 | The POS Device is not connected 404 |
10007 | Validation Failed 400 |
10008 | Device processes another transaction 422 |
10009 | Advice not found for this transaction 422 |
10010 | Cannot void transaction older than 24 hours 422 |
10011 | The requested terminal is not the same as the original transaction’s terminal 422 |
10012 | Cannot void transaction from a settled batch 422 |
10013 | Cannot void an already voided transaction 422 |