NAV Navbar
API Reference

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:

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:

EveryPay has adapted its systems and service terms to the new provisions of Law 4537/2018 (PSD2) to provide a more secure transaction environment.

Resources

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:

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
1A 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:

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

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:

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.

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.

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.
Data Structures

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 Reference

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:

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:

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:

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:

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:

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:

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:

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:

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