pay.tech API (1.0.61)

Download OpenAPI specification:

License: Apache-2.0

Gateway API

Payments

Payments API

Payment processing completed Webhook

Publish details of a new processed payment.

Authorizations:
SignatureAuth
Request Body schema: application/json

Information about a new finalized payment

id
string <= 32 characters

Payment Id

referenceId
string <= 256 characters

referenceId from payment request

created
string <ISO 8601 (YYYY-MM-DD'T'HH24:MI:SS)>

Date and time when this payment was created, in UTC time zone

paymentType
string (PaymentType)
Enum: "DEPOSIT" "WITHDRAWAL" "REFUND"

Payment Type

state
string (PaymentState)
Enum: "CHECKOUT" "PENDING" "AUTHORIZED" "CANCELLED" "DECLINED" "COMPLETED"

Payment State

description
string <= 512 characters

Description of the transaction

parentPaymentId
string <= 32 characters

Initial transaction Id from payment request

paymentMethod
string (PaymentMethod)
Enum: "BASIC_CARD" "CRYPTO" "FLEXEPIN" "MACROPAY" "SKRILL" "PAYRETAILERS" "LOCALPAYMENT" "MONNET" "PAYPAL" "NETELLER" "TRUSTPAYMENTS" "PAYMAXIS" "GATE8TRANSACT" "TINK" "B2BINPAY" "CLICK" "MONETIX" "PERFECTMONEY" "VOLT" "KESSPAY" "BILLLINE" "NGENIUS" "ASTROPAY" "ALYCEPAY" "PIX" "BOLETO" "UPI" "PAYTM" "NETBANKING" "FINRAX" "SPOYNT" "XINPAY" "OMNIMATRIX" "DPOPAY" "EXTERNAL_HPP" "XANPAY" "INRPAY" "ARI10" "SOFORT" "GIROPAY" "PAYSAFECARD" "PAYSAFECASH" "OPEN_BANKING" "KLARNA" "SPEI" "PAYCASH" "RAPIPAGO" "PAGOFACIL" "RAPIDTRANSFER" "MOBILE_MONEY" "INTERAC" "INTERAC_ETO" "INTERAC_RTO" "INTERAC_ACH" "PICPAY" "MOLLIE" "TED" "ZIPAY" "PSE" "EFECTY" "BANKTRANSFER" "BANKTRANSFER_AR" "BANKTRANSFER_BO" "BANKTRANSFER_BR" "BANKTRANSFER_CL" "BANKTRANSFER_CO" "BANKTRANSFER_EC" "BANKTRANSFER_MX" "BANKTRANSFER_PE" "BANKTRANSFER_TR" "PEC" "OXXO" "WEBPAY" "PAGOEFECTIVO" "MIFINITY" "PAYPORT" "JETONCASH" "JETONWALLET" "NEOSURF" "NODA" "NODA_REVOLUT" "ALFAKIT" "PAYFUN" "EMANAT" "M10" "RUBPAY" "MONERCHY" "MUCHBETTER" "YAPILY" "INAI" "IMPS" "RTGS" "PAYID" "ZOTAPAY" "SBP" "SBP_CROSS_BORDER" "P2P_CARD" "P2P_IBAN" "P2P_SBP" "P2P_MOBILE" "P2P_M10" "P2P_EMANAT" "P2P_KAPITAL" "P2P_ACCESS" "P2P_CROSS_BORDER" "PUSH" "GATEIQ" "VIETTEL" "ZALO" "QR" "CUP" "CODI" "PAY2PLAY" "BKASH" "NAGAD" "ROCKET" "VIRTUAL_ACCOUNT" "MULTIBANCO" "BLIK" "MBWAY" "P24" "MISTERCASH" "MACH" "KHIPU" "NEFT" "STICPAY" "SBERPAY" "MOBILE_COMMERCE" "BINANCE_PAY" "MPAY" "CHEK" "KLAP_EFECTIVO" "KLAP_TRANSFERENCIA" "PAGO46" "HITES" "SERVIFACIL" "OPENPAYD" "FAWRY" "EPS" "IDEAL" "TRUSTLY" "USSD" "MPESA" "ENAIRA" "ONEVOUCHER" "BANCONTACT" "SWISH" "EFT" "GCASH" "PAYMAYA" "PAGO_MOVIL" "PAGO_MOVIL_INST" "BIOPAGO" "CASH" "VOUCHERRY" "SOFT2PAY" "APPLEPAY" "GOOGLEPAY" "BRITE" "VOUCHSTAR" "REVOLUT" "ONLINE_BANKING" "PROMPTPAY" "TRUEMONEY" "MOMOPAY_VN" "MOMOPAY_RW" "VNPAY_QR" "N26" "WISE" "PAYDO_WALLET" "PAPARA" "PAYPAY" "PARAZULA" "PAYFIX" "PHONEPE" "CIP" "BASIC_CARD_HPP" "WAVE" "PIASTRIX" "DANA" "SHOPEEPAY" "QRIS" "OVO" "ALFAMART" "GOPAY" "CASHLIB" "YAPE" "PAYNOW" "MERCADOPAGO" "DRAGON_PAY" "FPX" "HAVALE" "MEFETE" "POPY" "NEQUI" "JAZZCASH" "EASYPAISA" "TRANSFIYA" "KBZ" "BYBIT_PAY" "HELP2PAY" "SEPA" "FPS" "PUNTOPAGO" "BIZUM" "ZIMPLER" "OPTIMONEY" "PAYCO_TR," "PAYOUT_SEPA_BATCH" "PAYOUT_NONSEPA_REQUEST"

Payment Method

object (PaymentMethodDetails)
amount
number multiple of 1e-18 [ 0.00001 .. 1000000000 ]

Amount sent to the payment provider

currency
string <ISO 4217 code for FIAT currencies or cryptocurrency symbol>

Currency sent to the payment provider

customerAmount
number

Amount from payment request. Filled only if the request currency differs from the currency sent to the payment provider.

customerCurrency
string <ISO 4217 code for FIAT currencies or cryptocurrency symbol>

Currency from payment request. Filled only if it differs from the currency sent to the payment provider.

redirectUrl
string <= 256 characters

URL to redirect the customer

errorCode
string

Check 'Error Codes' section for details

errorMessage
string

Check 'Error Codes' section for details

externalResultCode
string

Result code from external provider

object (Customer)
object (BillingAddress)

Customer's billing address

startRecurring
boolean

Indicates whether this payment has started a recurring chain

preAuth
boolean

Indicates whether this is a Pre-Authorization request (for 2-phase deposit)

recurringToken
string

Token that can be used to continue the recurring chain

terminalName
string

The name of the provider that was used to process this payment

externalFeeAmount
number

Provider fee. Filled only if supported by the provider.

externalFeeCurrency
string <ISO 4217 code for FIAT currencies or cryptocurrency symbol>

Provider fee currency. Filled only if supported by the provider.

Responses

Request samples

Content type
application/json
{
  • "id": "91d27876e87f4b22b3ecd53924bf973d",
  • "referenceId": "payment-123",
  • "created": "2030-12-25T10:11:12",
  • "paymentType": "DEPOSIT",
  • "state": "PENDING",
  • "description": "Deposit via TEST shop",
  • "parentPaymentId": "91d27876e87f4b22b3ecd53924bf973d",
  • "paymentMethod": "BASIC_CARD",
  • "paymentMethodDetails": {
    },
  • "amount": 11.12,
  • "currency": "EUR",
  • "customerAmount": 15,
  • "customerCurrency": "USD",
  • "errorCode": "4.01",
  • "errorMessage": "Insufficient Funds",
  • "externalResultCode": "03",
  • "customer": {
    },
  • "billingAddress": {
    },
  • "startRecurring": true,
  • "preAuth": true,
  • "recurringToken": "string",
  • "terminalName": "string",
  • "externalFeeAmount": 15,
  • "externalFeeCurrency": "USD"
}

Get payments

Get a list of payments sorted by creation date (most recent first)

Authorizations:
BearerAuth
query Parameters
offset
integer [ 0 .. 1000000 ]

The number of items to skip before starting to collect the result set. Default is 0.

limit
integer [ 1 .. 1000 ]

The numbers of items to return. Default is 50.

created.gte
string <ISO 8601 (YYYY-MM-DD'T'HH24:MI:SS)>
Example: created.gte=2021-10-13T10:26:18

If passed, return only payments created at or after the specified time

created.lt
string <ISO 8601 (YYYY-MM-DD'T'HH24:MI:SS)>
Example: created.lt=2021-10-13T10:39:34

If passed, return only payments created strictly before the specified time

updated.gte
string <ISO 8601 (YYYY-MM-DD'T'HH24:MI:SS)>
Example: updated.gte=2021-10-13T10:26:18

If passed, return only payments updated at or after the specified time

updated.lt
string <ISO 8601 (YYYY-MM-DD'T'HH24:MI:SS)>
Example: updated.lt=2021-10-13T10:39:34

If passed, return only payments updated strictly before the specified time

referenceId.eq
string
Example: referenceId.eq=order-12345

If passed, return only payments with the requested referenceId

Responses

Response samples

Content type
application/json
{
  • "timestamp": "2020-10-07T13:36:32.595+00:00",
  • "status": 200,
  • "hasMore": true,
  • "result": [
    ]
}

Create payment

Payment request, used for DEPOSITS, WITHDRAWALS and REFUNDS

Authorizations:
BearerAuth
Request Body schema: application/json
required

Payment Request - Request to initiate a payment

referenceId
string <= 256 characters

Reference assigned by Merchant. Will not go outside the system. Will be sent unchanged in the PaymentResponse.

paymentType
required
string (PaymentType)
Enum: "DEPOSIT" "WITHDRAWAL" "REFUND"

Payment Type

paymentMethod
string (PaymentMethod)
Enum: "BASIC_CARD" "CRYPTO" "FLEXEPIN" "MACROPAY" "SKRILL" "PAYRETAILERS" "LOCALPAYMENT" "MONNET" "PAYPAL" "NETELLER" "TRUSTPAYMENTS" "PAYMAXIS" "GATE8TRANSACT" "TINK" "B2BINPAY" "CLICK" "MONETIX" "PERFECTMONEY" "VOLT" "KESSPAY" "BILLLINE" "NGENIUS" "ASTROPAY" "ALYCEPAY" "PIX" "BOLETO" "UPI" "PAYTM" "NETBANKING" "FINRAX" "SPOYNT" "XINPAY" "OMNIMATRIX" "DPOPAY" "EXTERNAL_HPP" "XANPAY" "INRPAY" "ARI10" "SOFORT" "GIROPAY" "PAYSAFECARD" "PAYSAFECASH" "OPEN_BANKING" "KLARNA" "SPEI" "PAYCASH" "RAPIPAGO" "PAGOFACIL" "RAPIDTRANSFER" "MOBILE_MONEY" "INTERAC" "INTERAC_ETO" "INTERAC_RTO" "INTERAC_ACH" "PICPAY" "MOLLIE" "TED" "ZIPAY" "PSE" "EFECTY" "BANKTRANSFER" "BANKTRANSFER_AR" "BANKTRANSFER_BO" "BANKTRANSFER_BR" "BANKTRANSFER_CL" "BANKTRANSFER_CO" "BANKTRANSFER_EC" "BANKTRANSFER_MX" "BANKTRANSFER_PE" "BANKTRANSFER_TR" "PEC" "OXXO" "WEBPAY" "PAGOEFECTIVO" "MIFINITY" "PAYPORT" "JETONCASH" "JETONWALLET" "NEOSURF" "NODA" "NODA_REVOLUT" "ALFAKIT" "PAYFUN" "EMANAT" "M10" "RUBPAY" "MONERCHY" "MUCHBETTER" "YAPILY" "INAI" "IMPS" "RTGS" "PAYID" "ZOTAPAY" "SBP" "SBP_CROSS_BORDER" "P2P_CARD" "P2P_IBAN" "P2P_SBP" "P2P_MOBILE" "P2P_M10" "P2P_EMANAT" "P2P_KAPITAL" "P2P_ACCESS" "P2P_CROSS_BORDER" "PUSH" "GATEIQ" "VIETTEL" "ZALO" "QR" "CUP" "CODI" "PAY2PLAY" "BKASH" "NAGAD" "ROCKET" "VIRTUAL_ACCOUNT" "MULTIBANCO" "BLIK" "MBWAY" "P24" "MISTERCASH" "MACH" "KHIPU" "NEFT" "STICPAY" "SBERPAY" "MOBILE_COMMERCE" "BINANCE_PAY" "MPAY" "CHEK" "KLAP_EFECTIVO" "KLAP_TRANSFERENCIA" "PAGO46" "HITES" "SERVIFACIL" "OPENPAYD" "FAWRY" "EPS" "IDEAL" "TRUSTLY" "USSD" "MPESA" "ENAIRA" "ONEVOUCHER" "BANCONTACT" "SWISH" "EFT" "GCASH" "PAYMAYA" "PAGO_MOVIL" "PAGO_MOVIL_INST" "BIOPAGO" "CASH" "VOUCHERRY" "SOFT2PAY" "APPLEPAY" "GOOGLEPAY" "BRITE" "VOUCHSTAR" "REVOLUT" "ONLINE_BANKING" "PROMPTPAY" "TRUEMONEY" "MOMOPAY_VN" "MOMOPAY_RW" "VNPAY_QR" "N26" "WISE" "PAYDO_WALLET" "PAPARA" "PAYPAY" "PARAZULA" "PAYFIX" "PHONEPE" "CIP" "BASIC_CARD_HPP" "WAVE" "PIASTRIX" "DANA" "SHOPEEPAY" "QRIS" "OVO" "ALFAMART" "GOPAY" "CASHLIB" "YAPE" "PAYNOW" "MERCADOPAGO" "DRAGON_PAY" "FPX" "HAVALE" "MEFETE" "POPY" "NEQUI" "JAZZCASH" "EASYPAISA" "TRANSFIYA" "KBZ" "BYBIT_PAY" "HELP2PAY" "SEPA" "FPS" "PUNTOPAGO" "BIZUM" "ZIMPLER" "OPTIMONEY" "PAYCO_TR," "PAYOUT_SEPA_BATCH" "PAYOUT_NONSEPA_REQUEST"

Payment Method

amount
number multiple of 1e-18 [ 0.00001 .. 1000000000 ]

Payment amount

currency
required
string <ISO 4217 code for FIAT currencies or cryptocurrency symbol>

Payment currency

parentPaymentId
string <= 32 characters

Id of initial deposit for refunds, Id of initial recurring payment for subsequent payments

description
string <= 512 characters

Description of the transaction shown to the Customer. Can be sent outside the system.

object (Card)

You must be PCI DSS compliant to collect card data on your side. If you are not certified, do not add this field to your request and we will collect the data on our page.

object (Customer)
object (BillingAddress)

Customer's billing address

returnUrl
string <= 512 characters

URL to redirect Customer after processing

webhookUrl
string <= 512 characters

Url to receive payment status notifications

startRecurring
boolean

Send 'true' if you want this payment to initiate recurring chain. Default is 'false'.

preAuth
boolean

Send 'true' if you want to request a Pre-Authorization charge (initiate a 2-phase deposit).

recurringToken
string

To continue recurring chain, send a token from a previously initiated recurring payment.

object (SubscriptionRequest)

Subscription to bill customers at regular intervals. Used only with 'startRecurring=true'.

object

Additional parameters required by some payment providers. Contact support for more information.

Responses

Request samples

Content type
application/json
Example
{
  • "paymentType": "DEPOSIT",
  • "currency": "EUR"
}

Response samples

Content type
application/json
Example
{}

Find payment

Find payment by Id

Authorizations:
BearerAuth
path Parameters
id
required
string/[a-zA-Z0-9]{32}/

Payment Id

Responses

Response samples

Content type
application/json
{
  • "timestamp": "2020-10-07T13:36:32.595+00:00",
  • "status": 200,
  • "result": {
    }
}

Execute deposit

Execute deposit without customer redirection to gateway checkout page. Consult with support team before using this method.

Authorizations:
BearerAuth
path Parameters
id
required
string/[a-zA-Z0-9]{32}/

Payment Id

Request Body schema: application/json
required

Subscription patch request

customerIp
required
string <= 39 characters

Customer IP address. Both v4 and v6 addresses are supported.

ipCountryCode
string = 2 characters

Country of the specified customer IP address

customerUserAgent
string <= 512 characters

User agent string for the browser. Equals the navigator.userAgent parameter in JavaScript.

browserWindowWidth
integer

Browser window width in pixels. Equals the document.body.clientWidth parameter in JavaScript.

browserWindowHeight
integer

Browser window height in pixels. Equals the document.body.clientHeight parameter in JavaScript.

browserScreenWidth
integer

Screen width in pixels. Equals the screen.width parameter in JavaScript.

browserScreenHeight
integer

Screen height in pixels. Equals the screen.height parameter in JavaScript.

browserScreenColorDepth
integer

Screen color depth in bits per pixel. Equals the screen.colorDepth parameter in JavaScript.

browserLanguage
string <= 32 characters

Language of the navigator. Equals the navigator.language parameter in JavaScript.

browserJavaEnabled
boolean <= 39 characters

Indicates if the browser is Java-enabled or not. Equals the navigator.javaEnabled() parameter in JavaScript.

browserTimezoneOffset
integer

Time zone difference, in minutes, from the current locale to UTC. Equals the new Date().getTimezoneOffset() parameter in JavaScript.

Responses

Request samples

Content type
application/json
{
  • "customerIp": "152.13.130.125"
}

Response samples

Content type
application/json
{
  • "timestamp": "2020-10-07T13:36:32.595+00:00",
  • "status": 200,
  • "result": {
    }
}

Capture payment

Capture a Pre-Authorized payment fully or partially. Only a payment in AUTHORIZED state can be captured.

Authorizations:
BearerAuth
path Parameters
id
required
string/[a-zA-Z0-9]{32}/

Payment Id

Request Body schema: application/json
optional

Capture Request - Request to capture a Pre-Authorized payment

amount
number multiple of 1e-18 [ 0.00001 .. 1000000000 ]

Capture amount. Should not exceed the authorized payment amount. If not specified, the authorized payment amount will be captured fully.

Responses

Request samples

Content type
application/json
{
  • "amount": 11.12
}

Response samples

Content type
application/json
{
  • "timestamp": "2020-10-07T13:36:32.595+00:00",
  • "status": 200,
  • "result": {
    }
}

Void payment

Void a Pre-Authorized payment. Only a payment in AUTHORIZED state can be voided. The payment will be transferred to CANCELLED state and will no longer be available for capturing.

Authorizations:
BearerAuth
path Parameters
id
required
string/[a-zA-Z0-9]{32}/

Payment Id

Responses

Response samples

Content type
application/json
{
  • "timestamp": "2020-10-07T13:36:32.595+00:00",
  • "status": 200,
  • "result": {
    }
}

Get operations

Get a list of operations performed during payment processing sorted by time (most recent first)

Authorizations:
BearerAuth
path Parameters
id
required
string/[a-zA-Z0-9]{32}/

Payment Id

Responses

Response samples

Content type
application/json
{
  • "timestamp": "2020-10-07T13:36:32.595+00:00",
  • "status": 200,
  • "result": [
    ]
}

Subscriptions

Subscriptions API

Find subscription

Find subscription by Id

Authorizations:
BearerAuth
path Parameters
id
required
string/[a-zA-Z0-9]{32}/

Subscription Id

Responses

Response samples

Content type
application/json
{
  • "timestamp": "2020-10-07T13:36:32.595+00:00",
  • "status": 200,
  • "result": {
    }
}

Patch subscription

Patch subscription

Authorizations:
BearerAuth
path Parameters
id
required
string/[a-zA-Z0-9]{32}/

Subscription Id

Request Body schema: application/json
required

Subscription patch request

state
string
Value: "CANCELLED"

New subscription state

Responses

Request samples

Content type
application/json
{
  • "state": "CANCELLED"
}

Response samples

Content type
application/json
{
  • "timestamp": "2020-10-07T13:36:32.595+00:00",
  • "status": 200,
  • "result": {
    }
}

Balances

Withdrawal balances API

Get withdrawal balances

Get a list of funds available for withdrawal by currency (see "Check Withdrawal Balance" in shop settings)

Authorizations:
BearerAuth

Responses

Response samples

Content type
application/json
{
  • "timestamp": "2020-10-07T13:36:32.595+00:00",
  • "status": 200,
  • "result": [
    ]
}

Error codes

Code Description
1.00 Illegal Workflow State
1.01 Not Found
1.02 Communication Problem
1.03 Internal Server Error
1.04 Cancelled by Timeout
1.05 Terminal not Found
1.06 Recurring Token not Found
1.07 Payer Unaccepted
1.08 Invalid Amount
1.09 Invalid Currency
1.10 Insufficient Balance
2.00 Cancelled by Customer
3.00 Declined by Acquirer
3.01 Declined by Acquirer: Anti-fraud
3.02 Declined by Acquirer: Request Validation
3.03 Acquirer Malfunction
3.04 Acquirer Timeout
3.05 Acquirer Limits Reached
3.06 Declined by Acquirer: Card Scheme
3.07 Declined by Acquirer: Card Data
3.08 Declined by Acquirer: Business Rules
3.09 Not Fully 3DS
3.10 Unknown Error Code
3.11 Payer cannot pay
3.12 Invalid ID Document
3.13 ID Document Restrictions
3.14 Declined Due to Age Requirements
3.15 ID Document Under Temporary Restrictions
3.16 Duplicate Payment
4.00 Declined by Issuer
4.01 Insufficient Funds
4.02 Do Not Honor
4.03 Invalid Account Number
4.04 Declined by Issuer: Expired Card
4.05 Issuer Limits Reached
4.06 Card Lost or Stolen
4.07 Invalid Security Code
4.08 Declined by Issuer: Business Rules
5.00 Declined by 3DS
5.01 3DS Timeout
6.00 Declined by Internal Anti-fraud
6.01 Card PAN Blacklisted
6.02 Customer Email Blacklisted
6.03 Card Issuing Country Restricted
6.04 IP Country Restricted
6.05 Restricted Currency
6.06 Invalid Amount
6.07 IP Country Must Be Equal to Billing Country
6.08 IP Country Must Be Equal to Card Issuing Country
6.09 Billing Country Must Be Equal to Card Issuing Country
6.10 Payment Created Within Closed Period of Day
6.11 Card PAN not Whitelisted
6.12 Cardholder name is invalid
6.13 The same card is used by different customers
6.14 Customer Phone Blacklisted
6.15 Card Brand not supported
6.21 Limit exceeded: Number of completed deposits
6.22 Limit exceeded: Number of completed deposits for card
6.23 Limit exceeded: Number of declined deposits for card
6.24 Limit exceeded: Number of cards for IP address
6.25 Limit exceeded: Number of IP addresses for card
6.26 Limit exceeded: IP country does not match card country
6.27 Limit exceeded: Same amount and currency for card
6.28 Limit exceeded: Amount of deposits in specified currency
6.29 Limit exceeded: Amount of deposits for card and currency
6.30 Limit exceeded: Amount of deposits in base currency
6.31 Limit exceeded: Amount of deposits for card in base currency
6.32 Limit exceeded: Number of IP countries for card
6.33 Limit exceeded: Amount of deposits for customer in base currency
6.34 Limit exceeded: Withdrawal amount for customer in base currency
6.35 Billing Country Restricted
6.36 Customer Citizenship Country Restricted
6.37 Limit exceeded: Number of withdrawals
6.38 Limit exceeded: Amount of withdrawals in specified currency
6.39 Card BIN Blacklisted
6.40 UPI VPA Blacklisted
6.41 ID Document Blacklisted
6.42 Limit exceeded: Decline deposits streak for card
6.43 Limit exceeded: Incomplete deposits APM streak for email
6.44 Customer email contains restricted word
7.00 Declined by External Anti-fraud
7.01 External Anti-fraud Communication Problem

Testing

For a successful deposit in the sandbox environment, the amount should be less than 10000000. For test withdrawals and refunds, the limit is 10000.

Test cards

Card Number Result
4000 0000 0000 0002 3D-Secure enrolled, successful authorization
4242 4242 4242 4242 3D-Secure enrolled, declined authorization
4000 0000 0000 0408 Not enrolled for 3D-Secure, successful authorization
4000 0000 0000 0416 Not enrolled for 3D-Secure, declined authorization