[go: up one dir, main page]

RozetkaPay payment API specification

Download OpenAPI specification:Download

Introduction

RozetkaPay API enables you to integrate online payments into your platform, providing a seamless and secure transaction experience for your users.

Basic information

Authorization

Main type of authorization is BasicAuth which is always required. To perform payment requests on behalf of another login, you have to provide it in onBehalfOf header. If you would like to receive customer's information with RID auth token - add customerAuth to your request.

BasicAuth

Basic Auth consists of login and password combined into a header field in the following form:

Authorization: Basic <credentials>

where <credentials> is the Base64 encoding of login and password joined by a single colon :.

You should be provided with login and password by our support team. Otherwise, if you have already been using other RozetkaPay online payments API, you can reuse previously provided API_KEY and API_SECRET for X-API-AUTH header as login and password respectively to authorize into API Gateway.

Security Scheme Type: basic

customerAuth

User's personal access token allows to find or/and authorize user in

  • customer's wallet
  • subscriptions
  • other parts of the API Gateway

You can also see the X-CUSTOMER-RID header. Is a DEPRECATED way to use endpoints with a raw rid for not user-initiated actions like calls from admin panel or background processing. Please, use X-CUSTOMER-AUTH with a special type of access token (authorization_flow = processing) instead.

If you need additional details about "processing" access token, please ask details in RozetkaPay ID Team.

Security Scheme Type: API Key
Header parameter name: X-CUSTOMER-AUTH

onBehalfOf

Used for partnership mode, when one core account operates with several children

Security Scheme Type: API Key
Header parameter name: X-ON-BEHALF-OF

Rate Limits

RozetkaPay applies rate limit for its APIs.

API client should handle rate limiting gracefully. It is recommended to watch for 429 status codes and build in a retry mechanism with an exponential backoff schedule. Some randomness could be added into the backoff to avoid a thundering herd effect. X-RATELIMIT-RESET header (time in seconds, after which requests are allowed again) could be used as a basis for retry mechanism.

Example of headers for 1000 requests/second rate limit (after first request):

Header field name Description Example
X-RATELIMIT-LIMIT Allowed requests per second X-RATELIMIT-LIMIT: 1000
X-RATELIMIT-RESET Time to reset in seconds X-RATELIMIT-RESET: 0
X-RATELIMIT-REMAINING Number of left requests X-RATELIMIT-REMAINING: 999

Callbacks

A callback is considered successful when the receiving endpoint returns an HTTP 200 status code. All other status codes are treated as a failure. If a status code other than 200 is received, the system will attempt to resend the callback at predefined intervals.

Source verification

Each callback sent by RozetkaPay is signed using the merchant's password used for the payment operation. The signature is included with the callback and can be found in the X-ROZETKAPAY-SIGNATURE header. This header allows you to verify that the callback is from RozetkaPay.

Calculation algorithm:

signature=base64url_encode(sha1($password + base64url_encode($json_body) + $password))

Example of signature calculation in python

import base64
import hashlib

def webhook_signature(password: str, data: str, encoding: str = 'UTF-8') -> str:
    """
    Generate a webhook signature for verification.

    Args:
        password (str): Password used for the payment operation.
        data (str): String representation of the callback content.
        encoding (str, optional): Encoding to be used. Defaults to 'UTF-8'.

    Returns:
        str: Generated signature.
    """
    base64_data = base64.urlsafe_b64encode(data.encode(encoding)).decode(encoding)
    signature_data = password + base64_data + password
    signature = base64.urlsafe_b64encode(
        hashlib.sha1(signature_data.encode(encoding)).digest()
    ).decode(encoding)
    return signature

# Body received from callback
callback_body = '{"name": "john", "age": 21}'

# Result signature
print(webhook_signature('your_password', callback_body))

Note: Do not remove the = padding during base64 URL-safe encoding, or the signature will be incorrectly calculated.

Apple Pay & Google Pay

If you wish to provide your customers a better experience, we support online payments with Apple Pay & Google Pay. You have two options to integrate those payment methods:

  1. Via our checkout (this way you only have to ask for the feature, and the buttons will appear to customers). Refer to Create payment operation for details.
  2. Embedding button into your website or mobile application - this requires some additional steps from you to generate Apple/Google Pay tokens and pass it to us via Create payment operation.

Apple Pay

To add the Apple Pay entitlement to your website or mobile application, you need to have:

To integrate Apple Pay to your mobile application, follow the instruction.

To integrate Apple Pay to your website, follow the instruction.

After you completed the integration with Apple Pay for any of your environment (mobile or web), you should receive the following kind of JSON object as a result of Apple Pay call:

{
  "version":              "EC_v1",
  "data":                 "zTMZDPumdE7h8oY/+31VMZd60dMaxB...",
  "signature":            "MIAGCSqGSIb3DQEHA...",
  "header": {
    "ephemeralPublicKey": "MFkwEwYHKoZIzj0C...",
    "publicKeyHash":      "3AKqH/wPWdQIBpGIv1PC4uDTbGouPgWbmUlFGiHopig=",
    "transactionId":      "d6e63976191fdf051f7cb95e0e5da70a19c99a5576ececbfc0fd65ad2a7f2f74"
  }
}

This payload should be encoded to Base64 and passed in customer.payment_method.apple_pay.token field on Create payment operation.

Google Pay

Firstly please review the following documentation in order to get familiar with the integration process:

The gateway parameter in the script should have the constant value of evopay.

The value of the gatewayMerchantId parameter should be a unique identifier which can be provided via our Support team.

In response, Google shall return the PaymentData item, and the field paymentMethodData.tokenizationData.token shall contain a safely encrypted Google Pay Token (a string of characters). This string should be encoded to Base64 and passed in customer.payment_method.google_pay.token field on Create payment operation.

Widget

In order to smoothly collect customer's card details, you have to use our Widget Checkout. It might be embedded into your web page and should provide smooth and secure credit card tokenization flow.

Integration

Include script tag into your website: <script src="https://cdn.rozetkapay.com/widget.js" async></script>

The script is loaded asynchronously.

init() method receive parameters:

let initParams = {
 /* Widget key issued by RozetkaPay */
 key: 'hQ8aqcm/RG1RF7MaImmzZUsThYhAVDG6R7kazf9+r7zuoWo6',
 /* Optional amount */
 amount: 350.5,
 /* Currently, only 'inline' mode is supported */
 mode: 'inline',
 /* Optional user language */
 lang: 'uk',
 /* Optional predefined custom style */
 style: 'evo',
 /* Optional widget type */
 type: 'full_card',
 /* Optional customer ip */
 customer_ip: '127.0.0.1',
 /* Optional customer id */
 customer_id: '123',
 /* Optional customer email */
 customer_email: '[email protected]',
 /* Optional customer country */
 customer_country: 'UA',
 /* Optional customer city */
 customer_city: 'Kyiv',
 /* Identifier of HTML element (for 'inline' mode only) */
 selector: 'widget-checkout',
 /* Handler for receiving token data */
 onToken: function(tokenData) {
   /*
     It is guaranteed that`tokenData` will have the following fields:
     {
       "token": "String(<=128)",
       "expires_at": "ISO-8601 DateTime",
       "card_mask": "String(13-19)"
     }
   */
 }
};

let widget = RPayCardWidget.init(initParams)

RPayCardWidget#init parameters:

Parameter Type Required Description
key String Widget key issued by RozetkaPay.
mode String Should be equal to inline.
selector String Identifier of HTML element (e.g. div id={payform-holder}) where the widget will be mounted (for inline mode).
onToken Function Callback to invoke when the checkout process is complete.
amount Number Optional amount to be shown in widget for UX purposes.
locale Object Locale customization
lang String Preferred widget localization. Currently supported languages: en, uk, pl.
style String Optional predefined custom style
type String Optional widget type. Available options: full_card(default) - collect all card credentials (payments), pan_only - tokenize only card number (payouts).
template String Optional custom template. Currently supported templates: line
customer_ip String Optional customer IP address.
customer_id String Optional customer identifier in merchant's system (required in case of External tokenization).
customer_email String Optional customer email (required in case of External tokenization).
customer_country String Optional customer country.
customer_city String Optional customer city.
locale Object Optional object to set text for widget elements.

locale object example

{
  "uk": {
    "cardNumber": "Номер карти",
    "expiryDate": "Строк дії",
    "cvv": "CVV",
    "submit": "Сплатити",
    "yy": "ГГ",
    "mm": "ММ",
    "hints": {
      "cvvHint": "Код міститься на зворотній стороні карти"
    },
    "errors": {
      "cardnumber": "Неправильний номер карти",
      "expiryDate": "Строк дії карти закінчився",
      "cvv": "Некорректний CVV/CVC2 код"
    }
  }
}

#onToken parameters:

Parameter Type Required Description
token String(≤128) Token issued by RozetkaPay. Acceptable for payments via direct mode.
expires_at String(26) ISO-8601 timestamp (yyyy-mm-ddThh:mm:ss). End of token life. Example: 2099-12-31T00:00:00.
card_mask String(13-19) Mask of tokenized card. Example: 424242******4242.

Widget API

RPayCardWidget#init return special control object with the following API methods:

Method Parameter Description
widget.open() none Render widget
widget.close() none Force close widget

Integration examples

Eager widget loading:

// Eagerly initialize widget
function __onWidgetReady() {
  let widget = RPayCardWidget.init({
                    key: 'hQ8aqcm/RG1RF7MaImmzZUsThYhAVDG6R7kazf9+r7zuoWo6',
                    amount: 350.5,
                    mode: 'inline',
                    lang: 'uk',
                    selector: 'widget-checkout',
                    /* Handler for receiving token data */
                    onToken: function(tokenData) {
                      /* Handle token data. For example, create direct payment or add card to wallet */
                      backend.submitPayment(orderId, tokenData);
                    }
                  });
}

const payButton = document.getElementById('btn-pay');

// Open widget on action
payButton.addEventListener('click', function(e) {
  e.preventDefault();

  widget.open();
});

After internal form submission, RozetkaPay token token will be sent in response to onToken function.

If script was loaded asynchronously, you should wrap init() method in function wrapper: __onWidgetReady

Lazy widget loading

// Create widget entity on button click (for example, radio button option)
function __onWidgetReady() {
  document
    .getElementById('btn-pay')
    .addEventListener('click', function(e) {
        e.preventDefault();
        RPayCardWidget
          .init({
            key: 'hQ8aqcm/RG1RF7MaImmzZUsThYhAVDG6R7kazf9+r7zuoWo6',
            amount: 350.5,
            mode: 'inline',
            lang: 'uk',
            selector: 'widget-checkout',
            /* Handler for receiving token data */
            onToken: function(tokenData) {
              // Handle token data. For example, create direct payment or add card to wallet.
              backend.submitToken(orderId, tokenData);
            }
          })
          .open();
      }
    );
}

Initialize and open widget instantly

  function __onWidgetReady() {
    RPayCardWidget.init({ ... }).open();
  }

Widget Events

Example usage:

    document.addEventListener('widget-init-ready', () => {
      widget.open();
    })
    document.addEventListener('widget-init-error', (e) => {
      console.error('error', e.detail.id, e.detail.message)
    });

After widget is successfully initiated, widget-init-ready event is dispatched. Otherwise, in case of error, widget will dispatch widget-init-error error. You can add event listener to this events.

Testing your integrations

Test cards for Aquiring flow

Card number Expiration date CVV 3D Secure Result
4242 4242 4242 4242 any any yes success
5454 5454 5454 5454 any any yes success
4111 1111 1111 1111 any any no success
5555 5555 5555 4444 any any no success
4200 0000 0000 0000 any any yes rejected
5105 1051 0510 5100 any any yes rejected
4444 3333 2222 1111 any any no rejected
5100 0000 2000 2000 any any no rejected
4000 0000 0000 0044 any any no insufficient-funds

Test order details for the PayParts flow. This works only with the 'stub' bank and exclusively on the development environment.

Phone number Confirmation Result
+380930000001 Webpage success
+380930000002 Webpage success
+380930000003 None success
+380930000004 None success
+380930000007 Webpage rejected
+380930000008 Webpage rejected
+380930000009 None rejected
+380930000010 None rejected

payments

Accept online payments using this methods

Create payment

Creates payment and performs desired operation. When mode is set to direct - customer field becomes required.

Authorizations:
BasicAuth(BasicAuthcustomerAuth) (BasicAuthonBehalfOf) (BasicAuthonBehalfOfcustomerAuth)
Request Body schema: application/json
amount
required
number
callback_url
string <url>
result_url
string <url>

URL where the user will be redirected after the payment is completed. If the payment requires 3-D Secure, the user will be redirected to this URL after completing the 3DS flow. If result_url is not provided the user will be redirected to the URL configured in the project settings.

confirm
boolean
Default: true

If true - funds are transferred to recipient account. If false - you have to call POST /api/payments/v1/confirm for additional confirmation of funds transfer.

currency
required
string
object (CustomerRequestUserDetails)
description
string
external_id
required
string

You can use external_id to link the corresponding payment within your system. This could be order ID or any other logical identifier. You can pass same external ID on every payment attempt until you receive success one. At most one success payment is allowed with same external_id within single login. If such condition occurs, request will complete with corresponding error.

unified_external_id
string

Unified external id.

payload
string
init_recurrent_payment
boolean
Array of objects (Product)
object (RecipientRequestUserDetails)
mode
required
string (PaymentMode)
Enum: "direct" "hosted" "express_checkout"

Describes the way of the integration:

  • hosted - returns checkout page, where user can enter his payment details.
  • direct - requires customer's payment details in request. Usually returns url for second factor (3DS or other).
  • express_checkout - requires list of products in request. Returns checkout url.
checkout_ttl
number

Checkout TTL allows to configure how long the checkout will be available (in minutes).

subscription_id
string
campaign_name
string (CampaignName)
Enum: "r_card" "diia_card"
  • r_card — validates whether the customer used a Rozetka card for payment.
  • diia_card — validates whether the customer used a Diia card for payment.

Responses

Callbacks

Request samples

Content type
application/json
{
  • "amount": 0,
  • "callback_url": "string",
  • "result_url": "string",
  • "confirm": true,
  • "currency": "string",
  • "customer": {
    },
  • "description": "string",
  • "external_id": "string",
  • "unified_external_id": "string",
  • "payload": "string",
  • "init_recurrent_payment": true,
  • "products": [
    ],
  • "recipient": {
    },
  • "mode": "direct",
  • "checkout_ttl": 0,
  • "subscription_id": "string",
  • "campaign_name": "r_card"
}

Response samples

Content type
application/json
{
  • "action": {
    },
  • "action_required": true,
  • "details": {
    },
  • "external_id": "string",
  • "unified_external_id": "string",
  • "batch_external_id": "string",
  • "id": "0",
  • "project_id": "string",
  • "is_success": true,
  • "receipt_url": "string",
  • "payment_method": {
    },
  • "customer": {
    },
  • "operation": "payment"
}

Callback payload samples

Callback
POST: Processing callback
Content type
application/json
{
  • "action": {
    },
  • "action_required": true,
  • "details": {
    },
  • "external_id": "string",
  • "unified_external_id": "string",
  • "batch_external_id": "string",
  • "id": "0",
  • "project_id": "string",
  • "is_success": true,
  • "receipt_url": "string",
  • "payment_method": {
    },
  • "customer": {
    },
  • "operation": "payment"
}

Create recurrent payment

Creates payment and performs desired operation.

Authorizations:
BasicAuth(BasicAuthcustomerAuth) (BasicAuthonBehalfOf) (BasicAuthonBehalfOfcustomerAuth)
Request Body schema: application/json
recurrent_id
required
string
external_id
required
string
unified_external_id
string

Unified external id.

amount
required
number
callback_url
string <url>
payload
string
delegate_api_key
string <uuid>

If a delegate_api_key is provided, the recurrent payment will be processed in favor of the delegate_api_key owner using the payment data from the initial payment.

subscription_id
string
confirm
boolean
Default: true

If true - funds are transferred to recipient account. If false - you have to call POST /api/payments/v1/confirm for additional confirmation of funds transfer.

Responses

Callbacks

Request samples

Content type
application/json
{
  • "recurrent_id": "string",
  • "external_id": "string",
  • "unified_external_id": "string",
  • "amount": 0,
  • "callback_url": "string",
  • "payload": "string",
  • "delegate_api_key": "bb039837-c4b7-4c69-91da-9d72ca8bc66c",
  • "subscription_id": "string",
  • "confirm": true
}

Response samples

Content type
application/json
{
  • "action": {
    },
  • "action_required": true,
  • "details": {
    },
  • "external_id": "string",
  • "unified_external_id": "string",
  • "batch_external_id": "string",
  • "id": "0",
  • "project_id": "string",
  • "is_success": true,
  • "receipt_url": "string",
  • "payment_method": {
    },
  • "customer": {
    },
  • "operation": "payment"
}

Callback payload samples

Callback
POST: Processing callback
Content type
application/json
{
  • "action": {
    },
  • "action_required": true,
  • "details": {
    },
  • "external_id": "string",
  • "unified_external_id": "string",
  • "batch_external_id": "string",
  • "id": "0",
  • "project_id": "string",
  • "is_success": true,
  • "receipt_url": "string",
  • "payment_method": {
    },
  • "customer": {
    },
  • "operation": "payment"
}

Confirm payment

Confirm two-step payment.

Authorizations:
BasicAuth(BasicAuthcustomerAuth) (BasicAuthonBehalfOf) (BasicAuthonBehalfOfcustomerAuth)
Request Body schema: application/json
external_id
required
string

External ID of a payment, passed from your side on create.

amount
number
callback_url
string <url>
currency
string
payload
string
Array of objects (Product)

List of confirmed products. Required in case of partial confirm for projects with enabled fiscalization. For full confirm products would be taken from create request.

Responses

Callbacks

Request samples

Content type
application/json
{
  • "external_id": "string",
  • "amount": 0,
  • "callback_url": "string",
  • "currency": "string",
  • "payload": "string",
  • "products": [
    ]
}

Response samples

Content type
application/json
{
  • "action": {
    },
  • "action_required": true,
  • "details": {
    },
  • "external_id": "string",
  • "unified_external_id": "string",
  • "batch_external_id": "string",
  • "id": "0",
  • "project_id": "string",
  • "is_success": true,
  • "receipt_url": "string",
  • "payment_method": {
    },
  • "customer": {
    },
  • "operation": "payment"
}

Callback payload samples

Callback
POST: Processing callback
Content type
application/json
{
  • "action": {
    },
  • "action_required": true,
  • "details": {
    },
  • "external_id": "string",
  • "unified_external_id": "string",
  • "batch_external_id": "string",
  • "id": "0",
  • "project_id": "string",
  • "is_success": true,
  • "receipt_url": "string",
  • "payment_method": {
    },
  • "customer": {
    },
  • "operation": "payment"
}

Cancel payment

Cancel two-step payment

Authorizations:
BasicAuth(BasicAuthcustomerAuth) (BasicAuthonBehalfOf) (BasicAuthonBehalfOfcustomerAuth)
Request Body schema: application/json
external_id
required
string

External ID of a payment, passed from your side on create.

amount
number
callback_url
string <url>
currency
string
payload
string
Array of objects (Product)

List of products for refund. Required in case of partial refund for projects with enabled fiscalization. For full refund products would be taken from create request.

Responses

Callbacks

Request samples

Content type
application/json
{
  • "external_id": "string",
  • "amount": 0,
  • "callback_url": "string",
  • "currency": "string",
  • "payload": "string",
  • "products": [
    ]
}

Response samples

Content type
application/json
{
  • "action": {
    },
  • "action_required": true,
  • "details": {
    },
  • "external_id": "string",
  • "unified_external_id": "string",
  • "batch_external_id": "string",
  • "id": "0",
  • "project_id": "string",
  • "is_success": true,
  • "receipt_url": "string",
  • "payment_method": {
    },
  • "customer": {
    },
  • "operation": "payment"
}

Callback payload samples

Callback
POST: Processing callback
Content type
application/json
{
  • "action": {
    },
  • "action_required": true,
  • "details": {
    },
  • "external_id": "string",
  • "unified_external_id": "string",
  • "batch_external_id": "string",
  • "id": "0",
  • "project_id": "string",
  • "is_success": true,
  • "receipt_url": "string",
  • "payment_method": {
    },
  • "customer": {
    },
  • "operation": "payment"
}

Refund Payment

Refund one-step payment after withdrawal, or two-step payment after confirmation.

Authorizations:
BasicAuth(BasicAuthcustomerAuth) (BasicAuthonBehalfOf) (BasicAuthonBehalfOfcustomerAuth)
Request Body schema: application/json
external_id
required
string

External ID of a payment, passed from your side on create.

amount
number
callback_url
string <url>
currency
string
payload
string
Array of objects (Product)

List of products for refund. Required in case of partial refund for projects with enabled fiscalization. For full refund products would be taken from create request.

Responses

Callbacks

Request samples

Content type
application/json
{
  • "external_id": "string",
  • "amount": 0,
  • "callback_url": "string",
  • "currency": "string",
  • "payload": "string",
  • "products": [
    ]
}

Response samples

Content type
application/json
{
  • "action": {
    },
  • "action_required": true,
  • "details": {
    },
  • "external_id": "string",
  • "unified_external_id": "string",
  • "batch_external_id": "string",
  • "id": "0",
  • "project_id": "string",
  • "is_success": true,
  • "receipt_url": "string",
  • "payment_method": {
    },
  • "customer": {
    },
  • "operation": "payment"
}

Callback payload samples

Callback
POST: Processing callback
Content type
application/json
{
  • "action": {
    },
  • "action_required": true,
  • "details": {
    },
  • "external_id": "string",
  • "unified_external_id": "string",
  • "batch_external_id": "string",
  • "id": "0",
  • "project_id": "string",
  • "is_success": true,
  • "receipt_url": "string",
  • "payment_method": {
    },
  • "customer": {
    },
  • "operation": "payment"
}

Retry Refund

If merchant's balance is not enough to process refund, this refund will be deferred and retried automatically for some period until it fails for some reason, or balance became enough to process it. If the refund retrying is timed out, the transaction will became failed with refund_is_cancelled_by_system status. This endpoint allows to retry refund transaction manually if it has pending status.

Authorizations:
BasicAuth(BasicAuthcustomerAuth) (BasicAuthonBehalfOf) (BasicAuthonBehalfOfcustomerAuth)
Request Body schema: application/json
external_id
required
string

External ID of a payment, passed from your side on create.

Responses

Callbacks

Request samples

Content type
application/json
{
  • "external_id": "string"
}

Response samples

Content type
application/json
{
  • "action": {
    },
  • "action_required": true,
  • "details": {
    },
  • "external_id": "string",
  • "unified_external_id": "string",
  • "batch_external_id": "string",
  • "id": "0",
  • "project_id": "string",
  • "is_success": true,
  • "receipt_url": "string",
  • "payment_method": {
    },
  • "customer": {
    },
  • "operation": "payment"
}

Callback payload samples

Callback
POST: Processing callback
Content type
application/json
{
  • "action": {
    },
  • "action_required": true,
  • "details": {
    },
  • "external_id": "string",
  • "unified_external_id": "string",
  • "batch_external_id": "string",
  • "id": "0",
  • "project_id": "string",
  • "is_success": true,
  • "receipt_url": "string",
  • "payment_method": {
    },
  • "customer": {
    },
  • "operation": "payment"
}

Cancel Refund

If merchant's balance is not enough to process refund, this refund will be deferred and retried automatically for some period until it fails or balance became enough to process it. If the refund retrying process is timed out, the transaction will became failed with refund_is_cancelled_by_system status. This endpoint allows to cancel refund transaction manually if it has pending status. In this case the status it will be set to refund_is_cancelled_by_initiator.

Authorizations:
BasicAuth(BasicAuthcustomerAuth) (BasicAuthonBehalfOf) (BasicAuthonBehalfOfcustomerAuth)
Request Body schema: application/json
external_id
required
string

External ID of a payment, passed from your side on create.

Responses

Callbacks

Request samples

Content type
application/json
{
  • "external_id": "string"
}

Response samples

Content type
application/json
{
  • "action": {
    },
  • "action_required": true,
  • "details": {
    },
  • "external_id": "string",
  • "unified_external_id": "string",
  • "batch_external_id": "string",
  • "id": "0",
  • "project_id": "string",
  • "is_success": true,
  • "receipt_url": "string",
  • "payment_method": {
    },
  • "customer": {
    },
  • "operation": "payment"
}

Callback payload samples

Callback
POST: Processing callback
Content type
application/json
{
  • "action": {
    },
  • "action_required": true,
  • "details": {
    },
  • "external_id": "string",
  • "unified_external_id": "string",
  • "batch_external_id": "string",
  • "id": "0",
  • "project_id": "string",
  • "is_success": true,
  • "receipt_url": "string",
  • "payment_method": {
    },
  • "customer": {
    },
  • "operation": "payment"
}

Payment info

Get payment info by id

Authorizations:
BasicAuth(BasicAuthcustomerAuth) (BasicAuthonBehalfOf) (BasicAuthonBehalfOfcustomerAuth)
query Parameters
external_id
required
any

External ID (unique identifier)

Responses

Response samples

Content type
application/json
{
  • "action": {
    },
  • "action_required": true,
  • "amount": "0",
  • "amount_canceled": "0",
  • "amount_confirmed": "0",
  • "amount_refunded": "0",
  • "canceled": true,
  • "cancellation_details": [
    ],
  • "confirmation_details": [
    ],
  • "confirmed": true,
  • "created_at": "2019-08-24T14:15:22Z",
  • "currency": "string",
  • "external_id": "string",
  • "batch_external_id": "string",
  • "id": "string",
  • "unified_external_id": "string",
  • "purchase_details": [
    ],
  • "purchased": true,
  • "receipt_url": "string",
  • "refund_details": [
    ],
  • "refunded": true,
  • "customer": {
    },
  • "partner_details": {
    },
  • "delivery_details": {
    },
  • "order_recipient": {
    }
}

Resend callback

Prepares the data about the specified payment of transaction and sends it into callback_url which was provided on the payment step. If the operation field is not provided the callback will be sent for the last operation.

Authorizations:
BasicAuth(BasicAuthcustomerAuth) (BasicAuthonBehalfOf) (BasicAuthonBehalfOfcustomerAuth)
Request Body schema: application/json
external_id
required
string
operation
string (OperationType)
Enum: "payment" "confirm" "refund" "cancel" "lookup" "recurrent"

Responses

Callbacks

Request samples

Content type
application/json
{
  • "external_id": "string",
  • "operation": "payment"
}

Response samples

Content type
application/json
{
  • "code": "authorization_failed",
  • "message": "string",
  • "param": "string",
  • "payment_id": "string",
  • "type": "invalid_request_error",
  • "error_id": "string"
}

Callback payload samples

Callback
POST: Processing callback
Content type
application/json
{
  • "action": {
    },
  • "action_required": true,
  • "details": {
    },
  • "external_id": "string",
  • "unified_external_id": "string",
  • "batch_external_id": "string",
  • "id": "0",
  • "project_id": "string",
  • "is_success": true,
  • "receipt_url": "string",
  • "payment_method": {
    },
  • "customer": {
    },
  • "operation": "payment"
}

Card lookup

Starts card confirmation process that allows to use this card for future operations. Result of the confirmation will be sent via callback. When mode is set to direct - customer field becomes required.

Authorizations:
BasicAuth(BasicAuthcustomerAuth) (BasicAuthonBehalfOf) (BasicAuthonBehalfOfcustomerAuth)
Request Body schema: application/json
callback_url
string <url>
result_url
string <url>
currency
string
object (CustomerRequestUserDetails)
description
string
payload
string
mode
required
string (PaymentMode)
Enum: "direct" "hosted" "express_checkout"

Describes the way of the integration:

  • hosted - returns checkout page, where user can enter his payment details.
  • direct - requires customer's payment details in request. Usually returns url for second factor (3DS or other).
  • express_checkout - requires list of products in request. Returns checkout url.

Responses

Callbacks

Request samples

Content type
application/json
{
  • "callback_url": "string",
  • "result_url": "string",
  • "currency": "string",
  • "customer": {
    },
  • "description": "string",
  • "payload": "string",
  • "mode": "direct"
}

Response samples

Content type
application/json
{
  • "action": {
    },
  • "action_required": true,
  • "details": {
    },
  • "external_id": "string",
  • "unified_external_id": "string",
  • "batch_external_id": "string",
  • "id": "0",
  • "project_id": "string",
  • "is_success": true,
  • "receipt_url": "string",
  • "payment_method": {
    },
  • "customer": {
    },
  • "operation": "payment"
}

Callback payload samples

Callback
POST: Processing callback
Content type
application/json
{
  • "action": {
    },
  • "action_required": true,
  • "details": {
    },
  • "external_id": "string",
  • "unified_external_id": "string",
  • "batch_external_id": "string",
  • "id": "0",
  • "project_id": "string",
  • "is_success": true,
  • "receipt_url": "string",
  • "payment_method": {
    },
  • "customer": {
    },
  • "operation": "payment"
}

Payment Receipt

Get receipt url by id

Authorizations:
BasicAuth(BasicAuthcustomerAuth) (BasicAuthonBehalfOf) (BasicAuthonBehalfOfcustomerAuth)
query Parameters
external_id
required
any

External ID (unique identifier)

Responses

Response samples

Content type
application/json
{}

batch

Accept online batch payments using this methods

Create batch acquiring payment

Creates batch payment and performs desired operation.

Authorizations:
BasicAuth(BasicAuthcustomerAuth) (BasicAuthonBehalfOf) (BasicAuthonBehalfOfcustomerAuth)
Request Body schema: application/json
callback_url
string <url>

URL to receive callback after finalization of batch operation.

currency
required
string

Batch payment currency.

object (BatchCustomerRequestUserDetails)

Payer customer data.

mode
required
string (BatchPaymentMode)
Enum: "direct" "hosted"

Describes the way of the integration:

  • direct - requires customer's payment details in request. Usually returns url for second factor (3DS or other).
  • hosted - returns checkout page, where user can enter his payment details.
payload
string

Additional data transmitted with the batch payment request. One parameter for the entire batch.

result_url
string <url>

URL where the user will be redirected after the payment is completed. If the payment requires 3-D Secure, the user will be redirected to this URL after completing the 3DS flow. If result_url is not provided the user will be redirected to the URL configured in the project settings.

confirm
boolean
Default: true

If true - funds are transferred to recipient account. If false - you have to call POST /api/payments/batch/v1/confirm for additional confirmation of funds transfer.

required
Array of objects (BatchOrder) <= 10 items

List of orders of batch.

batch_external_id
required
string

External identifier from the merchant, one per batch. Unique within the project.

checkout_ttl
number [ 5 .. 720 ]
Default: 720

Checkout TTL allows to configure how long the checkout will be available (in minutes). This feature is supported only for hosted mode.

campaign_name
string (CampaignName)
Enum: "r_card" "diia_card"
  • r_card — validates whether the customer used a Rozetka card for payment.
  • diia_card — validates whether the customer used a Diia card for payment.

Responses

Callbacks

Request samples

Content type
application/json
{
  • "callback_url": "string",
  • "currency": "string",
  • "customer": {
    },
  • "mode": "direct",
  • "payload": "string",
  • "result_url": "string",
  • "confirm": true,
  • "orders": [
    ],
  • "batch_external_id": "string",
  • "checkout_ttl": 720,
  • "campaign_name": "r_card"
}

Response samples

Content type
application/json
{
  • "id": "0",
  • "action_required": true,
  • "action": {
    },
  • "batch_details": {
    },
  • "payment_method": {
    },
  • "order_details": [
    ],
  • "batch_external_id": "string",
  • "receipt_url": "string"
}

Callback payload samples

Callback
POST: Processing callback
Content type
application/json
{
  • "action": {
    },
  • "action_required": true,
  • "details": {
    },
  • "external_id": "string",
  • "unified_external_id": "string",
  • "batch_external_id": "string",
  • "id": "0",
  • "project_id": "string",
  • "is_success": true,
  • "receipt_url": "string",
  • "payment_method": {
    },
  • "customer": {
    },
  • "operation": "payment"
}

Confirm batch acquiring payment

Confirms batch payment and performs desired operation.

Authorizations:
BasicAuth(BasicAuthcustomerAuth) (BasicAuthonBehalfOf) (BasicAuthonBehalfOfcustomerAuth)
Request Body schema: application/json
callback_url
string <url>

URL to receive callback after finalization of batch operation.

currency
required
string

Batch payment currency.

payload
string

Additional data transmitted with the batch payment confirmation request. One parameter for the entire confirmation request.

Array of objects (BatchConfirmOrder) <= 40 items

List of orders in batch to confirm.

batch_external_id
required
string

External identifier from the merchant. Ought to be the same as during batch creation.

Responses

Callbacks

Request samples

Content type
application/json
{
  • "callback_url": "string",
  • "currency": "string",
  • "payload": "string",
  • "orders": [
    ],
  • "batch_external_id": "string"
}

Response samples

Content type
application/json
{
  • "id": "0",
  • "action_required": true,
  • "action": {
    },
  • "batch_details": {
    },
  • "payment_method": {
    },
  • "order_details": [
    ],
  • "batch_external_id": "string",
  • "receipt_url": "string"
}

Callback payload samples

Callback
POST: Processing callback
Content type
application/json
{
  • "action": {
    },
  • "action_required": true,
  • "details": {
    },
  • "external_id": "string",
  • "unified_external_id": "string",
  • "batch_external_id": "string",
  • "id": "0",
  • "project_id": "string",
  • "is_success": true,
  • "receipt_url": "string",
  • "payment_method": {
    },
  • "customer": {
    },
  • "operation": "payment"
}

Cancel batch acquiring payment

Cancels batch payment and performs desired operation.

Authorizations:
BasicAuth(BasicAuthcustomerAuth) (BasicAuthonBehalfOf) (BasicAuthonBehalfOfcustomerAuth)
Request Body schema: application/json
callback_url
string <url>

URL to receive callback after finalization of batch operation.

payload
string

Additional data transmitted with the batch payment cancellation request. One parameter for the entire cancellation request.

batch_external_id
required
string

External identifier from the merchant. Ought to be the same as during batch creation.

Responses

Callbacks

Request samples

Content type
application/json
{
  • "callback_url": "string",
  • "payload": "string",
  • "batch_external_id": "string"
}

Response samples

Content type
application/json
{
  • "id": "0",
  • "action_required": true,
  • "action": {
    },
  • "batch_details": {
    },
  • "payment_method": {
    },
  • "order_details": [
    ],
  • "batch_external_id": "string",
  • "receipt_url": "string"
}

Callback payload samples

Callback
POST: Processing callback
Content type
application/json
{
  • "action": {
    },
  • "action_required": true,
  • "details": {
    },
  • "external_id": "string",
  • "unified_external_id": "string",
  • "batch_external_id": "string",
  • "id": "0",
  • "project_id": "string",
  • "is_success": true,
  • "receipt_url": "string",
  • "payment_method": {
    },
  • "customer": {
    },
  • "operation": "payment"
}

payouts

Online and offline payouts

Create payout request

Creates a payout request with desired payout type.

Authorizations:
BasicAuth(BasicAuthcustomerAuth) (BasicAuthonBehalfOf) (BasicAuthonBehalfOfcustomerAuth)
Request Body schema: application/json
required
object
required
object
required
object (PayoutRecipient)

Responses

Callbacks

Request samples

Content type
application/json
{
  • "order": {
    },
  • "payer": {
    },
  • "recipient": {
    }
}

Response samples

Content type
application/json
{
  • "currency": "string",
  • "description": "string",
  • "external_id": "string",
  • "fc_id": 0,
  • "original_amount": "0",
  • "partner_key_id": "string",
  • "payer_account": {
    },
  • "payer_amount": "0",
  • "payer_outer_fee": "0",
  • "payment_type": "string",
  • "payout_type": "string",
  • "recipient_user": {
    },
  • "status": "init",
  • "status_code": "string",
  • "status_code_description": "string",
  • "transaction_id": "string"
}

Callback payload samples

Callback
POST: Payout result.
Content type
application/json
{
  • "transaction_id": "string",
  • "partner_key_id": "string",
  • "external_id": "string",
  • "fc_id": 0,
  • "currency": "string",
  • "original_amount": "0",
  • "payer_amount": "0",
  • "payer_outer_fee": "0",
  • "recipient_amount": "0",
  • "payment_type": "string",
  • "payout_type": "string",
  • "status": "init",
  • "status_code": "string",
  • "status_code_description": "string"
}

Get transaction status

Get payout transaction status

Authorizations:
BasicAuth(BasicAuthcustomerAuth) (BasicAuthonBehalfOf) (BasicAuthonBehalfOfcustomerAuth)
query Parameters
external_id
required
any

Identifier of the transaction in your platform

Responses

Response samples

Content type
application/json
{
  • "currency": "string",
  • "description": "string",
  • "external_id": "string",
  • "fc_id": 0,
  • "original_amount": "0",
  • "partner_key_id": "string",
  • "payer_account": {
    },
  • "payer_amount": "0",
  • "payer_outer_fee": "0",
  • "payment_type": "string",
  • "payout_type": "string",
  • "recipient_user": {
    },
  • "status": "init",
  • "status_code": "string",
  • "status_code_description": "string",
  • "transaction_id": "string"
}

Get merchant account balance

Returns available and commited balance of the merchant. Useful to track available funds for payout requests.

Authorizations:
BasicAuth(BasicAuthcustomerAuth) (BasicAuthonBehalfOf) (BasicAuthonBehalfOfcustomerAuth)
query Parameters
merchant_entity_id
required
any

Merchant entity id

Responses

Response samples

Content type
application/json
{
  • "available_amount": 30523.44,
  • "commitment_amount": 199.99
}

Resend payout callback

Resends payout callback

Authorizations:
BasicAuth(BasicAuthcustomerAuth) (BasicAuthonBehalfOf) (BasicAuthonBehalfOfcustomerAuth)
Request Body schema: application/json
external_id
required
string

Responses

Request samples

Content type
application/json
{
  • "external_id": "string"
}

Response samples

Content type
application/json
{
  • "code": "authorization_failed",
  • "message": "string",
  • "param": "string",
  • "payment_id": "string",
  • "type": "invalid_request_error",
  • "error_id": "string"
}

Cancel cash payout

Cancels cash payout

Authorizations:
BasicAuth(BasicAuthcustomerAuth) (BasicAuthonBehalfOf) (BasicAuthonBehalfOfcustomerAuth)
Request Body schema: application/json
external_id
required
string

Responses

Request samples

Content type
application/json
{
  • "external_id": "string"
}

Response samples

Content type
application/json
{
  • "currency": "string",
  • "description": "string",
  • "external_id": "string",
  • "fc_id": 0,
  • "original_amount": "0",
  • "partner_key_id": "string",
  • "payer_account": {
    },
  • "payer_amount": "0",
  • "payer_outer_fee": "0",
  • "payment_type": "string",
  • "payout_type": "string",
  • "recipient_user": {
    },
  • "status": "init",
  • "status_code": "string",
  • "status_code_description": "string",
  • "transaction_id": "string"
}

payparts

Accept online pay-parts orders

Create payparts order

Creates order for payparts using one of the available methods. For now, only the direct mode is available.

Common response statuses:

  • Status: success Status Code: contract_was_signed_on_client_side - order was signed on client side, separate confirmation request needed
  • Status: success Status Code: transaction_successful - final success status. Order was confirmed automatically or bank has one stage confirmation
  • Status: pending Status Code: pending - wait for client signing
  • Status: failure Status Code: any - depends on error
Authorizations:
BasicAuth(BasicAuthcustomerAuth) (BasicAuthonBehalfOf) (BasicAuthonBehalfOfcustomerAuth)
Request Body schema: application/json
auto_confirm_after_success
boolean
Default: false

If set to true, order confirmation will be done automatically after creation becomes successful (contract was signed on client side). If set to false, you should call the confirm endpoint manually to perform order confirmation after successful creation.

bank_name
required
string
mode
required
string (PayPartsPaymentMode)
Enum: "hosted" "direct"

Describes the way of the integration:

  • hosted - returns checkout page, where user can enter his payment details.
  • direct - requires customer's payment details in request. Usually returns url for second factor (3DS or other).
external_id
required
string
unified_external_id
string
amount
required
number >= 1
currency
required
string
parts_count
required
integer

Every bank supports different ranges of parts count. Check this values by using the Get banks info endpoint.

description
required
string

Order description can have from 1 to 256 characters.

payload
string
Array of objects (PayPartsProduct)
result_url
string <url>

Maximum length is about 2048 characters. Required for bank_name = rozetkapay.

callback_url
string <url>
required
object (PayPartsCustomer)
Array of objects (PayPartsDelivery)

Optional delivery information.

Responses

Callbacks

Request samples

Content type
application/json
{
  • "auto_confirm_after_success": false,
  • "bank_name": "string",
  • "mode": "hosted",
  • "external_id": "string",
  • "unified_external_id": "string",
  • "amount": 1,
  • "currency": "string",
  • "parts_count": 0,
  • "description": "string",
  • "payload": "string",
  • "products": [
    ],
  • "result_url": "string",
  • "callback_url": "string",
  • "customer": {
    },
  • "deliveries": [
    ]
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "external_id": "string",
  • "unified_external_id": "string",
  • "is_success": true,
  • "details": {
    },
  • "action_required": true,
  • "action": {
    },
  • "receipt_url": "string"
}

Callback payload samples

Callback
POST: PayParts processing callback
Content type
application/json
{
  • "id": "string",
  • "external_id": "string",
  • "unified_external_id": "string",
  • "is_success": true,
  • "details": {
    },
  • "action_required": true,
  • "action": {
    },
  • "receipt_url": "string"
}

Confirm payparts order

Confirm payparts order

Common response statuses:

  • Status: success Status Code: transaction_successful - payparts order was successfully confirmed
  • Status: failure Status Code: any - depends on error
Authorizations:
BasicAuth(BasicAuthcustomerAuth) (BasicAuthonBehalfOf) (BasicAuthonBehalfOfcustomerAuth)
Request Body schema: application/json
external_id
required
string
callback_url
string <url>
payload
string

Responses

Callbacks

Request samples

Content type
application/json
{
  • "external_id": "string",
  • "callback_url": "string",
  • "payload": "string"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "external_id": "string",
  • "unified_external_id": "string",
  • "is_success": true,
  • "details": {
    },
  • "action_required": true,
  • "action": {
    },
  • "receipt_url": "string"
}

Callback payload samples

Callback
POST: PayParts processing callback
Content type
application/json
{
  • "id": "string",
  • "external_id": "string",
  • "unified_external_id": "string",
  • "is_success": true,
  • "details": {
    },
  • "action_required": true,
  • "action": {
    },
  • "receipt_url": "string"
}

Cancel payparts order

Cancel payparts order

Common response statuses:

  • Status: success Status Code: cancel_successful - payparts order was successfully canceled
  • Status: failure Status Code: any - depends on error
Authorizations:
BasicAuth(BasicAuthcustomerAuth) (BasicAuthonBehalfOf) (BasicAuthonBehalfOfcustomerAuth)
Request Body schema: application/json
external_id
required
string
callback_url
string <url>
payload
string

Responses

Callbacks

Request samples

Content type
application/json
{
  • "external_id": "string",
  • "callback_url": "string",
  • "payload": "string"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "external_id": "string",
  • "unified_external_id": "string",
  • "is_success": true,
  • "details": {
    },
  • "action_required": true,
  • "action": {
    },
  • "receipt_url": "string"
}

Callback payload samples

Callback
POST: PayParts processing callback
Content type
application/json
{
  • "id": "string",
  • "external_id": "string",
  • "unified_external_id": "string",
  • "is_success": true,
  • "details": {
    },
  • "action_required": true,
  • "action": {
    },
  • "receipt_url": "string"
}

Refund

Refund transaction after confirmation.

Common response statuses:

  • Status: success Status Code: refund_successful - payparts installment was successfully refunded
  • Status: pending Status Code: pending - wait for bank refund, final status will be set via callback
  • Status: failure Status Code: any - depends on error
Authorizations:
BasicAuth(BasicAuthcustomerAuth) (BasicAuthonBehalfOf) (BasicAuthonBehalfOfcustomerAuth)
Request Body schema: application/json
external_id
required
string
amount
number >= 1
currency
string
callback_url
string <url>
payload
string
Array of objects (PayPartsProduct)

List of products for refund. Required in case of partial refund for projects with enabled fiscalization. For full refund products would be taken from create request.

Responses

Callbacks

Request samples

Content type
application/json
{
  • "external_id": "string",
  • "amount": 1,
  • "currency": "string",
  • "callback_url": "string",
  • "payload": "string",
  • "products": [
    ]
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "external_id": "string",
  • "unified_external_id": "string",
  • "is_success": true,
  • "details": {
    },
  • "action_required": true,
  • "action": {
    },
  • "receipt_url": "string"
}

Callback payload samples

Callback
POST: PayParts processing callback
Content type
application/json
{
  • "id": "string",
  • "external_id": "string",
  • "unified_external_id": "string",
  • "is_success": true,
  • "details": {
    },
  • "action_required": true,
  • "action": {
    },
  • "receipt_url": "string"
}

Retry Refund

If merchant's balance is not enough to process refund, this refund will be deferred and retried automatically for some period until it fails for some reason, or balance became enough to process it. If the refund retrying is timed out, the transaction will became failed with refund_is_cancelled_by_system status. This endpoint allows to retry refund transaction manually if it has pending status.

Authorizations:
BasicAuth(BasicAuthcustomerAuth) (BasicAuthonBehalfOf) (BasicAuthonBehalfOfcustomerAuth)
Request Body schema: application/json
external_id
required
string

Responses

Callbacks

Request samples

Content type
application/json
{
  • "external_id": "string"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "external_id": "string",
  • "unified_external_id": "string",
  • "is_success": true,
  • "details": {
    },
  • "action_required": true,
  • "action": {
    },
  • "receipt_url": "string"
}

Callback payload samples

Callback
POST: PayParts processing callback
Content type
application/json
{
  • "id": "string",
  • "external_id": "string",
  • "unified_external_id": "string",
  • "is_success": true,
  • "details": {
    },
  • "action_required": true,
  • "action": {
    },
  • "receipt_url": "string"
}

Cancel Refund

If merchant's balance is not enough to process refund, this refund will be deferred and retried automatically for some period until it fails or balance became enough to process it. If the refund retrying process is timed out, the transaction will became failed with refund_is_cancelled_by_system status. This endpoint allows to cancel refund transaction manually if it has pending status. In this case the status it will be set to refund_is_cancelled_by_initiator.

Authorizations:
BasicAuth(BasicAuthcustomerAuth) (BasicAuthonBehalfOf) (BasicAuthonBehalfOfcustomerAuth)
Request Body schema: application/json
external_id
required
string

Responses

Callbacks

Request samples

Content type
application/json
{
  • "external_id": "string"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "external_id": "string",
  • "unified_external_id": "string",
  • "is_success": true,
  • "details": {
    },
  • "action_required": true,
  • "action": {
    },
  • "receipt_url": "string"
}

Callback payload samples

Callback
POST: PayParts processing callback
Content type
application/json
{
  • "id": "string",
  • "external_id": "string",
  • "unified_external_id": "string",
  • "is_success": true,
  • "details": {
    },
  • "action_required": true,
  • "action": {
    },
  • "receipt_url": "string"
}

Operation info

Get operation info by external id and operation id

Authorizations:
BasicAuth(BasicAuthcustomerAuth) (BasicAuthonBehalfOf) (BasicAuthonBehalfOfcustomerAuth)
query Parameters
external_id
required
any

External ID (unique identifier)

operation_id
required
any

Operation ID (unique identifier)

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "external_id": "string",
  • "unified_external_id": "string",
  • "is_success": true,
  • "details": {
    },
  • "action_required": true,
  • "action": {
    },
  • "receipt_url": "string"
}

Operations info

Get operations info by id

Authorizations:
BasicAuth(BasicAuthcustomerAuth) (BasicAuthonBehalfOf) (BasicAuthonBehalfOfcustomerAuth)
query Parameters
external_id
required
any

External ID (unique identifier)

Responses

Response samples

Content type
application/json
{
  • "external_id": "string",
  • "unified_external_id": "string",
  • "amount": "0",
  • "amount_confirmed": "0",
  • "amount_canceled": "0",
  • "amount_refunded": "0",
  • "currency": "string",
  • "purchased": true,
  • "purchase_details": {
    },
  • "confirmed": true,
  • "confirmation_details": [
    ],
  • "refunded": true,
  • "refund_details": [
    ],
  • "canceled": true,
  • "cancellation_details": [
    ],
  • "receipt_url": "string",
  • "created_at": "2019-08-24T14:15:22Z",
  • "action_required": true,
  • "action": {
    },
  • "customer": {
    },
  • "delivery_details": {
    },
  • "order_recipient": {
    }
}

Get banks info

Get banks info which includes bank name and available periods

Authorizations:
BasicAuth(BasicAuthcustomerAuth) (BasicAuthonBehalfOf) (BasicAuthonBehalfOfcustomerAuth)
query Parameters
include_fees
any

Include fees

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Resend callback

Prepares the data about the specified payment of transaction and sends it into callback_url which was provided on the payment step. If the operation field is not provided the callback will be sent for the last operation.

Authorizations:
BasicAuth(BasicAuthcustomerAuth) (BasicAuthonBehalfOf) (BasicAuthonBehalfOfcustomerAuth)
Request Body schema: application/json
external_id
required
string
operation
string (OperationType)
Enum: "payment" "confirm" "refund" "cancel" "lookup" "recurrent"

Responses

Request samples

Content type
application/json
{
  • "external_id": "string",
  • "operation": "payment"
}

Response samples

Content type
application/json
{
  • "code": "authorization_failed",
  • "message": "string",
  • "param": "string",
  • "payment_id": "string",
  • "type": "invalid_request_error",
  • "error_id": "string"
}

alternative-payment

Accept online payments via alternative providers

Create alternative payment

Creates alternative payment

Authorizations:
BasicAuth(BasicAuthcustomerAuth) (BasicAuthonBehalfOf) (BasicAuthonBehalfOfcustomerAuth)
Request Body schema: application/json
provider
required
string (AlternativePaymentProvider)
Enum: "imoje" "leaselink" "santander" "przelewy24"

Available providers where the payment can be created.

external_id
required
string
unified_external_id
string
amount
required
number >= 1
currency
required
string

PLN value is required if customer.payment_method.type is blik, blik_paylater, leasing.

description
required
string

Order description can have from 1 to 256 characters.

payload
string
required
Array of objects (AlternativePaymentProduct)

Products are required if provider value is one of the following: santander.

result_url
string <url>

Maximum length is about 2048 characters.

callback_url
string <url>
required
object (AlternativePaymentCustomerDetails)

Responses

Request samples

Content type
application/json
{
  • "provider": "imoje",
  • "external_id": "string",
  • "unified_external_id": "string",
  • "amount": 1,
  • "currency": "string",
  • "description": "string",
  • "payload": "string",
  • "products": [
    ],
  • "result_url": "string",
  • "callback_url": "string",
  • "customer": {
    }
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "external_id": "string",
  • "unified_external_id": "string",
  • "details": {
    }
}

Refund

Refund transaction after confirmation.

Common response statuses:

  • Status: success Status Code: refund_successful - alternative payment installment was successfully refunded
  • Status: pending Status Code: pending - wait for bank refund, final status will be set via callback
  • Status: failure Status Code: any - depends on error
Authorizations:
BasicAuth(BasicAuthcustomerAuth) (BasicAuthonBehalfOf) (BasicAuthonBehalfOfcustomerAuth)
Request Body schema: application/json
external_id
required
string
amount
number >= 1
currency
string
callback_url
string <url>
payload
string
Array of objects (PayPartsProduct)

List of products for refund. Required in case of partial refund for projects with enabled fiscalization. For full refund products would be taken from create request.

Responses

Callbacks

Request samples

Content type
application/json
{
  • "external_id": "string",
  • "amount": 1,
  • "currency": "string",
  • "callback_url": "string",
  • "payload": "string",
  • "products": [
    ]
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "external_id": "string",
  • "unified_external_id": "string",
  • "details": {
    }
}

Callback payload samples

Callback
POST: PayParts processing callback
Content type
application/json
{
  • "id": "string",
  • "external_id": "string",
  • "unified_external_id": "string",
  • "is_success": true,
  • "details": {
    },
  • "action_required": true,
  • "action": {
    },
  • "receipt_url": "string"
}

Operation info

Get operation info by external id and operation id

Authorizations:
BasicAuth(BasicAuthcustomerAuth) (BasicAuthonBehalfOf) (BasicAuthonBehalfOfcustomerAuth)
query Parameters
external_id
required
any

External ID (unique identifier)

operation_id
required
any

Operation ID (unique identifier)

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "external_id": "string",
  • "unified_external_id": "string",
  • "details": {
    }
}

Operations info

Get operations info by id

Authorizations:
BasicAuth(BasicAuthcustomerAuth) (BasicAuthonBehalfOf) (BasicAuthonBehalfOfcustomerAuth)
query Parameters
external_id
required
any

External ID (unique identifier)

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "external_id": "string",
  • "unified_external_id": "string",
  • "amount": "0",
  • "amount_refunded": "0",
  • "purchased": true,
  • "purchase_details": [
    ],
  • "refunded": true,
  • "refund_details": [
    ],
  • "customer": {
    }
}

Resend callback

Prepares the data about the specified payment of transaction and sends it into callback_url which was provided on the payment step. If the operation field is not provided the callback will be sent for the last operation.

Authorizations:
BasicAuth(BasicAuthcustomerAuth) (BasicAuthonBehalfOf) (BasicAuthonBehalfOfcustomerAuth)
Request Body schema: application/json
external_id
required
string
operation
string
Enum: "create" "refund"

Responses

Request samples

Content type
application/json
{
  • "external_id": "string",
  • "operation": "create"
}

Response samples

Content type
application/json
{
  • "code": "authorization_failed",
  • "message": "string",
  • "param": "string",
  • "payment_id": "string",
  • "type": "invalid_request_error",
  • "error_id": "string"
}

payment-instructions

Create and manage payment instructions for batch processing

Create payment instructions

Creates payment instructions.

This endpoint allows you to create multiple payment instructions in a single batch.

Processing Types:

  • cardpay - Process instructions via CardPay
  • ppay - Process instructions via PayParts
Authorizations:
BasicAuth(BasicAuthcustomerAuth) (BasicAuthonBehalfOf) (BasicAuthonBehalfOfcustomerAuth)
Request Body schema: application/json
processing_type
required
string
Enum: "cardpay" "ppay"

Processing type to use

method
required
string
Enum: "auth" "purchase"

Payment method

currency
required
string^[A-Z]{3}$

Currency code (ISO 4217)

batch_external_id
string

External batch identifier

object

Payer information

required
Array of objects (PaymentInstructionOrder) non-empty

Responses

Request samples

Content type
application/json
{
  • "processing_type": "cardpay",
  • "method": "auth",
  • "currency": "string",
  • "batch_external_id": "string",
  • "payer": {
    },
  • "orders": [
    ]
}

Response samples

Content type
application/json
{
  • "code": "authorization_failed",
  • "message": "string",
  • "param": "string",
  • "payment_id": "string",
  • "type": "invalid_request_error",
  • "error_id": "string"
}

Decline payment instruction

Declines a payment instruction and redirects to the declined payment page.

This endpoint is used to decline payment instructions that are still pending. The endpoint does not require authentication and can be called directly from payment links.

Important Notes:

  • This endpoint does not require authentication
  • Returns a redirect (HTTP 302) to the declined payment instruction page
  • Can only decline instructions that are not has a transactions
query Parameters
project_id
required
string <uuid>

Project ID that owns the payment instruction

payment_instruction_id
required
string <uuid>

Payment instruction ID to decline

Responses

Response samples

Content type
application/json
{
  • "code": "authorization_failed",
  • "message": "string",
  • "param": "string",
  • "payment_id": "string",
  • "type": "invalid_request_error",
  • "error_id": "string"
}

customers

Get information about your customers

Delete customer payment from wallet

Deletes customer payment method from wallet. Either X-CUSTOMER-AUTH header or external_id param is required.

Authorizations:
BasicAuth(BasicAuthcustomerAuth) (BasicAuthonBehalfOf) (BasicAuthonBehalfOfcustomerAuth)
query Parameters
external_id
any

customer id in your platform

Request Body schema: application/json
option_id
required
string <uuid>

Card identifier in wallet

type
required
any
Value: "card"

Responses

Request samples

Content type
application/json
{
  • "option_id": "ab22e710-5ce4-4e7e-a3db-bd6fdad8fe36",
  • "type": "card"
}

Response samples

Content type
application/json
{
  • "delete": true,
  • "option_id": "ab22e710-5ce4-4e7e-a3db-bd6fdad8fe36",
  • "type": "cc_token"
}

Get customer information & wallet

Returns customer details including payment methods, if saved. Either X-CUSTOMER-AUTH header or external_id param is required.

Authorizations:
BasicAuth(BasicAuthcustomerAuth) (BasicAuthonBehalfOf) (BasicAuthonBehalfOfcustomerAuth)
query Parameters
external_id
any

customer id in your platform

Responses

Response samples

Content type
application/json
{
  • "address": "string",
  • "city": "string",
  • "country": "string",
  • "email": "[email protected]",
  • "external_id": "string",
  • "first_name": "string",
  • "last_name": "string",
  • "patronym": "string",
  • "phone": "string",
  • "postal_code": "string",
  • "rid": "06367b17-91f0-49c2-b4f0-ec544c175798",
  • "wallet": [
    ]
}

Add customer payment to wallet

Adds new payment method to wallet. Either X-CUSTOMER-AUTH header or external_id param is required.

Authorizations:
BasicAuth(BasicAuthcustomerAuth) (BasicAuthonBehalfOf) (BasicAuthonBehalfOfcustomerAuth)
query Parameters
external_id
any

customer id in your platform

Request Body schema: application/json
callback_url
string <url>

URL where callback will be sent in case of successful or unsuccessful card confirmation

Required for hosted mode.

required
object

Based on your choice in the type field, one of the fields becomes required too.

Required for direct mode.

result_url
string <url>

URL where user will be redirected from the checkout in case if mode set to hosted

make_default
boolean
Default: false

Automatically set new payment method as default in wallet, if it was confirmed.

mode
required
string (PaymentMode)
Enum: "direct" "hosted" "express_checkout"

Describes the way of the integration:

  • hosted - returns checkout page, where user can enter his payment details.
  • direct - requires customer's payment details in request. Usually returns url for second factor (3DS or other).
  • express_checkout - requires list of products in request. Returns checkout url.
object (BrowserFingerprint)

Responses

Callbacks

Request samples

Content type
application/json
{
  • "callback_url": "string",
  • "payment_method": {
    },
  • "result_url": "string",
  • "make_default": false,
  • "mode": "direct",
  • "fingerprint": {
    }
}

Response samples

Content type
application/json
{
  • "action": {
    },
  • "action_required": true,
  • "created_at": "2019-08-24T14:15:22Z",
  • "payment_method": {
    },
  • "status": "init",
  • "operation": "add_payment_method",
  • "customer": {
    }
}

Callback payload samples

Callback
POST: Status callback after 3ds action
Content type
application/json
{
  • "action": {
    },
  • "action_required": true,
  • "created_at": "2019-08-24T14:15:22Z",
  • "payment_method": {
    },
  • "status": "init",
  • "operation": "add_payment_method",
  • "customer": {
    }
}

Find customer wallet item

Returns customer wallet item. Either X-CUSTOMER-AUTH header or external_id param is required.

Authorizations:
BasicAuth(BasicAuthcustomerAuth) (BasicAuthonBehalfOf) (BasicAuthonBehalfOfcustomerAuth)
query Parameters
external_id
any

customer id in your platform

option_id
any

option id of your payment

Responses

Response samples

Content type
application/json
{
  • "card": {
    },
  • "option_id": "ab22e710-5ce4-4e7e-a3db-bd6fdad8fe36",
  • "is_default": true,
  • "name": "string",
  • "type": "card"
}

Get confirmation status of the card in wallet

Returns confirmation status of the payment method is wallet. Either X-CUSTOMER-AUTH header or external_id param is required.

Authorizations:
BasicAuth(BasicAuthcustomerAuth) (BasicAuthonBehalfOf) (BasicAuthonBehalfOfcustomerAuth)
query Parameters
external_id
any

customer id in your platform

option_id
required
any

id of the payment method in wallet

Responses

Response samples

Content type
application/json
{
  • "card": {
    },
  • "option_id": "ab22e710-5ce4-4e7e-a3db-bd6fdad8fe36",
  • "is_confirmed": true,
  • "type": "card",
  • "status": "init"
}

Set default card

Set default payment method in wallet. Either X-CUSTOMER-AUTH header or external_id param is required.

Authorizations:
BasicAuth(BasicAuthcustomerAuth) (BasicAuthonBehalfOf) (BasicAuthonBehalfOfcustomerAuth)
query Parameters
external_id
any

customer id in your platform

Request Body schema: application/json
option_id
required
string <uuid>
type
required
string
Value: "card"

Responses

Request samples

Content type
application/json
{
  • "option_id": "ab22e710-5ce4-4e7e-a3db-bd6fdad8fe36",
  • "type": "card"
}

Response samples

Content type
application/json
{
  • "option_id": "ab22e710-5ce4-4e7e-a3db-bd6fdad8fe36",
  • "type": "card",
  • "success": true
}

subscriptions

Create and manage paid subscriptions

Get plans

Get plans for the platform.

Authorizations:
BasicAuth(BasicAuthcustomerAuth) (BasicAuthonBehalfOf) (BasicAuthonBehalfOfcustomerAuth)
query Parameters
plan_id
string <uuid>
Example: plan_id=ce1b5835-74f7-43f9-8ec2-621ff1ecb487

Plan identifier.

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Create subscription plan

Create a subscription plan.

Authorizations:
BasicAuth(BasicAuthcustomerAuth) (BasicAuthonBehalfOf) (BasicAuthonBehalfOfcustomerAuth)
Request Body schema: application/json
name
required
string

Plan name.

description
string

Description for the plan.

price
required
integer <decimal>

Plan price in main currency units. For example, value of 30 equals 30 UAH plan price.

Array of objects (PlanCallbackRequest)

A list of api keys and URLs for subscription update callbacks.

currency
required
string

Currency in ISO 4217 format.

platforms
Array of strings <uuid> [ items <uuid > ]

A list of other platforms that can access this plan.

frequency_type
required
string <string> (PlanFrequencyType)
Enum: "daily" "weekly" "monthly" "yearly"

The time interval type of a plan period. For example, to set a plan period for 4 weeks use frequency=4 and frequency_type=weekly.

frequency
required
integer

The number of frequency_types in a single plan payment period. For example, to set a plan payment period for 4 weeks use frequency=4 and frequency_type=weekly.

duration_periods
required
integer

The number of frequency_types in a plan duration period. For example, to set a plan duration period for 6 months use frequency=1, frequency_type=monthly, duration_periods=6.

start_date
required
string <date-time>

Plan start date-time in RFC3339 format.

end_date
string <date-time>

Optional end date-time for the plan in RFC3339 format.

Responses

Request samples

Content type
application/json
{
  • "name": "My plan name.",
  • "description": "My plan description",
  • "price": 30,
  • "callbacks": [],
  • "currency": "UAH",
  • "platforms": [
    ],
  • "frequency_type": "weekly",
  • "frequency": 4,
  • "duration_periods": 6,
  • "start_date": "2025-07-16T12:00:03Z",
  • "end_date": "2026-02-13T17:50:02Z"
}

Response samples

Content type
application/json
{
  • "created_at": "2025-07-14T12:00:03Z",
  • "currency": "UAH",
  • "description": "My plan description",
  • "end_date": "2026-02-13T00:00:00Z",
  • "frequency_type": "weekly",
  • "frequency": 4,
  • "duration_periods": 6,
  • "id": "69b2e00f-b837-4cda-a0d8-2ae3ba431409",
  • "state": "active",
  • "name": "My plan name.",
  • "platforms": [
    ],
  • "price": 30,
  • "start_date": "2025-07-14T00:00:00Z",
  • "updated_at": "2025-07-14T12:00:03Z"
}

Deactivate plan

Deactivate a target plan.

Authorizations:
BasicAuth(BasicAuthcustomerAuth) (BasicAuthonBehalfOf) (BasicAuthonBehalfOfcustomerAuth)
path Parameters
plan_id
required
string <uuid>
Example: ce1b5835-74f7-43f9-8ec2-621ff1ecb487

Plan identifier.

Responses

Response samples

Content type
application/json
{
  • "message": "string"
}

Get plan

Get a target plan by id.

Authorizations:
BasicAuth(BasicAuthcustomerAuth) (BasicAuthonBehalfOf) (BasicAuthonBehalfOfcustomerAuth)
path Parameters
plan_id
required
string <uuid>
Example: ce1b5835-74f7-43f9-8ec2-621ff1ecb487

Plan identifier.

Responses

Response samples

Content type
application/json
{
  • "created_at": "2025-07-14T12:00:03Z",
  • "currency": "UAH",
  • "description": "My plan description",
  • "end_date": "2026-02-13T00:00:00Z",
  • "frequency_type": "weekly",
  • "frequency": 4,
  • "duration_periods": 6,
  • "id": "69b2e00f-b837-4cda-a0d8-2ae3ba431409",
  • "state": "active",
  • "name": "My plan name.",
  • "platforms": [
    ],
  • "price": 30,
  • "start_date": "2025-07-14T00:00:00Z",
  • "updated_at": "2025-07-14T12:00:03Z"
}

Update plan

Update target plan by ID.

Authorizations:
BasicAuth(BasicAuthcustomerAuth) (BasicAuthonBehalfOf) (BasicAuthonBehalfOfcustomerAuth)
path Parameters
plan_id
required
string <uuid>
Example: ce1b5835-74f7-43f9-8ec2-621ff1ecb487

Plan identifier.

Request Body schema: application/json
description
string

New plan description.

name
string

New plan name.

Array of objects (PlanCallbackRequest)

New list of api keys and URLs for subscription update callbacks. Overrides currently stored list.

Responses

Request samples

Content type
application/json
{
  • "description": "My new plan description",
  • "name": "My new plan name.",
  • "callbacks": []
}

Response samples

Content type
application/json
{
  • "message": "string"
}

Create subscription

Create subscription

Authorizations:
BasicAuth(BasicAuthcustomerAuth) (BasicAuthonBehalfOf) (BasicAuthonBehalfOfcustomerAuth)
header Parameters
X-CUSTOMER-AUTH
string <jwt>

User access token.

Request Body schema: application/json
auto_renew
boolean

Controls whether the subscription should automatically renew after the due date.

callback_url
string <url>

The URL where asynchronous subscription updates will be sent.

required
object (CustomerRequestUserDetails)
delegate_api_key
string <uuid>

Project API key to delegate recurrent payments to.

description
string

Description for the subscription.

external_id
string

Identifier to link the subscription within partner system. Currently used by Rozetka only.

external_premium_id
string

Identifier to link the subscription within partner system. Currently used by Rozetka only.

plan_id
required
string <uuid>

The corresponding plan identifier.

price
integer <decimal>

Subscription price in main currency units. For example, value of 30 equals 30 UAH subscription price. In case the price is not specified or has value of 0, plan price will be used instead.

recurrent_id
string <number>

The recurrent id for the subscription payments.

result_url
required
string <url>

The URL where user will be redirected after successful payment.

start_date
required
string <date-time>

The start date of the subscription. Date-time should be specified in RFC3339 format, UTC timezone.

trial_periods
number <integer>

The amount of trial periods assigned to the subscription.

trial_periodic_payments
boolean

Specifies, whether to apply periodic payments for trial subscription instead of single initial payment in case trial_periods value is more than one.

unified_external_id
string

Identifier to link the subscription within partner system. Currently used by Rozetka only.

use_plan_price_on_auto_renew
boolean

Controls whether the subscription should use the plan price instead the of the price provided in subscription data when the automatic subscription renew is performed.

gifted_periods
number <integer>

The amount of gifted periods assigned to the subscription.

Responses

Callbacks

Request samples

Content type
application/json
{
  • "auto_renew": true,
  • "customer": {
    },
  • "delegate_api_key": "5c226db4-c088-43f5-8d7a-809ac3718d66",
  • "description": "My subscription description",
  • "external_id": "9i8h7g6f5e4d",
  • "external_premium_id": "1a2b3c4d5e",
  • "plan_id": "d38bdf4e-cbd8-46f5-87fa-538dd7618731",
  • "price": 3000,
  • "recurrent_id": "593292035525113984",
  • "start_date": "2025-07-14T10:12:04Z",
  • "trial_periods": 2,
  • "trial_periodic_payments": true,
  • "unified_external_id": "5e4d3c2b1a",
  • "use_plan_price_on_auto_renew": true,
  • "gifted_periods": 2
}

Response samples

Content type
application/json
{
  • "payment": {
    },
  • "subscription": {
    }
}

Callback payload samples

Callback
POST: Subscription callbacks
Content type
application/json
{
  • "event": "payment.processed",
  • "subscription": {
    },
  • "payment": {
    },
  • "payment_method": {
    },
  • "customer": {
    }
}

Get customer subscriptions

Get customer subscriptions

Authorizations:
BasicAuth(BasicAuthcustomerAuth) (BasicAuthonBehalfOf) (BasicAuthonBehalfOfcustomerAuth)
query Parameters
external_id
string

User ID in external system

header Parameters
X-CUSTOMER-AUTH
string <jwt>

User access token.

X-CUSTOMER-RID
string <uuid>
Deprecated
Example: 8ba5dd43-496e-4432-9c8a-74fdc74139fe

User RID identifier. RID header will be used if both are set. There is a deprecated way to call the endpoint. Please use access token with authorization_flow=processing instead if you need to do some non user-initiated action like background processing or calls from the admin.

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Deactivate subscription

Deactivate a target subscription.

Authorizations:
BasicAuth(BasicAuthcustomerAuth) (BasicAuthonBehalfOf) (BasicAuthonBehalfOfcustomerAuth)
path Parameters
subscription_id
required
string <uuid>
Example: 73a1e8d6-e4e9-4401-aa80-eeca85b830f7

Subscription identifier.

query Parameters
external_id
string

User ID in external system

header Parameters
X-CUSTOMER-RID
string <uuid>
Deprecated
Example: 8ba5dd43-496e-4432-9c8a-74fdc74139fe

User RID identifier. RID header will be used if both are set. There is a deprecated way to call the endpoint. Please use access token with authorization_flow=processing instead if you need to do some non user-initiated action like background processing or calls from the admin.

X-CUSTOMER-AUTH
string <jwt>

User access token.

Responses

Response samples

Content type
application/json
{
  • "message": "string"
}

Get subscription

Get a target subscription.

Authorizations:
BasicAuth(BasicAuthcustomerAuth) (BasicAuthonBehalfOf) (BasicAuthonBehalfOfcustomerAuth)
path Parameters
subscription_id
required
string <uuid>
Example: 73a1e8d6-e4e9-4401-aa80-eeca85b830f7

Subscription identifier.

query Parameters
external_id
string

User ID in external system

header Parameters
X-CUSTOMER-AUTH
string <jwt>

User access token.

X-CUSTOMER-RID
string <uuid>
Deprecated
Example: 8ba5dd43-496e-4432-9c8a-74fdc74139fe

User RID identifier. RID header will be used if both are set. There is a deprecated way to call the endpoint. Please use access token with authorization_flow=processing instead if you need to do some non user-initiated action like background processing or calls from the admin.

Responses

Response samples

Content type
application/json
{
  • "auto_renew": true,
  • "auto_renew_locked_until": "2026-02-14T12:00:03Z",
  • "callback_url": "string",
  • "created_at": "2025-07-14T12:00:03Z",
  • "currency": "UAH",
  • "customer_id": "0ee67270-297d-4ed4-993c-5b4ba95c4daf",
  • "delegate_api_key": "5c226db4-c088-43f5-8d7a-809ac3718d66",
  • "description": "My subscription description",
  • "due_date": "2025-09-14T00:00:00Z",
  • "external_id": "9i8h7g6f5e4d",
  • "external_premium_id": "1a2b3c4d5e",
  • "id": "9aed5896-a829-400f-bd3b-5b6f8508de6b",
  • "is_retrying": false,
  • "final_expiration_date": "2026-02-14T12:00:03Z",
  • "next_notification_date": "2025-09-13T00:00:00Z",
  • "next_payment_date": "2025-09-14T00:00:00Z",
  • "plan_id": "d38bdf4e-cbd8-46f5-87fa-538dd7618731",
  • "price": 3000,
  • "project_id": "d38bdf4e-cbd8-46f5-87fa-538dd7618731",
  • "recurrent_id": "573299035525213784",
  • "result_url": "http://example.com",
  • "start_date": "2025-07-14T00:00:00Z",
  • "state": "init",
  • "time_of_day": "0001-01-01T12:00:03Z",
  • "trial_periods": 2,
  • "trial_periodic_payments": true,
  • "trial_until": "2025-09-14T12:00:03Z",
  • "unified_external_id": "5e4d3c2b1a",
  • "updated_at": "2025-07-14T12:01:12Z",
  • "use_plan_price_on_auto_renew": true,
  • "gifted": true,
  • "gifted_from": "2025-07-14T00:00:00Z",
  • "gifted_until": "2025-07-14T00:00:00Z",
  • "gifted_unified_external_id": "5e4d3c2b1a"
}

Update subscription

Update a target subscription.

Authorizations:
BasicAuth(BasicAuthcustomerAuth) (BasicAuthonBehalfOf) (BasicAuthonBehalfOfcustomerAuth)
path Parameters
subscription_id
required
string <uuid>
Example: 1d85591b-891b-4b10-9d60-2078940d8e74

Subscription identifier.

query Parameters
external_id
string

User ID in external system

header Parameters
X-CUSTOMER-AUTH
string <jwt>

User access token.

X-CUSTOMER-RID
string <uuid>
Deprecated
Example: 8ba5dd43-496e-4432-9c8a-74fdc74139fe

User RID identifier. RID header will be used if both are set. There is a deprecated way to call the endpoint. Please use access token with authorization_flow=processing instead if you need to do some non user-initiated action like background processing or calls from the admin.

Request Body schema: application/json
auto_renew
boolean

Controls whether the subscription should automatically renew after the due date.

gifted_until
string

New end date of the gift period. The date cannot be earlier than tomorrow's date and less than the start date of the gift period. Cannot update if subscription hasn't gifted_from date.

Responses

Request samples

Content type
application/json
{
  • "auto_renew": true,
  • "gifted_until": "2025-12-11"
}

Response samples

Content type
application/json
{
  • "message": "string"
}

Gift subscription

Temporary endpoint to create a gifted subscription. The initial payment will be skipped for a gifted subscription and subscription will become active immediately after the successful response. In case the customer already has an active subscription for the same plan - no gifted subscription will be created, error response will be returned. Only recurrent_id payment option is supported.

Authorizations:
BasicAuth(BasicAuthcustomerAuth) (BasicAuthonBehalfOf) (BasicAuthonBehalfOfcustomerAuth)
header Parameters
X-CUSTOMER-RID
string <uuid>
Example: 8ba5dd43-496e-4432-9c8a-74fdc74139fe

User RID identifier. RID header will be used first if both are set. This is a suggested way of authorization for the current endpoint.

X-CUSTOMER-AUTH
string <jwt>

User access token.

Request Body schema: application/json
auto_renew
boolean

Controls whether the subscription should automatically renew after the due date.

callback_url
string <url>

The URL where asynchronous subscription updates will be sent.

required
object (CustomerRequestUserDetails)
delegate_api_key
string <uuid>

Project API key to delegate recurrent payments to.

description
string

Description for the subscription.

external_id
string

Identifier to link the subscription within partner system. Currently used by Rozetka only.

external_premium_id
string

Identifier to link the subscription within partner system. Currently used by Rozetka only.

plan_id
required
string <uuid>

The corresponding plan identifier.

price
integer <decimal>

Subscription price in main currency units. For example, value of 30 equals 30 UAH subscription price. In case the price is not specified or has value of 0, plan price will be used instead.

recurrent_id
required
string <number>

The recurrent id for the subscription payments.

result_url
required
string <url>

The URL where user will be redirected after successful payment.

start_date
required
string <date-time>

The start date of the subscription. Date-time should be specified in RFC3339 format, UTC timezone.

trial_periods
number <integer>
Deprecated

The amount of trial periods assigned to the subscription. Currently not in use and automatically reassigned to gifted_periods

unified_external_id
string

Identifier to link the subscription within partner system. Currently used by Rozetka only.

gifted_unified_external_id
string

Identifier to link the gifted subscription within partner system.

use_plan_price_on_auto_renew
boolean

Controls whether the subscription should use the plan price instead the of the price provided in subscription data when the automatic subscription renew is performed.

gifted_periods
number <integer>

The amount of gifted periods assigned to the subscription.

Responses

Callbacks

Request samples

Content type
application/json
{
  • "auto_renew": true,
  • "customer": {
    },
  • "delegate_api_key": "5c226db4-c088-43f5-8d7a-809ac3718d66",
  • "description": "My subscription description",
  • "external_id": "9i8h7g6f5e4d",
  • "external_premium_id": "1a2b3c4d5e",
  • "plan_id": "d38bdf4e-cbd8-46f5-87fa-538dd7618731",
  • "price": 3000,
  • "recurrent_id": "593292035525113984",
  • "start_date": "2025-07-14T10:12:04Z",
  • "trial_periods": 2,
  • "unified_external_id": "5e4d3c2b1a",
  • "gifted_unified_external_id": "5e4d3c2b1a",
  • "use_plan_price_on_auto_renew": true,
  • "gifted_periods": 2
}

Response samples

Content type
application/json
{
  • "payment": {
    },
  • "subscription": {
    }
}

Callback payload samples

Callback
POST: Subscription callbacks
Content type
application/json
{
  • "event": "payment.processed",
  • "subscription": {
    },
  • "payment": {
    },
  • "payment_method": {
    },
  • "customer": {
    }
}

Subscription payments

Return all payments of the target subscription.

Authorizations:
BasicAuth(BasicAuthcustomerAuth) (BasicAuthonBehalfOf) (BasicAuthonBehalfOfcustomerAuth)
path Parameters
subscription_id
required
string <uuid>
Example: 1d85591b-891b-4b10-9d60-2078940d8e74

Subscription identifier.

query Parameters
external_id
string

User ID in external system

header Parameters
X-CUSTOMER-AUTH
string <jwt>

User access token.

X-CUSTOMER-RID
string <uuid>
Deprecated
Example: 8ba5dd43-496e-4432-9c8a-74fdc74139fe

User RID identifier. RID header will be used if both are set. There is a deprecated way to call the endpoint. Please use access token with authorization_flow=processing instead if you need to do some non user-initiated action like background processing or calls from the admin.

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Cancel subscription

Cancel a target subscription with optional refund.

Authorizations:
BasicAuth(BasicAuthcustomerAuth) (BasicAuthonBehalfOf) (BasicAuthonBehalfOfcustomerAuth)
path Parameters
subscription_id
required
string <uuid>
Example: 1d85591b-891b-4b10-9d60-2078940d8e74

Subscription identifier.

query Parameters
external_id
string

User ID in external system

refund
boolean
Example: refund=true

Refund option.

header Parameters
X-CUSTOMER-AUTH
string <jwt>

User access token.

X-CUSTOMER-RID
string <uuid>
Deprecated
Example: 8ba5dd43-496e-4432-9c8a-74fdc74139fe

User RID identifier. RID header will be used if both are set. There is a deprecated way to call the endpoint. Please use access token with authorization_flow=processing instead if you need to do some non user-initiated action like background processing or calls from the admin.

Responses

Response samples

Content type
application/json
{
  • "message": "string"
}

Update payment method in subscription

Update payment method in subscription by id

Authorizations:
BasicAuth(BasicAuthcustomerAuth) (BasicAuthonBehalfOf) (BasicAuthonBehalfOfcustomerAuth)
path Parameters
subscription_id
required
string <uuid>
Example: 1d85591b-891b-4b10-9d60-2078940d8e74

Subscription identifier.

header Parameters
X-CUSTOMER-AUTH
string <jwt>

User access token.

Request Body schema: application/json
external_id
string

User's external ID (some unique id if rid or access token doesn't passed).

result_url
string <url>

The URL where user will be redirected after successful payment.

required
object (SubscriptionPaymentMethod)

Based on your choice in type field, one of the nested fields becomes required too. For example, when type is cc_token, the cc_token object with card details is required.

object (BrowserFingerprint)
auto_renew
boolean

Controls whether the subscription should automatically renew after the due date.

Responses

Callbacks

Request samples

Content type
application/json
{
  • "external_id": "string",
  • "payment_method": {
    },
  • "fingerprint": {
    },
  • "auto_renew": true
}

Response samples

Content type
application/json
{
  • "message": "string"
}

Callback payload samples

Callback
POST: Subscription callbacks
Content type
application/json
{
  • "event": "payment.processed",
  • "subscription": {
    },
  • "payment": {
    },
  • "payment_method": {
    },
  • "customer": {
    }
}

reports

Different reports based on your activity

Get payments report

Receive a report for a desired period with paid-out payments. You can both receive payments only for current login or for all possible sources within single business.

Authorizations:
BasicAuth(BasicAuthcustomerAuth) (BasicAuthonBehalfOf) (BasicAuthonBehalfOfcustomerAuth)
Request Body schema: application/json
date_from
required
string <date>
date_to
required
string <date>
fields
Array of strings

By default, all available fields are returned. See response schema for available field names.

scope
string
Default: "current_login"
Enum: "current_login" "all_keys"

Regulate how many data you would like to receive.

register_type
string
Default: "transactions_list"
Enum: "transactions_list" "transactions_list_dwh"

Version of the registrar.

Responses

Request samples

Content type
application/json
{
  • "date_from": "2019-08-24",
  • "date_to": "2019-08-24",
  • "fields": [
    ],
  • "scope": "current_login",
  • "register_type": "transactions_list"
}

Response samples

Content type
application/json
{
  • "payments": [
    ]
}

Get transactions report

Get detailed transactions report. Supports filtering by statuses and operation types. Date range must not exceed 14 days and start date must not be more than 90 days in the past.

Authorizations:
BasicAuth(BasicAuthcustomerAuth) (BasicAuthonBehalfOf) (BasicAuthonBehalfOfcustomerAuth)
Request Body schema: application/json
date_from
required
string <date>

Start date of the period. Must not be more than 90 days in the past.

date_to
required
string <date>

End date of the period. Must not exceed 14 days from start date.

register_type
string
Default: "transactions_list"
Value: "transactions_list"

Version of the registrar.

operation_types
Array of strings
Items Enum: "auth" "void" "purchase" "capture" "refund" "payment" "payout" "p2p" "credit" "create"

By default, all available operation types are returned.

statuses
Array of strings
Items Enum: "Success" "Failed" "Unsuccessful" "Created" "Cancel" "Pending" "Rejected"

By default, all available statuses are returned.

Responses

Request samples

Content type
application/json
{
  • "date_from": "2025-05-01",
  • "date_to": "2025-05-31",
  • "register_type": "transactions_list",
  • "operation_types": [
    ],
  • "statuses": [
    ]
}

Response samples

Content type
application/json
{
  • "transactions": [
    ]
}

merchants

Validate merchant keys

Validates merchant keys

Authorizations:
BasicAuth(BasicAuthcustomerAuth) (BasicAuthonBehalfOf) (BasicAuthonBehalfOfcustomerAuth)

Responses

Response samples

Content type
application/json
{
  • "status": "activated"
}

finmon

Finmon endpoints

Get finmon P2P limits

Fetches finmon P2P limits

Authorizations:
BasicAuth(BasicAuthcustomerAuth) (BasicAuthonBehalfOf) (BasicAuthonBehalfOfcustomerAuth)
query Parameters
recipient_ipn
any

IPN of recipient

Responses

Response samples

Content type
application/json
{
  • "recipient_ipn": 123456789,
  • "amount_left": 14999.99,
  • "total_count_left": 187,
  • "card_only_count_left": 23
}