Portmone.com Payment Gateway
Glossary
| Term | Definition |
|---|---|
| Merchant, Online Store or Partner | Organization which has signed a payment acceptance agreement with Portmone.com |
| Buyer, Client or Customer | A person who visits the Merchant's Online Store in order to learn about the range of goods (services) and to make a purchase |
| Card, Payment Card | Payment cards of Visa, Mastercard international card associations and the National payment system PROSTIR |
| Authorization | The process of giving access rights or other powers to the Buyer, program or process |
| Recurring Payments | Automatic payments (no client actions or re-entering card details required), which are carried out with the consent of the client |
| Token | A unique digital identifier of a card, which is generated during the first operation and then used for quick payment. Token can only be used to repeat a similar transaction as at the first payment |
| SHOPBILLID | A unique identifier (Id) assigned to every transaction (payment document) in the Portmone.com system |
| CVV2/CVC2 | CVV2 (Card Verification Value 2) is a three-digit card security code that helps to verify legitimacy of a Visa payment card. The Mastercard payment system has similar card security code called CVC2 (Card Validation Code 2) |
| Acquiring Bank | A bank that organizes banking cards acceptance points (terminals, ATM’s) and processes full range of financial operations connected with performing bank settlements and payments by banking cards at that points |
| Issuing Bank (Card Issuing Bank) | A bank licensed as a member of a card association (like Visa or Mastercard), that issues and maintains payment cards |
| 3-D Secure | 3-D Secure is a protocol which used to secure handling of online bank card payments |
| IBAN | International Bank Account Number |
| IPS | International Payment System |
1. Payment acceptance technology
The description of procedure for payment acceptance by payment cards on the Online Store website:
-
The Buyer chooses a product on a website (or in the mobile application) of a Store, forms the order and selects payment card as a payment method.
-
The Store redirects the Buyer to the Portmone.com system authorization server, sending a set of necessary parameters like partner Id in the Portmone.com system, order number, its amount, etc.
-
The Portmone.com authorization server establishes connection with the Buyer using secure protocol (TLS 1.2), verifies the data received from the Store.
-
The Portmone.com site receives from the Buyer the parameters of his/her Payment Card and ensures the authorization of the Card.
-
When the 3-D Secure technology is used, the Portmone.com sends the Client to the site of Card Issuing Bank to confirm the transaction.
-
The authorization request is sent through closed banking networks to the Buyer's Card Issuing Bank or to the processing center authorized by the Issuing Bank.
- The Bank sends a positive authorization result to the Portmone.com authorization server.
- The Portmone.com authorization server checks the cryptographic integrity of the data received, adds the information to the database.
- Portmone.com redirects the Client to the Online Store page to confirm successful payment.
- The Store checks the status of the transaction in the Portmone.com system and delivers the goods (provides service).
- Within the terms specified in the contract, Portmone.com will transfer funds (excluding the acquiring fee) to the Store account. Funds are transferred via single payment covering all transactions for the specified day.
-
If card authorization failed (authorization was rejected):
- The Bank sends the payment rejection message to the Portmone.com authorization server.
- The Portmone.com authorization server checks the cryptographic integrity of the data received, adds the information to the database.
- The Portmone.com redirects the request to the previously configured page of the Online Store for failed payment.
-
In case of successful payment, the paid order number and the payment data are transmitted by the POST method to the Online Store page.
-
The Online Store must additionally check the status and amount of the order by one of the methods described in section 8 "Getting authorization results".
2. Test mode
The test mode of the payment gateway means that the Portmone.com system checks the validity of entered data from the Online Store and its Client, creates an order, but payment card authorization is not performed. The Portmone.com payment gateway may provide the different response (successful or failed), depending on what is necessary for the Online Store employees who perform integration.
Please contact our Account Managers for Online Stores to enable and disable test mode
Email: [email protected]
The Portmone.com system provides partners with two test options:
1. Successful payment test
To get a successful response on the Portmone.com default payment page use following payment card details:
Card number: 4444333322221111 Expiry date: Any but not earlier than current day CVV2: Any
2. Failed payment test
To get an error on the Portmone.com default payment page use following payment card details:
Card number: 4111111111111111 Expiry date: Any but not earlier than current day CVV2: Any
Important! Before starting the payment acceptance system into operation, make sure that the test mode is disabled!
3. Order payment
3.1. POST request
Description:
To accept payments by Payment cards, you should send a request using the POST method to the payment gateway page – https://www.portmone.com.ua/gateway/.
Availability and restrictions:
No restrictions.
Request structure:
Please, refer to "3.1 POST order payment request" to study the request structure.
Request parameters description:
| Parameter | Description | Required | Value |
|---|---|---|---|
| payee_id | A unique identifier of the Online Store | Yes | Assigned to each Partner individually when connected to the Portmone.com system |
| shop_order_number | Number of paid order (bill) in the Online Store. Order number must be unique within a single order. If the order with this number has already been paid, the Portmone.com system will reject the transaction. | No | Maximum length is 120 symbols |
| bill_amount | Amount of the order. Currency is hryvnia (UAH). The decimal separator is the dot symbol "." | Yes | For example: 1.50 |
| bill_currency | Currency of the payment | No | Possible values: UAH (default value), USD, EUR, GBP, PLN, KZT |
| description | Comment to the order / description of payment details | No | Maximum length is 250 symbols |
| success_url | The URL of the Online Store (internal URL of the mobile application) to which the client will be redirected after successful payment. After successful payment of the order Portmone.com will send shop_order_number and the payment data to this address using the POST method.Upon calling this page on the website of the Online Store, you can verify the status and the amount of the transaction in the Portmone.com system. These procedures are described below (see section 8 "Getting authorization results") | No | For example: http://example.com/success.html |
| failure_url | The URL of the Online Store to which the client will be redirected in case of payment rejection | No | For example: http://example.com/failure.html |
| lang | Payment system interface language | No | uk – Ukrainian, en – English |
| encoding | Encoding | No | The default is UTF-8 |
| preauth_flag | Sets the pre-authorization mode when funds are only blocked on the Client’s card, but not actually charged from the client’s account | No | "Y" – enable pre-authorization mode, "N" – disable pre-authorization mode (the default is "N") |
| attribute1-4 | Service field | No | Filled at company's discretion |
| attribute5 | Used to send the split parameters of the payment (see section 7 "Splitting the payment") | No | Filled in the next format: Desc1:payeeID1;amount1; Desc2:payeeID2;amount2; where Desc1 – description of the order for the first recipient company, payeeID1 – ID of the first recipient company, amount1 – amount to be enrolled to the account of the first recipient, Desc2 – description of the order for the second recipient company, payeeID2 – ID of the second recipient company, amount2 – amount to be enrolled to the account of the second recipient. The number of recipient companies for a single payment request with splitting is limited to the length of the line (up to 500 characters) |
| exp_time | Sets the interval during which the order can be paid. If the parameter value was transferred, then from the moment the payment page was called up, a countdown is displayed, which is visible to the Client on the payment page. After payment time expires, the bill gets the "REJECTED" status and cannot be paid | No | Filled in seconds |
| dt | Request creation time. Used to verify a signature (required if the signature parameter is sent) | Yes | |
| signature | Signature of the request | Yes |
Response structure:
Please, refer to "3.1 POST order payment response (successful)" to study the response structure.
Response parameters description:
| Parameter | Description |
|---|---|
| SHOPBILLID | A unique identifier (Id) assigned to each transaction (payment document) in the Portmone.com system |
| SHOPORDERNUMBER | Number of paid order (bill) in the Online Store system. Maximum length is 128 symbols |
| APPROVALCODE | Authorization code |
| BILL_AMOUNT | Transaction amount sent in request |
| TOKEN | Token value for subsequent payments |
| RESULT | The result of the operation (if successful = 0) |
| CARD_MASK | Payer’s Card mask |
| ATTRIBUTE1 | Service field. Filled at company’s discretion |
| ATTRIBUTE2 | Service field. Filled at company’s discretion |
| ATTRIBUTE3 | Service field. Filled at company’s discretion |
| ATTRIBUTE4 | Service field. Filled at company’s discretion |
| RECEIPT_URL | Link to get a receipt |
| LANG | Payment system interface language. Possible values: uk – Ukrainian, en – English |
| DESCRIPTION | Comment to the order / description of payment details. Maximum length is 250 symbols |
| IPSTOKEN | A unique Visa token |
| ERRORIPSCODE | Error code if Visa token was not created |
| ERRORIPSMESSAGE | Error message if Visa token was not created |
3.2. JSON request
Description:
To make a payment you should send a request to the following URL: https://www.portmone.com.ua/gateway/.
Availability and restrictions:
No restrictions.
Request structure:
Please, refer to "3.2 JSON order payment request" to study the request structure.
Parameters for generating JSON-structure of request:
- payee – this block is required for partner identification
| Parameter | Description | Required |
|---|---|---|
| payeeId | A unique identifier of the Online Store. Assigned to each Partner individually when connected to the Portmone.com system | Yes |
| login | Company’s login. Used to verify a signature (required if the signature parameter is sent) | Yes |
| dt | Request creation time. Used to verify a signature (required if the signature parameter is sent) | Yes |
| signature | Signature of the request | Yes |
| shopSiteId | Digital identifier of a sales channel | No |
- order – this block contains the order data
| Parameter | Description | Required |
|---|---|---|
| description | Payment description (comment to the order/ payment details). Maximum number of characters 250 | No |
| shopOrderNumber | Number of a paid order in the Partner’s system. Maximum length is 128 symbols | No |
| billAmount | Amount of the payment | Yes |
| successUrl | The URL of the Online Store to which the client will be redirected after a successful payment. Maximum number of characters 250 | No |
| failureUrl | The URL of the Online Store to which the client will be redirected in case of payment rejection. Maximum number of characters 250 | No |
| preauthFlag | Payment pre-authorization flag (value "Y" indicates that this payment is carried out using the pre-authorization procedure (see section 6 "Payments with pre-authorization"), value "N" is a regular payment without pre-authorization) | No |
| preauthConfirm | Date of automatic withdrawal for payments with pre-authorization. Can be used when the preauthFlag = Y parameter is passed in the request. Should be sent in the following format: YYYYMMDDHH24MISS (date and time after which the pre-authorization is confirmed automatically). It can not be less than the current date | No |
| preauthReject | Date of automatic cancellation of pre-authorization. Can be used when the preauthFlag = Y parameter is passed in the request. Should be sent in the following format: YYYYMMDDHH24MISS (date and time after which the pre-authorization is cancelled automatically). It can not be less than the current date | No |
| billCurrency | Currency of the payment. Default value: UAH | No |
| expTime | Sets the interval (in seconds) during which the order can be paid. If the parameter value was transferred, then from the moment the payment page was called up, a countdown is displayed, which is visible to the Client on the payment page. After payment time expires, the bill gets the "REJECTED" status and cannot be paid | No |
| encoding | Encoding (encodes the request text from the set encoding to UTF-8) | No |
| attribute1 | Service field. Filled at company’s discretion | No |
| attribute2 | Service field. Filled at company’s discretion | No |
| attribute3 | Service field. Filled at company’s discretion | No |
| attribute4 | Service field. Filled at company’s discretion | No |
| attribute5 | Used to send the split parameters of the payment (see section 7 "Splitting the payment") | No |
- paymentTypes – this block allows you to choose payment methods ("Y" – enable, "N" – do not enable). If the parameters are not specified, then the payment methods assigned to the Online Store in the Portmone.com settings are used, or two main payment methods are used: "card", "portmone".
| Parameter | Description | Required |
|---|---|---|
| card | Payment by Card | No |
| portmone | Payment via Portmone.com wallet | No |
| token | Payment by Token (if this option is enabled, other methods are not displayed) | No |
| clicktopay | Payment using Visa Click to Pay | No |
| privat | Payment via LiqPay, with choosing a card from the Privat24 Internet Banking Pay attention! Pre-authorization functionality does not work when paying via Privat24 | No |
| gpay | Payment via Google Pay, with choosing a card from previously stored in the Google Pay account | No |
| createtokenonly | Creates a Token to make payments by Token (if this option is enabled, other methods are not displayed). This parameter allows you to receive a Card Token without making a real payment (1 UAH is blocked on the account and returned within 30 minutes). Suitable for common payments to the Online Store (see section 4 "Order payment using a payment Token") and for subsequent use for card to card payments (see section 5 "Money transfer from card to card") | No |
| gpayonly | Payment via Google Pay, with choosing a card from previously stored in the Google Pay account (if this option is enabled, other methods are not displayed – only the "Buy with GPay" button is displayed on the payment page) | No |
| applepay | Payment via Apple Pay, with choosing a card from previously stored in the Apple Pay account | No |
| applepayonly | Payment via Apple Pay, with choosing a card from previously stored in the Apple Pay account (if this option is enabled, other methods are not displayed – only the "Apple Pay" button is displayed on the payment page) | No |
| kyivstar | Payment from Kyivstar mobile account balance (for prepaid numbers only) | No |
| installment | Installment payment | No |
| link | Payment by the BankPay method (using the payer's Bank). The method works if the following parameters are passed: expTime та "showEmail": "Y" | No |
Important! Due to internal security policies of Google and Apple,
Google PayandApple Paywallets can be unstable when opening a payment page in WebView.
For correct operation, we recommend direct integration of Google Pay and Apple Pay If you have an application, we recommend integrating SDKiOS, SDKAndroid
-
installmentPlan – installment payment parameters (see section 3.7 “Installment Payments”).
-
autopayment – this block allows you to set up automatic payments.
The automatic payments functionality allows customers to sign up for automatic monthly / quarterly / semiannual / annual charges. You can manage the client’s subscription parameters by yourself or provide the Client with the possibility to set up the parameters of autopayment.
To get started with automatic payments, you need to get credentials in your Personal Area.
Important! When changing the password, the Partner must generate new
credentials.
After setting up:
-
A subscription to automatic payments from a Client’s Card will be created. The Portmone.com system controls and processes payments. The Client can disable the service by contacting the Portmone.com customer support or an employee of the Online Store (you can delete the client's subscription in the Personal Area).
-
All subsequent payments will be made on the same
descriptionas the first payment. -
The order number for automatic payments will be formed as follows:
Order number at first payment_RECURENT_Date of automatic payment
| Parameter | Description | Required |
|---|---|---|
| show | Displaying the details of the autopayment subscription to the client on the payment page. Possible values: Y – the client can go to a separate page and see the subscription details; N – the client is unable to view subscription details (only the "Make this payment regular" checkbox is displayed) (see fig. 1) | No |
| edit | Editing automatic payment settings by client. Possible values: Y – all settings can be edited on the subscription details page, the client can save settings (see fig. 2); N – the automatic payment settings provided by the Online Store are displayed and cannot be edited | No |
| settings | A block of parameters for setting up automatic payments | No |
| credentials | Authorization parameters | Yes |
| changeCheckboxState | value Y | Yes |
| defaultCheckboxState | value: Y – the checkbox "Make payment regular" is autofilled,N – the client independently fills in the "Make regular payment" checkbox | No |
The settings block structure:
| Parameter | Description | Required |
|---|---|---|
| period | Frequency of automatic payments. Takes the following values: 1 – monthly, 2 – quarterly, 3 – semiannually, 4 – annually | Yes |
| payDate | Day of the month for automatic payment. Can takes value from 1 to 28 | No |
| startDate | Automatic payments start date. Should be sent in the following format: DD.MM.YYYY. If not specified, yesterday's date is automatically set | No |
| endDate | Automatic payments end date. Should be sent in the following format: DD.MM.YYYY. If not specified, the startDate + 3 years is automatically set (or the current payment date is set, if startDate is not specified) | No |
| amount | Amount of the payment. The decimal separator is the dot symbol (".") | Yes |

Fig. 1 – an example of payment page without displaying the details of the autopayment subscription

Fig. 2 – an example of displaying editable automatic payment parameters
- priorityPaymentTypes – this block allows you to manage placement of payment methods on a page. If the value near the payment method name is 0, a tab with the payment method is not displayed, otherwise is placed in ascending order: 1 – at the top of the list, 2 – at the second position, 3 – at the third position, etc.
Important! In
paymentTypesthe payment method must have the "Y" value, in thepriorityPaymentTypesit must have a numeric value other than 0 ("0" disables the display on the payment page).
- token – settings to work with a Token (see section 4 "Order payment using a payment Token")
| Parameter | Description | Required |
|---|---|---|
| tokenFlag | Enables payment by Token ("N" – do not enable, "Y" – take data processing into account) | Required for payment by Token |
| returnToken | "Y" – enables the option to return the Token to the partner on the success page, "N" or empty value – the Token is not returned on the success page | No |
| token | Token value | Required for payment by Token |
| cardMask | Card mask | Required for payment by Token |
| otherPaymentMethods | Allows you to enable other payment methods when the Token is sent ("N" – disable, "Y" – enable) | No |
- payer – this block describes payer settings
| Parameter | Description | Required |
|---|---|---|
| lang | Payment page interface language. Possible values: uk – Ukrainian, en – English | No |
| emailAddress | Email address of the payer | No |
| showEmail | "Y" or empty value – enables displaying the "e-mail" field on the payment page, "N" – hides the "e-mail" field on the payment page (default value is "Y") | No |
Depending on the sent values of the emailAddress and showEmail parameters, there are 4 options for displaying the "e-mail" field on the payment page:
| Option | emailAddress | showEmail | Displaying on the payment page |
|---|---|---|---|
| 1 | empty value | Y | An empty "e-mail" field is displayed |
| 2 | valid e-mail | Y | A prefilled "e-mail" field is displayed that can be edited |
| 3 | empty value | N | The "e-mail" field is not displayed on the payment page. While the payment page opens, no check is performed of whether the Merchant has sent the e-mail address and its validity |
| 4 | valid e-mail | N | The "e-mail" field is not displayed on the payment page. While the payment page opens, no check is performed of whether the Merchant has sent the e-mail address and its validity. However, the e-mail sent in the request is processed and a payment receipt is sent to it |
- shipping – this block contains shipping information
Nova Poshta Delivery
This functionality allows you to enable Nova Poshta delivery.
| Parameter | Description | Required |
|---|---|---|
| state | Y - enables delivery, N - disables delivery | Yes |
| source | The name of the delivery service. Accepts the value novaposhta | Yes |
Example of an array in the request:
"shipping": {
"collect": {
"state": "Y",
"source": "novaposhta"
}
To pre-fill the fields on the checkout page, you need to pass the Customer’s data in the block payer
"payer": {
"lang": "uk",
"emailAddress": "[email protected]",
"showEmail": "Y",
"phoneNumber": "660000000",
"fullName": "Прізвище Ім'я"
}
| Parameter | Description | Required |
|---|---|---|
| lang | Language of the payment page interface. Possible values: uk – Ukrainian, en – English | No |
| emailAddress | The payer’s email address (used to send a receipt for a successful payment; not returned in the response) | Yes |
| showEmail | Accepts the value "Y" | Yes |
| phoneNumber | Customer’s phone number. Must be passed in the format 660000000 | Yes |
| fullName | Customer’s last name and first name | Yes |
Three delivery types are available:
- To a branch
- To a parcel locker
- By courier
The fields “City”, “Street”, “Branch”, and “Parcel Locker” are dropdown lists with search functionality on the checkout page. The search begins after entering 3 characters. You can edit the delivery details by clicking the "Back" button.
Ukrposhta Delivery
| Parameter | Description | Required |
|---|---|---|
| services | Shipping services | Yes |
| ukrposhta | Carrier name (name of the company that delivers the order to the recipient) | Yes |
| deliveryTypes | Available delivery methods: W2D – courier delivery to the recipient's address; W2W – delivery to the carrier office/warehouse | Yes |
| senderClientId | A unique identifier of the Online Store in the carrier system. Created in the merchant's Personal area | Yes |
| senderAddressId | A unique identifier of the Online Store address in the carrier system. Created in the merchant's Personal area | Yes |
| senderPostCode | Postal code of the sender | Yes |
| type | Parcel delivery type. Possible values: STANDARD, EXPRESS | Yes |
| parcelWeight | Parcel weight in grams. Maximum allowed value – 30000 | Yes |
| parcelLength | The length of the largest side of the parcel stated in centimeters. Numbers only | Yes |
| parcelWidth | The width of a parcel in centimeters | Yes |
| parcelHeight | The height of a parcel in centimeters | Yes |
| parcelDeclaredPrice | The declared cost of a parcel in UAH | Yes |
| parcelDescription | Description of a parcel | No |
| fragile | Parcel fragility mark. Possible values: Y, N | No |
| checkOnDelivery | Checking the contents of the parcel on receiving is needed. Possible values: Y, N | No |
| bees | Indicates that bees are sent. Possible values: Y, N | No |
| payer | Indicates who pays for delivery – sender or recipient. Default value: client | Yes |
| sms | Notify the client via SMS. Possible values: Y, N | No |
| withDeliveryNotification | Notify the client using the notification service of the carrier company. Possible values: Y, N | No |
| enable | Enable the displaying of delivery form. Possible values: Y, N | Yes |
| required | Filling the delivery form is required. Possible values: Y, N | Yes |
-
style – configuration of payment page styles (see section 3.3. Managing a view of a payment page).
-
goods – Block Containing an Array of Fiscalization Data
| Parameter | Description | Required |
|---|---|---|
| internalCode | Seller's code | Yes |
| manufacturerCode | Manufacturer's code | No |
| govClassificationCode | UKTZED code | Yes |
| name | Product/service name | Yes |
| name_en | Product/service name in English | No |
| description | Product/service description | No |
| description_en | Product/service description in English | No |
| price | Price (per unit) | Yes |
| quantity | Quantity | Yes |
| uomCode | Unit of measure (optional, default is unit) | No |
| amount | Amount | Yes |
| serviceFlag | Service indicator (N - product) | No |
| taxRateCodes | Numeric tax rate code (pre-programmed in the tax agent's dashboard). For multiple taxes, separate by commas | Yes |
| descriptionUrl | Product description URL | No |
| imageUrl | Product image URL | No |
Show an example of the JSON structure for the goods block
{
"goods": [
{
"internalCode": "123456",
"manufacturerCode": "123456",
"govClassificationCode": "123456",
"name": "",
"name_en": "",
"description": "",
"description_en": "",
"price": "100",
"quantity": "2",
"uomCode": "",
"amount": "200",
"serviceFlag": "N",
"taxRateCodes": "1",
"descriptionUrl": "",
"imageUrl": ""
}
]
}
Response structure:
Please, refer to "3.2 JSON order payment response (successful)" to study the response structure.
Response parameters description:
| Parameter | Description |
|---|---|
| SHOPBILLID | A unique identifier (ID) assigned to each transaction (payment document) in the Portmone.com system |
| SHOPORDERNUMBER | Number of paid order (bill) in the Online Store system. Maximum length is 128 symbols |
| APPROVALCODE | Authorization code |
| BILL_AMOUNT | Transaction amount sent in request |
| TOKEN | Token value for subsequent payments |
| RESULT | The result of the operation (if successful = 0) |
| CARD_MASK | Payer’s Card mask |
| ATTRIBUTE1 | Service field. Filled at company’s discretion |
| ATTRIBUTE2 | Service field. Filled at company’s discretion |
| ATTRIBUTE3 | Service field. Filled at company’s discretion |
| ATTRIBUTE4 | Service field. Filled at company’s discretion |
| RECEIPT_URL | Link to get a receipt |
| LANG | Payment system interface language. Possible values: uk – Ukrainian, en – English |
| DESCRIPTION | Comment to the order / description of payment details. Maximum length is 250 symbols |
| IPSTOKEN | A unique Visa token |
| ERRORIPSCODE | Error code if Visa token was not created |
| ERRORIPSMESSAGE | Error message if Visa token was not created |
3.3. Managing a view of a payment page
You can customize the view of the payment page using the style parameter.
Description of the style parameter fields:
| Field | Description | Page style type, for which a field can be used |
|---|---|---|
| type | Sets the style type of a page: • portmone – default value (standard Portmone.com style, see fig. 3); • brand – full page styling for a partner (see fig. 4); • co-brand – partner’s logo is displayed on the page along with the Portmone.com logo (see fig. 5); • light – the version to display as a frame (see fig. 6). For instructions on how to embed the payment page in a frame, see below | |
| logo | Contains a link to the partner's logo. Supports only link with https scheme. Image format is SVG and PNG only. It is recommended to use an image with a minimum plot indent from all edges | brand, co-brand |
| logoWidth | Parameter defining the width of the logo. Should be entered in the "100px" format. Maximum recommended value is 300px | brand, co-brand |
| logoHeight | Parameter defining the height of the logo. Should be entered in the "100px" format. Maximum recommended value is 50px (maximum height for PNG – 53px) | brand, co-brand |
| backgroundColorHeader | Sets the colour of a header section on the page. The input format is HEX (for example, #ff0000) | brand, light |
| backgroundColorButtons | Sets the colour of buttons. The input format is HEX (for example, #ff0000) | brand, light |
| colorTextAndIcons | Sets text and icon colour. The input format is HEX (for example, #ff0000) | brand, light |
| borderColorList | Sets the colour of lines in the list of payment methods. The input format is HEX (for example, #ff0000) | brand, light |
| bcMain | Specifies the colour to fill page background. The input format is HEX (for example, #ff0000) | brand, light |
| privatButtonPosition | When using the "privat" payment method, this parameter defines the placement of the Privat24 button on the payment form. The button's position can be set to one of three options: "top" (at the top of the payment form), "middle" (in the middle of the payment form), or "bottom" (at the bottom of the payment form). The default value is "bottom". | portmone, brand, light, co-brand |
Examples of Privat24 button placement options
Show an example of the Privat24 button placed at the top of the page

Show an example of the Privat24 button placed in the middle of the page

Show an example of the Privat24 button placed at the bottom of the page

Embedding the payment page in a frame
Important! Due to internal security policies of Google and Apple,
Google PayandApple Paywallets can be unstable when opening a payment page in WebView.
For correct operation, we recommend direct integration of Google Pay and Apple Pay If you have an application, we recommend integrating SDKiOS, SDKAndroid
To run IFRAME on your site, do the following:
- Organise the opportunity to send a payment request on your checkout page, for example, by plasing a form as following:
<form
action="https://www.portmone.com.ua/gateway/"
method="post"
target="myFrame"
>
<input
type="hidden"
name="bodyRequest"
value='{
"paymentTypes": {
"card": "Y",
"portmone": "Y",
"token": "N",
"clicktopay": "Y",
"createtokenonly": "N"
},
"priorityPaymentTypes": {
"card": "1",
"portmone": "2",
"token": "0",
"clicktopay": "1",
"createtokenonly": "0"
},
"payee": {
"payeeId": "1185",
"login": "",
"dt": "",
"signature": "",
"shopSiteId": ""
},
"order": {
"description": "Test Payment",
"shopOrderNumber": "SHP-00445401",
"billAmount": "10",
"attribute1": "1",
"attribute2": "2",
"attribute3": "3",
"attribute4": "4",
"attribute5": "",
"successUrl": "",
"failureUrl": "",
"preauthFlag": "N",
"billCurrency": "UAH",
"encoding": ""
},
"token": {
"tokenFlag": "N",
"returnToken": "N",
"token": "",
"cardMask": "",
"otherPaymentMethods": "Y",
"sellerToken": ""
},
"payer": {
"lang": "uk",
"emailAddress": "[email protected]"
},
"style": {
"type": "light",
"logo": "",
"backgroundColorHeader": "",
"backgroundColorButtons": "",
"colorTextAndIcons": "",
"borderColorList": "",
"bcMain": ""
}
}'
/>
<input type="hidden" name="typeRequest" value="json" />
<input type="submit" value="Portmone.com" />
</form>
Refer to section 3.2 "JSON request" to study the request structure and parameters.
To display a frame in the light style, you should set the value to light for the type field of the style parameter.
At the target parameter of the form specify the frame in which the payment page will be displayed (in the example above, this is a frame called "myFrame").
- Add the IFRAME element to the DOM model of the page. The
nameparameter value must be equal to thetargetparameter value from the previous step.
<div>
<iframe name="myFrame" width="50%" height="70%" frameborder="0" ></iframe>
</div>
You can customize the width and the height parameters of the frame as desired.
- After submitting the request, the response will be displayed in the specified frame.
Ways to display payment page

Fig. 3 – Portmone.com standard style

Fig. 4 – partner style for the entire page

Fig. 5 – partner’s logo is displayed on the page along with the Portmone.com logo

Fig. 6 – the version to display as a frame on the Online Store website
3.4. Payment Widget
Purpose: The payment widget allows you to accept payments without redirecting the customer to a separate Portmone page. The checkout takes place on the merchant’s website in a user-friendly format.
The widget supports two display modes:
-
Modal window (popup): after clicking the button, a separate browser popup opens with the Portmone checkout page.
-
Embedded frame (iframe): the payment form is rendered directly on the merchant’s page inside an embedded iframe.
3.4.1 Payment in a modal window (popup)
Availability & limitations: No limitations.
Integrating the payment button: In order to place Portmone payment button on your checkout page, you have to determine a button location on the page and include some JS code.
After the pg.min.js script loads, the payment button will be rendered inside the same container where the script tag is placed
Example:
<div class="span4">
<script src="https://www.portmone.com.ua/r3/resources/pg/js/asset/pg.min.js?v=15092019"></script>
<script type="text/javascript" id="portmone-script">
var data = {};
var brand = {
height: "40px",
width: "150px",
buttoncolor: "#FF0000",
fontfamily: "Open Sans",
textcolor: "#FFF",
lang: "uk",
padding: "5px",
border: "1px solid grey",
fontsize: "14px",
closemodal: "Y",
};
PG.success(function (data) {
console.log(JSON.stringify(data));
});
PG.paymentData("gateway", data);
PG.brandButton(brand);
</script>
</div>
Branding the payment button:
The brand object controls the appearance of the “Pay” button that triggers the checkout window.
| Parameter | Description | Required |
|---|---|---|
| height | Sets the button height. By default, it accepts the button style set on the page | No |
| width | Sets the button width. By default, it accepts the button style set on the page | No |
| buttoncolor | Sets the button colour. By default, it accepts the button style set on the page | No |
| fontfamily | Sets the button font type. By default, it accepts the button style set on the page | No |
| textcolor | Sets the button font colour. By default, it accepts the button style set on the page | No |
| lang | Sets the language for displaying the text of the "Pay" / "Download receipt" button. Default value: uk – Ukrainian | No |
| padding | Sets the value of the padding around the button's content. By default, it accepts the button style set on the page | No |
| border | Allows you to specify the style, width and colour of the button's border. By default, it accepts the button style set on the page | No |
| fontsize | Sets the button font size. By default, it accepts the button style set on the page | No |
| closemodal | Determines whether to close a modal window after making a payment. If set to "N", the window is not closed and successful payment notification is displayed in the modal. If set to "Y", the window is closed and the payment data is sent to the merchant's processing function. The default value is "Y" | No |
Widget initialization:
To run the widget, pass a data object that contains merchant information, order parameters, and payment methods.
See the example data object in section "3.4.1 Example of the data object for popup mode"
Parameters of the data object:
- payee – this block is required for partner identification
| Parameter | Description | Required |
|---|---|---|
| payeeId | A unique identifier of the Online Store. Assigned to each Partner individually when connected to the Portmone.com system | Yes |
| login | Company’s login. Used to verify a signature (required if the signature parameter is sent) | No |
| dt | Request creation time. Used to verify a signature (required if the signature parameter is sent) | No |
| signature | Signature of the request | No |
| shopSiteId | Digital identifier of a sales channel | No |
- order – this block contains the order data
| Parameter | Description | Required |
|---|---|---|
| description | Payment description (comment to the order/ payment details) Max 250 symbols | No |
| shopOrderNumber | Number of a paid order in the Partner’s system. Maximum length is 128 symbols | No |
| billAmount | Amount of the payment | Yes |
| preauthFlag | Payment pre-authorization flag (value "Y" indicates that this payment is carried out using the pre-authorization procedure (see section 6 "Payments with pre-authorization"), value "N" is a regular payment without pre-authorization) | No |
| preauthConfirm | Date of automatic withdrawal for payments with pre-authorization. Can be used when the preauthFlag = Y parameter is passed in the request. Should be sent in the following format: YYYYMMDDHH24MISS (date and time after which the pre-authorization is confirmed automatically). It can not be less than the current date | No |
| preauthReject | Date of automatic cancellation of pre-authorization. Can be used when the preauthFlag=Y parameter is passed in the request. Should be sent in the following format: YYYYMMDDHH24MISS (date and time after which the pre-authorization is cancelled automatically). It can not be less than the current date | No |
| billCurrency | Currency of the payment. Default value: UAH | No |
| expTime | Sets the interval (in seconds) during which the order can be paid. If the parameter value was transferred, then from the moment the payment page was called up, a countdown is displayed, which is visible to the Client on the payment page. After payment time expires, the bill gets the "REJECTED" status and cannot be paid | No |
| encoding | Encoding (encodes the request text from the set encoding to UTF-8) | No |
| attribute1 | Service field. Filled at company’s discretion. Maximum length is 1000 symbols | No |
| attribute2 | Service field. Filled at company’s discretion. Maximum length is 1000 symbols | No |
| attribute3 | Service field. Filled at company’s discretion. Maximum length is 1000 symbols | No |
| attribute4 | Service field. Filled at company’s discretion. Maximum length is 1000 symbols | No |
| attribute5 | Used to send the split parameters of the payment (see section 7 "Splitting the payment"). Maximum length is 500 symbols | No |
- paymentTypes – this block allows you to choose payment methods ("Y" – enable, "N" – do not enable). If the parameters are not specified, then the payment methods assigned to the Online Store in the Portmone.com settings are used, or two main payment methods are used: "card", "portmone".
| Parameter | Description | Required |
|---|---|---|
| card | Payment by Card | No |
| portmone | Payment via Portmone.com wallet | No |
| token | Payment by Token (if this option is enabled, other methods are not displayed) | No |
| clicktopay | Payment using Visa Click to Pay | No |
| privat | Payment via LigPay, with choosing a card from the Privat24 Internet Banking | No |
| gpay | Payment via Google Pay, with choosing a card from previously stored in the Google Pay account | No |
| createtokenonly | Creates a Token to make payments by Token (if this option is enabled, other methods are not displayed). This parameter allows you to receive a Card Token without making a real payment (1 UAH is blocked on the account and returned within 30 minutes). Suitable for common payments to the Online Store (see section 4 "Order payment using a payment Token") and for subsequent use for card to card payments (see section 5 "Money transfer from card to card") | No |
| gpayonly | Payment via Google Pay, with choosing a card from previously stored in the Google Pay account (if this option is enabled, other methods are not displayed – only the "Buy with GPay" button is displayed on the payment page) | No |
| applepay | Payment via Apple Pay, with choosing a card from previously stored in the Apple Pay account | No |
| applepayonly | Payment via Apple Pay, with choosing a card from previously stored in the Apple Pay account (if this option is enabled, other methods are not displayed – only the "Apple Pay" button is displayed on the payment page) | No |
| link | Payment by the BankPay method (using the payer's Bank). The method works if the following parameters are passed: expTime та "showEmail": "Y" | No |
- priorityPaymentTypes – this block allows you to manage placement of payment methods on a page. If the value near the payment method name is 0, a tab with the payment method is not displayed, otherwise is placed in ascending order: 1 – at the top of the list, 2 – at the second position, 3 – at the third position, etc.
Important! In
paymentTypesthe payment method must have the "Y" value, in thepriorityPaymentTypesit must have a numeric value other than 0 ("0" disables the display on the payment page).
- token – settings to work with a Token (see section 4 "Order payment using a payment Token")
| Parameter | Description | Required |
|---|---|---|
| tokenFlag | Enables payment by Token ("N" – do not enable, "Y" – take data processing into account) | Required for payment by Token |
| returnToken | "Y" – enables the option to return the Token to the partner on the success page, "N" or empty value – the Token is not returned on the success page | No |
| token | Token value | Required for payment by Token |
| cardMask | Card mask | Required for payment by Token |
| otherPaymentMethods | Allows you to enable other payment methods when the Token is sent ("N" – disable, "Y" – enable) | No |
- payer – this block describes payer settings
| Parameter | Description | Required |
|---|---|---|
| lang | Payment page interface language. Possible values: uk – Ukrainian, en – English | No |
| emailAddress | Email address of the payer | No |
| showEmail | "Y" or empty value – enables displaying the "e-mail" field on the payment page, "N" – hides the "e-mail" field on the payment page (default value is "Y") | No |
Depending on the sent values of the emailAddress and showEmail parameters, there are 4 options for displaying the "e-mail" field on the payment page:
| Option | emailAddress | showEmail | Displaying on the payment page |
|---|---|---|---|
| 1 | empty value | Y | An empty "e-mail" field is displayed |
| 2 | valid e-mail | Y | A prefilled "e-mail" field is displayed that can be edited |
| 3 | empty value | N | The "e-mail" field is not displayed on the payment page. While the payment page opens, no check is performed of whether the Merchant has sent the e-mail address and its validity |
| 4 | valid e-mail | N | The "e-mail" field is not displayed on the payment page. While the payment page opens, no check is performed of whether the Merchant has sent the e-mail address and its validity. However, the e-mail sent in the request is processed and a payment receipt is sent to it |
-
style – setup of payment page styles (see section 3.3. "Managing a view of a payment page").
-
goods — optional array with fiscalization data.
| Parameter | Description | Required |
|---|---|---|
| internalCode | Seller's code | Yes |
| manufacturerCode | Manufacturer's code | No |
| govClassificationCode | UKTZED code | Yes |
| name | Product/service name | Yes |
| name_en | Product/service name in English | No |
| description | Product/service description | No |
| description_en | Product/service description in English | No |
| price | Price (per unit) | Yes |
| quantity | Quantity | Yes |
| uomCode | Unit of measure (optional, default is unit) | No |
| amount | Amount | Yes |
| serviceFlag | Service indicator (N - product) | No |
| taxRateCodes | Numeric tax rate code (pre-programmed in the tax agent's dashboard). For multiple taxes, separate by commas | Yes |
| descriptionUrl | Product description URL | No |
| imageUrl | Product image URL | No |
Service functions:
-
PG.success – this function takes the data object that describes the payment made. In case the Merchant does not process the data, the payment button changes its state and name, and payer can download the payment receipt upon clicking on it.
-
PG.brandButton – this function takes an object that describes and stylizes a payment button.
-
PG.paymentData – this function initializes and places the payment button on the Merchant's page.
This function takes the following parameters:
PG.paymentData(typePayment, data, typeView);
Where:
1) typePayment – a string that characterizes the payment type used. Can take the following values:
| Value | Desctiption |
|---|---|
| gateway | This type of payment allows you to create and process a typical payment based on the transmitted data. The data object is generated as for a regular JSON-based request |
| stock | This type of payment is used to process a payment based on the product identifier, which was created in the Merchant’s Personal Area. In this case the data object has the follwing structure: var data = { "id":"303429c03b3a743bdf8ee02" }; |
| terminal | This type of payment saves the processing of the data object properties, which are transferred when paying using the terminal type, but allows you to leave billAmount, description, attribute1, attribute2, attribute3, attribute4 fields blank to further initialization this data by the payer |
| p2p | This type of payment allows you to process a payment with crediting funds to the Merchant's card, which has been verified and added to the Merchant's Personal Area. In this case the data object has the follwing structure: var data = { "hash":"" };, where hash – value from the payment link |
2) typeView – а string that characterizes the modal window type:
- modal – opens the payment window in a new browser window with the specified sizes (see fig. 7).
- frame – opens the payment window in a frame (see fig. 8);
-
PG.create – this function creates a payment frame based on the data passed into the PG. paymentData function. The function can be used when Merchant creates its own mechanisms for calling a payment frame. Does not contain any parameters.
-
PG.setButtonId – this function can be used for cases when Merchant stylizes the frame call button himself and initializes his own text on the button. The function takes the
idattribute used for the Merchant's button HTML element as an argument. For example:PG.setButtonId('paymentButton');. After that, when the button is pressed, the Portmone payment frame opens to the Merchant.
This function should be used in combination with the PG.create function.
Example:
- a frame creating based on settings from the PG. paymentData function
PG.paymentData("gateway",data,"frame"); PG.create();
- Merchant's button id setting
PG.setButtonId('paymentButton');
Response structure:
If Merchant initialize the data processing on its side through the PG.success function after making a payment by the client, it is necessary to implement the processing of data that will be passed to the processing function.
Description of parameters passed to the processing function:
| Parameter | Description |
|---|---|
| status | Transaction status. Takes the value PAYED |
| errorCode | Error Code |
| error | Remains unfilled |
| shopBillId | A unique identifier (Id) assigned to every transaction (payment document) in the Portmone.com system |
| billAmount | Amount of the payment |
| shopOrderNumber | Number of paid order (bill) in the Merchant's system. |
| cardMask | Payer’s Card mask |
| attribute1 | Service field |
| attribute2 | Service field |
| attribute3 | Service field |
| attribute4 | Service field |
| receiptLink | Link to get a receipt |
| lang | Payment system interface language. Possible values: uk – Ukrainian, en – English |
| description | Comment to the order / description of payment details. |
| token | Card token |
| commission | The value of the commission from payment |
| payeeName | Merchant name |
| billCurrency | Currency of the payment |
| IPSTokenValue | A unique Visa token |
| errorIPSCode | Error code if Visa token was not created |
| errorIPSMessage | Error message if Visa token was not created |

Fig. 7 – an example of opening the payment window in a new browser window with the specified sizes
3.4.2 Payment in an embedded frame (iframe)
Technical requirements and Apple Pay configuration: For Apple Pay, there are browser-level limitations: within an embedded iframe, the Apple Pay button may function inconsistently or fail to appear entirely. This is due to Apple’s security policy, which requires direct user interaction and merchant domain verification.
- To ensure stable operation of Apple Pay in an iframe, you must:
- Create Apple certificates and complete domain verification according to the instructions.
- In the
datainitialization object, within thepayeeblock, pass additional parameters that identify the merchant in Apple’s system:appleMerchantName— a unique Merchant ID created in your Apple Developer account during Apple Pay setup.appleMerchantLabel— the name displayed to the user in the Apple Pay window when selecting a card.
- For Apple Pay with QR code, include the official apple-pay-js library. Apple documentation
<head>
<script
crossorigin
src="https://applepay.cdn-apple.com/jsapi/1.latest/apple-pay-sdk.js"
crossorigin="anonymous"
></script>
</head>
- Place the iframe high in the DOM tree. Steps:
- Create a div and assign it a unique id.
- Place this div near the top levels of the DOM structure.
- In the payment initialization data object, pass frameHolderId equal to that id.
Apple Pay certificate setup & domain verification guide:
Check out the video guide that explains in detail how to set up Apple Pay on your website.
Watch the video guide at this link: Detailed Apple Pay Setup Video Guide.
1. Registering a Merchant ID
A Merchant ID uniquely identifies you in Apple Pay as a merchant capable of accepting payments. A Merchant ID never expires, and you can use the same one for multiple applications.
- Log in to your Apple Developer Account.
- Go to the Certificates, Identifiers & Profiles section.
- Click Identifiers in the sidebar, then click the add button (+) in the top left corner.
- Select Merchant IDs, then click Continue.
- Enter Description and Identifier*, then click Continue.
- Review the settings and click Register.
- Send your Merchant ID to Portmone at
[email protected]. - Receive a CSR file from Portmone, which is required for creating the Apple Pay Payment Processing Certificate.
Note:
Description – merchant description.
Identifier – your domain in reverse order, prefixed with "merchant" (e.g., forshop.ua, the Identifier will bemerchant.ua.shop).
2. Creating an Apple Pay Payment Processing Certificate
The Apple Pay Payment Processing Certificate is associated with your Merchant ID and is used to encrypt payment information. The Payment Processing Certificate expires every 25 months. If the certificate is revoked, you can recreate it.
- Log in to your Apple Developer Account.
- In Certificates, Identifiers & Profiles, click Identifiers in the sidebar.
- Use the filter in the top-right corner to select Merchant IDs.
- On the right, select your Merchant ID.
- Under Apple Pay Payment Processing Certificate, click Create Certificate.
- Upload the CSR file received from Portmone by clicking Choose File, then click Continue.
- Click Download.
- Send the downloaded certificate (apple_pay.cer) to Portmone at
[email protected].
Note:
If a banner appears at the top of the page requiring you to accept an agreement, click Review Agreement and follow the instructions before proceeding.
3. Registering and Verifying a Domain
- Log in to your Apple Developer Account.
- In Certificates, Identifiers & Profiles, click Identifiers in the sidebar, then select Merchant IDs in the top-right dropdown menu.
- Select your Merchant ID.
- Under Merchant Domains, click Add Domain.
- Enter your domain name and click Save.
- Download the
apple-developer-merchantid-domain-association.txtfile. - Place the file in the root directory of your domain under the following path:
https://<your-domain>/.well-known/apple-developer-merchantid-domain-association.txt - Ensure the file is accessible via browser at the specified URL.
- Click Verify.
- If everything is set up correctly, the domain status will change to Verified.
Note:
The domain must support HTTPS.
4. Creating an Apple Pay Merchant Identity Certificate
The Merchant Identity Certificate is required for working with Apple Pay. It ensures secure operations and identifies the merchant. This certificate is also necessary for creating an Apple Pay Payment Session during merchant validation.
Before creating the Apple Pay Merchant Identity Certificate, you need to obtain a Certificate Signing Request (CSR). This can be done in several ways:
-
Obtaining a CSR and private key from Portmone (Recommended Method)
Send a request to[email protected]for a CSR to create the Apple Pay Merchant Identity Certificate. In response, receive a prepared CSR file that complies with Apple's requirements, along with a private key. This method is recommended as it simplifies the process and ensures compatibility. -
Generating the CSR and private key yourself
There are several ways to generate a CSR and private key yourself: using Keychain Access on macOS (Apple's guide) or OpenSSL. Below is the instruction for creating a CSR using Keychain Access:
- Open Keychain Access, located in
/Applications/Utilities. - In the menu, select: Keychain Access → Certificate Assistant → Request a Certificate from a Certificate Authority.
- In the pop-up window, fill in the fields:
- User Email Address: enter your email address.
- Common Name: enter the key name.
- CA Email Address: leave it blank.
- Select the option I will provide the key pair information to manually create the key pair required for the CSR.
- Select the option Saved to disk and click Continue. Save the file with the
.certSigningRequestextension. - Use the algorithm and key size: RSA(2048). Apple Pay on the Web troubleshooting guide / Create a merchant identity certificate
After obtaining the CSR, follow these steps to create the certificate:
- Log in to your Apple Developer Account.
- In Certificates, Identifiers & Profiles, click Identifiers in the sidebar, then select Merchant IDs in the top-right dropdown menu.
- Find the created Merchant ID and click on it.
- Under Apple Pay Merchant Identity Certificate, click Create Certificate.
- Upload the CSR file by clicking Choose File, select the file, and click Continue.
- Complete the process by clicking Download to save the certificate.
- Send the generated certificate (merchant_id.cer) and private key (if you generated it yourself) to Portmone at
[email protected].
Integrating the payment button: To place the Portmone payment button on the merchant’s page, choose the target location and insert the JavaScript code to load the script and initialize the widget.
After pg.min.js loads, the payment button will be rendered in the same container where the script tag is placed.
Example:
<div class="span4">
<script src="https://www.portmone.com.ua/r3/resources/pg/js/asset/pg.min.js?v=15092019"></script>
<script type="text/javascript" id="portmone-script">
var data = {};
var brand = {
height: "40px",
width: "150px",
buttoncolor: "#FF0000",
fontfamily: "Open Sans",
textcolor: "#FFF",
lang: "uk",
padding: "5px",
border: "1px solid grey",
fontsize: "14px",
closemodal: "Y",
};
PG.success(function (data) {
console.log(JSON.stringify(data));
});
PG.paymentData("gateway", data);
PG.brandButton(brand);
</script>
</div>
Branding the payment button:
The brand object controls the appearance of the “Pay” button that triggers the checkout window.
| Parameter | Description | Required |
|---|---|---|
| height | Sets the button height. By default, it accepts the button style set on the page | No |
| width | Sets the button width. By default, it accepts the button style set on the page | No |
| buttoncolor | Sets the button colour. By default, it accepts the button style set on the page | No |
| fontfamily | Sets the button font type. By default, it accepts the button style set on the page | No |
| textcolor | Sets the button font colour. By default, it accepts the button style set on the page | No |
| lang | Sets the language for displaying the text of the "Pay" / "Download receipt" button. Default value: uk – Ukrainian | No |
| padding | Sets the value of the padding around the button's content. By default, it accepts the button style set on the page | No |
| border | Allows you to specify the style, width and colour of the button's border. By default, it accepts the button style set on the page | No |
| fontsize | Sets the button font size. By default, it accepts the button style set on the page | No |
| closemodal | Determines whether to close a modal window after making a payment. If set to "N", the window is not closed and successful payment notification is displayed in the modal. If set to "Y", the window is closed and the payment data is sent to the merchant's processing function. The default value is "Y" | No |
Widget initialization:
To run the widget, pass a data object that contains merchant information, order parameters, and payment methods.
See the example data object in section "3.4.2 Example of the data object for iframe mode"
Parameters of the data object:
- payee – this block is required for partner identification
| Parameter | Description | Required |
|---|---|---|
| payeeId | A unique identifier of the Online Store. Assigned to each Partner individually when connected to the Portmone.com system | Yes |
| appleMerchantName | Apple Merchant Identifier — Merchant ID. | Yes |
| appleMerchantLabel | The name that will be displayed to the customer in Apple Pay when selecting a card. | Yes |
| login | Company’s login. Used to verify a signature (required if the signature parameter is sent) | No |
| dt | Request creation time. Used to verify a signature (required if the signature parameter is sent) | No |
| signature | Signature of the request | No |
| shopSiteId | Digital identifier of a sales channel | No |
- order – this block contains the order data
| Parameter | Description | Required |
|---|---|---|
| description | Payment description (comment to the order/ payment details) Max 250 symbols | No |
| shopOrderNumber | Number of a paid order in the Partner’s system. Maximum length is 128 symbols | No |
| billAmount | Amount of the payment | Yes |
| preauthFlag | Payment pre-authorization flag (value "Y" indicates that this payment is carried out using the pre-authorization procedure (see section 6 "Payments with pre-authorization"), value "N" is a regular payment without pre-authorization) | No |
| preauthConfirm | Date of automatic withdrawal for payments with pre-authorization. Can be used when the preauthFlag = Y parameter is passed in the request. Should be sent in the following format: YYYYMMDDHH24MISS (date and time after which the pre-authorization is confirmed automatically). It can not be less than the current date | No |
| preauthReject | Date of automatic cancellation of pre-authorization. Can be used when the preauthFlag=Y parameter is passed in the request. Should be sent in the following format: YYYYMMDDHH24MISS (date and time after which the pre-authorization is cancelled automatically). It can not be less than the current date | No |
| billCurrency | Currency of the payment. Default value: UAH | No |
| expTime | Sets the interval (in seconds) during which the order can be paid. If the parameter value was transferred, then from the moment the payment page was called up, a countdown is displayed, which is visible to the Client on the payment page. After payment time expires, the bill gets the "REJECTED" status and cannot be paid | No |
| encoding | Encoding (encodes the request text from the set encoding to UTF-8) | No |
| attribute1 | Service field. Filled at company’s discretion. Maximum length is 1000 symbols | No |
| attribute2 | Service field. Filled at company’s discretion. Maximum length is 1000 symbols | No |
| attribute3 | Service field. Filled at company’s discretion. Maximum length is 1000 symbols | No |
| attribute4 | Service field. Filled at company’s discretion. Maximum length is 1000 symbols | No |
| attribute5 | Used to send the split parameters of the payment (see section 7 "Splitting the payment"). Maximum length is 500 symbols | No |
- paymentTypes – this block allows you to choose payment methods ("Y" – enable, "N" – do not enable). If the parameters are not specified, then the payment methods assigned to the Online Store in the Portmone.com settings are used, or two main payment methods are used: "card", "portmone".
| Parameter | Description | Required |
|---|---|---|
| card | Payment by Card | No |
| portmone | Payment via Portmone.com wallet | No |
| token | Payment by Token (if this option is enabled, other methods are not displayed) | No |
| clicktopay | Payment using Visa Click to Pay | No |
| privat | Payment via LigPay, with choosing a card from the Privat24 Internet Banking | No |
| gpay | Payment via Google Pay, with choosing a card from previously stored in the Google Pay account | No |
| createtokenonly | Creates a Token to make payments by Token (if this option is enabled, other methods are not displayed). This parameter allows you to receive a Card Token without making a real payment (1 UAH is blocked on the account and returned within 30 minutes). Suitable for common payments to the Online Store (see section 4 "Order payment using a payment Token") and for subsequent use for card to card payments (see section 5 "Money transfer from card to card") | No |
| gpayonly | Payment via Google Pay, with choosing a card from previously stored in the Google Pay account (if this option is enabled, other methods are not displayed – only the "Buy with GPay" button is displayed on the payment page) | No |
| applepay | Payment via Apple Pay, with choosing a card from previously stored in the Apple Pay account | No |
| applepayonly | Payment via Apple Pay, with choosing a card from previously stored in the Apple Pay account (if this option is enabled, other methods are not displayed – only the "Apple Pay" button is displayed on the payment page) | No |
| link | Payment by the BankPay method (using the payer's Bank). The method works if the following parameters are passed: expTime та "showEmail": "Y" | No |
- priorityPaymentTypes – this block allows you to manage placement of payment methods on a page. If the value near the payment method name is 0, a tab with the payment method is not displayed, otherwise is placed in ascending order: 1 – at the top of the list, 2 – at the second position, 3 – at the third position, etc.
Important! In
paymentTypesthe payment method must have the "Y" value, in thepriorityPaymentTypesit must have a numeric value other than 0 ("0" disables the display on the payment page).
- token – settings to work with a Token (see section 4 "Order payment using a payment Token")
| Parameter | Description | Required |
|---|---|---|
| tokenFlag | Enables payment by Token ("N" – do not enable, "Y" – take data processing into account) | Required for payment by Token |
| returnToken | "Y" – enables the option to return the Token to the partner on the success page, "N" or empty value – the Token is not returned on the success page | No |
| token | Token value | Required for payment by Token |
| cardMask | Card mask | Required for payment by Token |
| otherPaymentMethods | Allows you to enable other payment methods when the Token is sent ("N" – disable, "Y" – enable) | No |
- payer – this block describes payer settings
| Parameter | Description | Required |
|---|---|---|
| lang | Payment page interface language. Possible values: uk – Ukrainian, en – English | No |
| emailAddress | Email address of the payer | No |
| showEmail | "Y" or empty value – enables displaying the "e-mail" field on the payment page, "N" – hides the "e-mail" field on the payment page (default value is "Y") | No |
Depending on the sent values of the emailAddress and showEmail parameters, there are 4 options for displaying the "e-mail" field on the payment page:
| Option | emailAddress | showEmail | Displaying on the payment page |
|---|---|---|---|
| 1 | empty value | Y | An empty "e-mail" field is displayed |
| 2 | valid e-mail | Y | A prefilled "e-mail" field is displayed that can be edited |
| 3 | empty value | N | The "e-mail" field is not displayed on the payment page. While the payment page opens, no check is performed of whether the Merchant has sent the e-mail address and its validity |
| 4 | valid e-mail | N | The "e-mail" field is not displayed on the payment page. While the payment page opens, no check is performed of whether the Merchant has sent the e-mail address and its validity. However, the e-mail sent in the request is processed and a payment receipt is sent to it |
- style – setup of payment page styles (see section 3.3. "Managing a view of a payment page").
You can customize the view of the payment page using the
styleparameter.
Description of the style parameter fields:
| Field | Description | Page style type, for which a field can be used |
|---|---|---|
| type | Sets the style type of a page: • portmone – default value (standard Portmone.com style, see fig. 3); • brand – full page styling for a partner (see fig. 4); • co-brand – partner’s logo is displayed on the page along with the Portmone.com logo (see fig. 5); • light – the version to display as a frame (see fig. 6). For instructions on how to embed the payment page in a frame, see below | |
| logo | Contains a link to the partner's logo. Supports only link with https scheme. Image format is SVG and PNG only. It is recommended to use an image with a minimum plot indent from all edges | brand, co-brand |
| logoWidth | Parameter defining the width of the logo. Should be entered in the "100px" format. Maximum recommended value is 300px | brand, co-brand |
| logoHeight | Parameter defining the height of the logo. Should be entered in the "100px" format. Maximum recommended value is 50px (maximum height for PNG – 53px) | brand, co-brand |
| backgroundColorHeader | Sets the colour of a header section on the page. The input format is HEX (for example, #ff0000) | brand, light |
| backgroundColorButtons | Sets the colour of buttons. The input format is HEX (for example, #ff0000) | brand, light |
| colorTextAndIcons | Sets text and icon colour. The input format is HEX (for example, #ff0000) | brand, light |
| borderColorList | Sets the colour of lines in the list of payment methods. The input format is HEX (for example, #ff0000) | brand, light |
| bcMain | Specifies the colour to fill page background. The input format is HEX (for example, #ff0000) | brand, light |
| privatButtonPosition | When using the "privat" payment method, this parameter defines the placement of the Privat24 button on the payment form. The button's position can be set to one of three options: "top" (at the top of the payment form), "middle" (in the middle of the payment form), or "bottom" (at the bottom of the payment form). The default value is "bottom". | portmone, brand, light, co-brand |
| closeVisible | Allows you to control the visibility of the “Close” button in the payment frame. Accepts values "Y" or "N". | portmone, brand, light, co-brand |
- goods — optional array with fiscalization data.
| Parameter | Description | Required |
|---|---|---|
| internalCode | Seller's code | Yes |
| manufacturerCode | Manufacturer's code | No |
| govClassificationCode | UKTZED code | Yes |
| name | Product/service name | Yes |
| name_en | Product/service name in English | No |
| description | Product/service description | No |
| description_en | Product/service description in English | No |
| price | Price (per unit) | Yes |
| quantity | Quantity | Yes |
| uomCode | Unit of measure (optional, default is unit) | No |
| amount | Amount | Yes |
| serviceFlag | Service indicator (N - product) | No |
| taxRateCodes | Numeric tax rate code (pre-programmed in the tax agent's dashboard). For multiple taxes, separate by commas | Yes |
| descriptionUrl | Product description URL | No |
| imageUrl | Product image URL | No |
Service functions:
-
PG.success – this function takes the data object that describes the payment made. In case the Merchant does not process the data, the payment button changes its state and name, and payer can download the payment receipt upon clicking on it.
-
PG.brandButton – this function takes an object that describes and stylizes a payment button.
-
PG.paymentData – this function initializes and places the payment button on the Merchant's page.
This function takes the following parameters:
PG.paymentData(typePayment, data, typeView);
Where:
1) typePayment – a string that characterizes the payment type used. Can take the following values:
| Value | Desctiption |
|---|---|
| gateway | This type of payment allows you to create and process a typical payment based on the transmitted data. The data object is generated as for a regular JSON-based request |
| stock | This type of payment is used to process a payment based on the product identifier, which was created in the Merchant’s Personal Area. In this case the data object has the follwing structure: var data = { "id":"303429c03b3a743bdf8ee02" }; |
| terminal | This type of payment saves the processing of the data object properties, which are transferred when paying using the terminal type, but allows you to leave billAmount, description, attribute1, attribute2, attribute3, attribute4 fields blank to further initialization this data by the payer |
| p2p | This type of payment allows you to process a payment with crediting funds to the Merchant's card, which has been verified and added to the Merchant's Personal Area. In this case the data object has the follwing structure: var data = { "hash":"" };, where hash – value from the payment link |
2) typeView – а string that characterizes the modal window type:
- modal – opens the payment window in a new browser window with the specified sizes (see fig. 7).
- frame – opens the payment window in a frame (see fig. 8);
-
PG.create – this function creates a payment frame based on the data passed into the PG. paymentData function. The function can be used when Merchant creates its own mechanisms for calling a payment frame. Does not contain any parameters.
-
PG.setButtonId – this function can be used for cases when Merchant stylizes the frame call button himself and initializes his own text on the button. The function takes the
idattribute used for the Merchant's button HTML element as an argument. For example:PG.setButtonId('paymentButton');. After that, when the button is pressed, the Portmone payment frame opens to the Merchant.
This function should be used in combination with the PG.create function.
Example:
- a frame creating based on settings from the PG. paymentData function
PG.paymentData("gateway",data,"frame"); PG.create();
- Merchant's button id setting
PG.setButtonId('paymentButton');
Additional capabilities:
- Mount the frame into a specific page element
- Create a div with a unique id.
- Place it high in the DOM tree.
- In the
datainitialization object, passframeHolderIdequal to that id.
"frameHolderId": "paymentFrame1"
- Control the "Close" button in the payment frame
In the style block of the
dataobject, set the parametercloseVisible:"Y"— show the Close button (default)
"N"— hide the Close button
To handle the frame-close event, use the PG.onClose() callback:
PG.onClose(function () {
console.log("close event");
});
Response structure:
If Merchant initialize the data processing on its side through the PG.success function after making a payment by the client, it is necessary to implement the processing of data that will be passed to the processing function.
Description of parameters passed to the processing function:
| Parameter | Description |
|---|---|
| status | Transaction status. Takes the value PAYED |
| errorCode | Error Code |
| error | Remains unfilled |
| shopBillId | A unique identifier (Id) assigned to every transaction (payment document) in the Portmone.com system |
| billAmount | Amount of the payment |
| shopOrderNumber | Number of paid order (bill) in the Merchant's system. Maximum length is 128 symbols |
| cardMask | Payer’s Card mask |
| attribute1 | Service field |
| attribute2 | Service field |
| attribute3 | Service field |
| attribute4 | Service field |
| receiptLink | Link to get a receipt |
| lang | Payment system interface language. Possible values: uk – Ukrainian, en – English |
| description | Comment to the order / description of payment details. Maximum length is 250 symbols |
| token | Card token |
| commission | The value of the commission from payment |
| payeeName | Merchant name |
| billCurrency | Currency of the payment |
| IPSTokenValue | A unique Visa token |
| errorIPSCode | Error code if Visa token was not created |
| errorIPSMessage | Error message if Visa token was not created |

Fig. 8 – Example of a payment window displayed in a frame on the merchant’s website
3.5. Signature
The rule to create a value for the signature field (example for PHP):
$login = 'WDISHOP';
$payeeId = '1185';
$shopOrderNumber = 'test';
$billAmount='1';
$key = 'BDFC166F8AE2F5323A557DB6CA16758D';
$dt = date("YmdHis");
$strToSignature = $payeeId.$dt.bin2hex($shopOrderNumber).$billAmount;
$strToSignature = strtoupper($strToSignature).strtoupper(bin2hex($login));
$signature = strtoupper(hash_hmac('sha256', $strToSignature, $key));
echo $signature;
| Parameter | Description | Required |
|---|---|---|
| login | Company login | Yes |
| payeeId | A unique identifier of the Online Store. Assigned to each Partner individually when connected to the Portmone.com system | Yes |
| shopOrderNumber | Number of paid order (bill) in the Merchant's system | No |
| billAmount | Amount of the payment | Yes |
| key | The key that is provided to each Partner individually when connecting to the Portmone.com system | Yes |
| dt | date | Yes |
The set of fields to create a
signaturemay vary for different methods. In case of differences from the example above, the set of fields involved in thesignaturegeneration will be given directly in the description of the method.
3.6. Exchange rate
Description: This method allows you to get information about the exchange rate
Request should be sent at:https://www.portmone.com.ua/r3/api/gateway
Request structure:
Please, refer to "3.6 Exchange rate" to study the request structure.
Parameters for generating JSON-structure of request:
| Parameter | Description | Required |
|---|---|---|
| payeeId | A unique identifier of the Online Store. Assigned to each Partner individually when connected to the Portmone.com system | Yes |
| date | date | Yes |
Response structure:
Please, refer to "3.6 Exchange rate" to study the response structure.
Response parameters description:
| Parameter | Description |
|---|---|
| key | Currency name |
| value | exchange rate |
Important:
If the currency exchange rate is not set, an error is returned
"code": 500 "message": "Не знайдено курсу валют за вашими налаштуваннями. Зверніться до менеджера за уточненням деталей."
If the request is for an incorrect date, an error is returned
"code": 500 "message": "Не валідний параметр date. Формат для запиту: dd-mm-yyyy"
3.7 Installment Payments
Installment payments allow customers to pay for their orders gradually, in several parts, through Portmone partner banks.
This payment method is configured using the installmentPlan block. If the installmentPlan block is not provided, but the paymentTypes block contains the parameter installment=Y, all available installment options will be displayed on the payment page with default settings.
To specify the number of installment months for each bank, add the installmentPlan object to the request body (see sections 3.2. JSON Request and 12.5. Creating a Payment Link) in the following format:
"installmentPlan": {
"privat24": {
"parts": "3"
},
"oschad": {
"parts": "5"
},
"monobank": {
"parts": "8"
},
"pumb": {
"parts": "03"
}
}
| Parameter | Description | Required |
|---|---|---|
| privat24 | Installment payment from PrivatBank | No |
| oschad | Installment payment from Oschadbank | No |
| monobank | Installment payment from Monobank | No |
| pumb | Installment payment from PUMB | No |
| parts | Sets the maximum number of months for installments | No |
Installment from Privat Bank
To display installments on the payment page, you need to pass the installment=Y parameter in the paymentTypes block and specify the order of method location in the priorityPaymentTypes block, for example: "installment":"3"
An example of a payment in installments page from PrivatBank
An example of payment in installments from PrivatBank
To connect this method, the merchant must have an account in Privat Bank, and the payer must have a card.
Installment from Monobank
To display installments on the payment page, you need to pass the installment=Y parameter in the paymentTypes block and specify the order of method location in the priorityPaymentTypes block, for example: "installment":"3"
To be able to transfer the payer's phone number, you need to transfer the parameter phoneNumber=635337143 in the format 635337143 in the payer block
An example of a payment in installments page from Monobank
An example of payment in installments from Monobank
Installment from Oschadbank
To display installments on the payment page, you need to pass the installment=Y parameter in the paymentTypes block and specify the order of method location in the priorityPaymentTypes block, for example: "installment":"3"
An example of a payment in installments page from Oschadbank
Example of payment by installments from Oschadbank
Installment from PUMB
To display installments on the payment page, you need to pass the installment=Y parameter in the paymentTypes block and specify the order of method location in the priorityPaymentTypes block, for example: "installment":"4"
An example of a payment in installments page from PUMB
Example of payment by installments from PUMB
4. Order payment using a payment Token
4.1. Token creation
Description:
This method allows you to get a value of the Token and the Client’s card mask. After performing this payment method, you will get the Token value and the mask of the Client’s Payment Card, which you can offer to the Client as a payment method on your resource. In the process of performing token creation operation, Portmone.com will perform authorization hold for 1 hryvnia on the Client's card, with the subsequent return of this amount to the Client's card.
Request should be sent at: https://www.portmone.com.ua/gateway/.
Availability and restrictions:
The description field sent by this method is the key to further payments by Token. It must be the same for further transactions as was provided in the first transaction. If this parameter is changed in further payments by Token, Client will receive an error message.
Request structure:
Please, refer to "4.1 Token creation request" to study the request structure.
Parameters for generating JSON-structure of request:
- paymentTypes – this block allows you to choose payment methods ("Y" – enable, "N" – do not enable).
| Parameter | Description | Required |
|---|---|---|
| createtokenonly | To create a Token, you must set the value to "Y" for this parameter | Yes |
- priorityPaymentTypes – this block allows you to manage placement of payment methods on a page
| Parameter | Description | Required |
|---|---|---|
| createtokenonly | To create a Token, you must set the value to "1" for this parameter | Yes |
- payee – this block is required for partner identification
| Parameter | Description | Required |
|---|---|---|
| payeeId | A unique identifier of the Online Store. Assigned to each Partner individually when connected to the Portmone.com system | Yes |
| login | Company’s login. Used to verify a signature (required if the signature parameter is sent) | No |
| dt | Request creation time. Used to verify a signature (required if the signature parameter is sent) | No |
| signature | Signature of the request | No |
| shopSiteId | Digital identifier of a sales channel | No |
- order – this block contains the order data
| Parameter | Description | Required |
|---|---|---|
| description | Payment description (comment to the order/ payment details) | Required, identifies the Token in subsequent payments |
| shopOrderNumber | Number of paid order in the Partner’s system | No |
| billAmount | Amount of the payment (set the value to "1" (in UAH) to get the Token) | Yes |
| successUrl | The URL of the Online Store to which the client will be redirected after a successful payment. Maximum number of characters 250 | No |
| failureUrl | The URL of the Online Store to which the client will be redirected in case of payment rejection. Maximum number of characters 250 | No |
| preauthFlag | Payment pre-authorization flag. Mandatory value to receive a Token – "N" (a regular payment without pre-authorization) | No |
| billCurrency | Currency of the payment. Default value: UAH | No |
| encoding | Encoding (encodes the request text from the set encoding to UTF-8) | No |
| attribute1-4 | Service fields. Filled at company’s discretion | No |
- token – settings to work with a Token
| Parameter | Description | Required |
|---|---|---|
| tokenFlag | Enables payment by Token ("N" – do not enable, "Y" – take the data processing into account) | Required for payment by Token |
| returnToken | "Y" – enables the option to return the Token to the partner on the success page, "N" or empty value – the Token is not returned on the success page | No |
| token | Token value | Leave empty |
| cardMask | Card mask | Leave empty |
| otherPaymentMethods | Allows you to enable other payment methods when the Token is sent ("N" – disable, "Y" – enable) | Mandatory value is "N" |
- payer – this block describes payer settings
| Parameter | Description | Required |
|---|---|---|
| lang | Payment page interface language. Possible values: uk – Ukrainian, en – English | No |
| emailAddress | Email address of the payer | No |
- style – setup of payment page styles (see section 3.3. "Managing a view of a payment page").
Response structure:
Please, refer to "4.1 Token creation response (successful)" to study the response structure.
Response parameters description:
| Parameter | Description |
|---|---|
| SHOPBILLID | A unique identifier (ID) assigned to each transaction (payment document) in the Portmone.com system |
| SHOPORDERNUMBER | Number of paid order (bill) in the Online Store system. Maximum length is 120 symbols |
| APPROVALCODE | Authorization code |
| BILL_AMOUNT | Transaction amount sent in request |
| TOKEN | Token value for subsequent payments |
| RESULT | The result of the operation (if successful = 0) |
| CARD_MASK | Payer’s Card mask |
| ATTRIBUTE1 | Service field. Filled at company's discretion |
| ATTRIBUTE2 | Service field. Filled at company's discretion |
| ATTRIBUTE3 | Service field. Filled at company's discretion |
| ATTRIBUTE4 | Service field. Filled at company's discretion |
| RECEIPT_URL | Link to get a receipt |
| LANG | Payment system interface language. Possible values: uk – Ukrainian, en – English |
| DESCRIPTION | Comment to the order / description of payment details. Maximum length is 250 symbols |
4.2. Payment by Token
4.2.1. POST request
Description:
To make a payment via Token you should send a request using the POST method to the payment gateway page – https://www.portmone.com.ua/r3/token/secure/token.
Availability and restrictions:
No restrictions.
Request structure:
Please, refer to "4.2.1 Payment by Token. POST request" to study the request structure.
Request parameters description:
| Parameter | Description |
|---|---|
| payee_id | A unique identifier of the Online Store. Assigned to each Partner individually when connected to the Portmone.com system |
| shop_order_number | Number of paid order (bill) in the Online Store. Maximum length is 120 symbols |
| bill_amount | Amount of the order. Currency – hryvnia (UAH). The decimal separator is the dot symbol "." |
| description | Comment to the order / description of payment. Maximum length is 250 symbols |
| application_url | The URL of the Online Store (internal URL of the mobile application) to which the client will be redirected after a successful card authorization. After successful payment of the order Portmone.com will send shop_order_number and the payment data to this address using the POST method |
| lang | Payment system interface language. Possible values: uk – Ukrainian, en – English |
| token | You must set the value of the token obtained in the previous step |
| attribute1-4 | Service fields. Filled at company’s discretion |
| attribute5 | Used to send the split parameters of the payment (see section 7 "Splitting the payment") |
Response structure:
Please, refer to "4.2.1 Payment by Token. Response (successful)" to study the response structure.
Response parameters description:
| Parameter | Description |
|---|---|
| BILL_AMOUNT | Transaction amount sent in request |
| SHOPORDERNUMBER | Number of paid order (bill) in the Online Store system. Maximum length is 120 symbols |
| APPROVALCODE | Authorization code |
| RECEIPT_URL | Link to get a receipt |
| TOKEN | Token value for subsequent payments |
| CARD_PAYMENT_SYSTEM | The value of the payment system (VISA, MASTERCARD, PROSTIR) |
| CARD_LAST_DIGITS | Last 4 digits of Payment Card number |
| RESULT | The result of the operation (if successful = 0) |
4.2.2. JSON request
Description:
To make a payment via Token you should send a request to the following URL: https://www.portmone.com.ua/gateway/.
Availability and restrictions:
No restrictions.
Request structure:
Please, refer to "4.2.2 Payment by Token. JSON request" to study the request structure.
Parameters to generate the data:
- payee – this block is required for partner identification
| Parameter | Description | Required |
|---|---|---|
| payeeId | A unique identifier of the Online Store. Assigned to each Partner individually when connected to the Portmone.com system | Yes |
| login | Company’s login. Used to verify a signature (required if the signature parameter is sent) | No |
| dt | Request creation time. Used to verify a signature (required if the signature parameter is sent) | No |
| signature | Signature of the request | No |
| shopSiteId | Digital identifier of a sales channel | No |
- order – this block contains the order data
| Parameter | Description | Required |
|---|---|---|
| description | Payment description (comment to the order/ payment details) | No |
| shopOrderNumber | Number of paid order in the Partner’s system | No |
| billAmount | Amount of the payment | Yes |
| successUrl | The URL of the Online Store to which the client will be redirected after a successful payment. Maximum number of characters 250 | No |
| failureUrl | The URL of the Online Store to which the client will be redirected in case of payment rejection. Maximum number of characters 250 | No |
| preauthFlag | Payment pre-authorization flag (value "Y" indicates that this payment is carried out using the pre-authorization procedure (see section 6 "Payments with pre-authorization"), value "N" is a regular payment without pre-authorization) | No |
| billCurrency | Currency of the payment. Default value: UAH | No |
| encoding | Encoding (encodes the request text from the set encoding to UTF-8) | No |
| attribute1 | Service field. Filled at company's discretion | No |
| attribute2 | Service field. Filled at company's discretion | No |
| attribute3 | Service field. Filled at company's discretion | No |
| attribute4 | Service field. Filled at company's discretion | No |
| attribute5 | Used to send the split parameters of the payment (see section 7 "Splitting the payment") | No |
- paymentTypes – this block allows you to choose payment methods ("Y" – enable, "N" – do not enable). If the parameters are not specified, then the payment methods assigned to the Online Store in the Portmone.com settings are used, or two main payment methods are used: "card", "portmone".
| Parameter | Description | Required |
|---|---|---|
| card | Payment by Card | No |
| portmone | Payment via Portmone.com wallet | No |
| token | Payment by Token (if this option is enabled, other methods are not displayed) | No |
| clicktopay | Payment using Visa Click to Pay | No |
| qr | Adds a tab to generate payment QR-code | No |
- priorityPaymentTypes – this block allows you to manage placement of payment methods on a page. If the value near the payment method name is 0, a tab with the payment method is not displayed, otherwise is placed in ascending order: 1 – at the top of the list, 2 – at the second position, 3 – at the third position, etc.
Important! In
paymentTypesthe payment method must have the "Y" value, in thepriorityPaymentTypesit must have a numeric value other than 0 ("0" disables the display on the payment page).
- token – settings to work with a Token
| Parameter | Description | Required |
|---|---|---|
| tokenFlag | Enables payment by Token ("N" – do not enable, "Y" – take the data processing into account) | Yes |
| returnToken | "Y" – enables the option to return the Token to the partner on the success page, "N" or empty value – the Token is not returned on the success page | No |
| token | Token value | Yes |
| cardMask | Card mask | Yes |
| otherPaymentMethods | Allows you to enable other payment methods when the Token is passed ("N" - disable, "Y" - enable) | No |
- payer – this block describes payer settings
| Parameter | Description | Required |
|---|---|---|
| lang | Payment page interface language. Possible values: uk – Ukrainian, en – English | No |
| emailAddress | Email address of the payer | No |
- style – setup of payment page styles (see section 3.3. "Managing a view of a payment page").
Response structure:
Please, refer to "4.2.2 Payment by Token. Example of successful response to the JSON request" to study the response structure.
Response parameters description:
| Parameter | Description |
|---|---|
| SHOPBILLID | A unique identifier (ID) assigned to each transaction (payment document) in the Portmone.com system |
| SHOPORDERNUMBER | Number of paid order (bill) in the Online Store system. Maximum length is 120 symbols |
| APPROVALCODE | Authorization code |
| BILL_AMOUNT | Transaction amount sent in request |
| TOKEN | Token value for subsequent payments |
| RESULT | The result of the operation (if successful = 0) |
| CARD_MASK | Payer’s Card mask |
| ATTRIBUTE1 | Service field. Filled at company's discretion |
| ATTRIBUTE2 | Service field. Filled at company's discretion |
| ATTRIBUTE3 | Service field. Filled at company's discretion |
| ATTRIBUTE4 | Service field. Filled at company's discretion |
| RECEIPT_URL | Link to get a receipt |
| LANG | Payment system interface language. Possible values: uk – Ukrainian, en – English |
| DESCRIPTION | Comment to the order / description of payment details. Maximum length is 250 symbols |
4.3. Payment by Token without CVV2 (recurring payment)
Description:
To make a payment by Token without CVV2 you should send a request to the following URL: https://www.portmone.com.ua/r3/recurrent/.
Availability and restrictions:
No restrictions.
Request structure:
Please, refer to "4.3 Recurring payment request" to study the request structure.
Request parameters description:
| Parameter | Description |
|---|---|
| login | The Online Store login to access account management |
| password | The Online Store password |
| payeeId | A unique identifier of the Online Store. Assigned to each Partner individually when connected to the Portmone.com system |
| shopOrderNumber | Number of paid order (bill) in the Online Store system. Maximum length is 120 symbols |
| token | You must set the value of the token obtained in the previous step |
| description | Comment to the order / description of payment details. Maximum length is 250 symbols |
| billAmount | Amount of the payment. The decimal separator is the dot symbol "." |
| billCurrency | Currency of the payment. Default value: UAH |
| preauthFlag | Payment pre-authorization flag (value "Y" indicates that this payment is carried out using the pre-authorization procedure (see section 6 "Payments with pre-authorization"), value "N" is a regular payment without pre-authorization) |
| id | ID of the request from the Online Store to the Portmone.com system |
Response structure:
Please, refer to "4.3 Recurring payment request" to study the response structure
Response parameters description:
| Parameter | Description |
|---|---|
| result | Order status attribute. Possible values: PAYED, CREATED, REJECTED. |
| shopOrderNumber | Number of an order (bill) in the Online Store system. Maximum length is 120 symbols |
| description | Comment to the order / description of payment details. Maximum length is 250 symbols |
| id | ID of the request from the Online Store to the Portmone.com system |
Important! If you receive an error on a token request, we recommend making the next request no earlier than 72 hours later.
4.4. Forming an order (payment message) in Viber Bot
Description:
A request must be sent to the URL: https://www.portmone.com.ua/r3/api/gateway.
Availability and restrictions:
Operation is possible only for those users who are registered in Portmone Viber Bot.
JSON request structure:
{
"method":"initViberPayment",
"params":{
"data":{
"payeeId":"11344",
"billAmount":"1",
"shopOrderNumber":"shp_0001",
"description":"test",
"msisdnClient":"+380630000000",
"paymentMessage":"test message",
"attribute1":"",
"attribute2":"",
"attribute3":"",
"attribute4":"",
"attribute5":"",
"preauthFlag":"N",
"emailAddress":"[email protected]",
"credentials":""
}
},
"id":"1"
}
Request parameters description:
| Parameter | Description |
|---|---|
| payeeId | A unique identifier of the Online Store. Assigned to each Partner individually when connected to the Portmone.com system |
| billAmount | Amount of the payment. The decimal separator is the dot symbol “.” |
| shopOrderNumber | Number of an order (bill) in the Online Store system. Maximum length is 120 symbols |
| description | Comment to the order / description of payment details. Maximum length is 250 symbols |
| msisdnClient | Client's phone number |
| paymentMessage | Message for the client in Viber Bot. Maximum 250 symbols |
| attribute1, attribute2, attribute3, attribute4, attribute5 | Attributes of the operation, optional |
| preauthFlag | Should be N |
| emailAddress | Client's Email |
| credentials | Required authorization data, can be obtained as a hash string here (in the cabinet) - https://www.portmone.com.ua/b2b_dash/request/subscriptions |
| id | ID of the request from the Online Store to the Portmone.com system |
Response structure:
{
"result": {
"errorCode": "0",
"error": "",
"linkqr": "",
"linkbot": ""
},
"id": "1"
}
Response parameters description:
| Parameter | Description |
|---|---|
| errorCode | Error code |
| error | Error description is empty in case of a successful response. If the client was not found, the text "Client not found" will be returned |
| linkqr | Link to the QR code of the chat bot |
| linkbot | Link to the chat bot |
| id | ID of the request from the Online Store to the Portmone.com system |
4.5. Getting IPS data by Portmone token
Description:
The request must be sent to the URL: https://www.portmone.com.ua/r3/api/gateway.
Availability and restrictions:
Available after a card payment is made.
JSON request structure:
{
"method":"getDataTokenIPS",
"params":{
"data":{
"login":${MERCHANT_LOGIN},
"password":${MERCHANT_PASSWORD},
"tokenType":"PORTMONE",
"tokenReference":${TOKEN_REFERENCE}
}
},
"id":"1"
}
Request parameters description:
| Parameter | Description |
|---|---|
| MERCHANT_LOGIN | Merchant's login in the Portmone system |
| MERCHANT_PASSWORD | Merchant's password in the Portmone system |
| TOKEN_REFERENCE | Card token, returned by the Portmone system |
Response structure and example (Mastercard):
{
"result": {
"token_type": "M4M",
"token_info": {
"tokenUniqueReference": "DM4MMC0000****ed8d7249e",
"panUniqueReference": "FM4MMC000012971373*****6a75a3cf",
"productConfig": {
"termsAndConditionsUrl": "",
"issuerName": ",
"cardBackgroundCombinedAssetId": "954e89****8655a",
"iconAssetId": "7fcf53be****cf1fbfe",
"foregroundColor": "ffffff",
"issuerLogoAssetId": "cd90eb72****5cc1",
"shortDescription": "",
"customerServiceEmail": "",
"customerServicePhoneNumber": "",
"customerServiceUrl": "",
"isCoBranded": "false",
"brandLogoAssetId": "3789637f****c509"
},
"tokenInfo": {
"tokenPanSuffix": "4444",
"accountPanSuffix": "4444",
"tokenExpiry": "0823",
"accountPanExpiry": "",
"productCategory": "DEBIT",
"dsrpCapable": true,
"tokenAssuranceLevel": ""
}
}
},
"id": "1"
}
Response key parameters description:
| Parameter | Description |
|---|---|
| TOKEN_TYPE | Token type depending on the IPS |
| id | Unique response ID |
Response structure and example (Visa):
{
"result": {
"token_type": "VTS",
"token_info": {
"vPanEnrollmentID": "724bfc****38701",
"paymentInstrument": {
"expirationDate": {
"month": "11",
"year": "2023"
},
"last4": "1111",
"cvv2PrintedInd": "Y",
"expDatePrintedInd": "Y",
"enabledServices": {
"merchantPresentedQR": "N"
}
},
"cardMetaData": {
"backgroundColor": "0xffff00",
"foregroundColor": "0x000000",
"labelColor": "0x000000",
"contactWebsite": "https://www.aval.ua",
"contactEmail": "[email protected]",
"contactNumber": "+380444908888",
"contactName": "Raiffeisen Bank Aval",
"privacyPolicyURL": "https://www.aval.ua/storage/files/politika-konfidencijnosti-04042019_1554448866.pdf",
"termsAndConditionsURL": "https://aval.ua/storage/files/wallet-pi.pdf",
"shortDescription": "Visa Classic",
"cardData": [
{
"guid": "8407fa4e5****d705f6cb07",
"contentType": "cardSymbol",
"content": [
{
"mimeType": "image/png",
"width": "100",
"height": "100"
}
]
},
{
"guid": "09e037d****c17995ddf6",
"contentType": "digitalCardArt",
"content": [
{
"mimeType": "image/png",
"width": "1536",
"height": "969"
}
]
}
],
"issuerFlags": {
"deviceBinding": false,
"cardholderVerification": false,
"trustedBeneficiaryEnrollment": false,
"delegatedAuthenticationSupported": true
}
},
"vProvisionedTokenID": "ebc77cd5****bcc8885e01",
"tokenInfo": {
"tokenRequestorID": "1111111111",
"tokenStatus": "ACTIVE",
"last4": "",
"expirationDate": {
"month": "",
"year": ""
}
}
}
},
"id": "1"
}
Response key parameters description:
| Parameter | Description |
|---|---|
| TOKEN_TYPE | Token type depending on the IPS |
| id | Unique response ID |
| tokenInfo, cardMetaData, cardData | Card meta data |
4.6. Getting an asset by the unique IPS ID
Description:
The request must be sent to the URL: https://www.portmone.com.ua/r3/api/gateway.
Availability and restrictions:
Available after getting the IPS ID using getDataTokenIPS method according to p. 4.5. For getting an asset of each type it is necessary to make unique request containing the corresponding ID.
JSON request structure and example:
{
"method":"getMetaDataTokenIPS",
"params":{
"data":{
"login":${MERCHANT_LOGIN},
"password":${MERCHANT_PASSWORD},
"tokenType":${TOKEN_TYPE},
"metaDataId":${ASSET_ID}
}
},
"id":"1"
}
Request parameters description:
| Parameter | Description |
|---|---|
| MERCHANT_LOGIN | Merchant’s login in the Portmone system |
| MERCHANT_PASSWORD | Merchant’s password in the Portmone system |
| TOKEN_TYPE | Token type received using getDataTokenIPS method according to p. 4.5 |
| ASSET_ID: | Asset ID received using getDataTokenIPS method according to p. 4.5 (AssetId\guid) |
Response structure and example:
{
"result": {
"mediaContents": [
{
"data": "", //Base64 encoded content
"width": 1536,
"type": "image\/png",
"height": 969
}
]
},
"id": "1"
}
4.7. Payment by Token with 3D Secure without CVV2 (recurring payment)
Description:
To make a payment by Token without CVV2 you should send a request to the following URL: https://www.portmone.com.ua/r3/recurrent/.
Availability and restrictions:
No restrictions.
Request structure:
Please, refer to "4.7 Recurring payment request" to study the request structure.
Request parameters description:
| Parameter | Description | Required |
|---|---|---|
| method | Value: paywith3ds | Yes |
| password | The Online Store password | Yes |
| payeeId | A unique identifier of the Online Store. Assigned to each Partner individually when connected to the Portmone.com system | Yes |
| shopOrderNumber | Number of paid order (bill) in the Online Store system. Maximum length is 120 symbols | No |
| token | You must set the value of the token obtained in the previous step | Yes |
| description | Comment to the order / description of payment details. Maximum length is 250 symbols | Yes |
| billAmount | Amount of the payment. The decimal separator is the dot symbol "." | Yes |
| billCurrency | Currency of the payment. Default value: UAH | No |
| successUrl | The URL of the Online Store to which the client will be redirected after a successful payment | No |
| attribute1 | Service field. Filled at company's discretion | No |
| attribute2 | Service field. Filled at company's discretion | No |
| attribute3 | Service field. Filled at company's discretion | No |
| attribute4 | Service field. Filled at company's discretion | No |
| id | ID of the request from the Online Store to the Portmone.com system | Yes |
Response structure if 3D Secure check is required:
Please, refer to "4.7.1 response if 3D Secure check is required" to study the response structure
Response parameters description:
| Parameter | Description |
|---|---|
| status | Order status.Possible values: - PAYED – paid, - CREATED – created, - REJECTED – rejected. |
| shopbillId | Order ID in the Portmone.com system |
| shopOrderNumber | Number of paid order (bill) in the Online Store system. Maximum length is 120 symbols |
| description | Comment to the order / description of payment details. Maximum length is 250 symbols |
| pdfUrl | It remains empty |
| authCode | Bank authorization code (added if the order is paid) |
| isNeed3DS | 3DS-authorization flag ("Y" - 3D Secure check is required, "N" - no additional actions required) |
| actionMPI | The card issuing bank page URL to which client should be redirected to confirm payment with 3D Secure |
| id | ID of the request from the Online Store to the Portmone.com system |
Response structure:
Please, refer to "4.7.2 Response to return after 3D Secure" to study the response structure.
Response parameters description:
| Parameter | Description |
|---|---|
| shopbillId | Order ID in the Portmone.com system |
| status | Order status.Possible values: - PAYED – paid, - CREATED – created, - REJECTED – rejected. |
| billAmount | Amount of the payment. The decimal separator is the dot symbol "." |
| billNumber | Number of paid order (bill) in the Online Store system. Maximum length is 120 symbols |
| payeeName | |
| authCode | Bank authorization code (added if the order is paid) |
| commission | The value of the commission from payment |
| pdfUrl | It remains empty |
| payeeId | A unique identifier of the Online Store |
| payDate | Date of payment |
| description | Comment to the order / description of payment details. Maximum length is 250 symbols |
| cardMask | Card mask |
| errorMessage | Error message |
| errorCode | Error code |
A successful response structure when no 3Ds need to be passed:
Please, refer to "4.7.3 successful response" to study the response structure.
Response parameters description:
| Parameter | Description |
|---|---|
| status | Order status.Possible values: - PAYED – paid, - CREATED – created, - REJECTED – rejected. |
| shopbillId | Order ID in the Portmone.com system |
| shopOrderNumber | Number of paid order (bill) in the Online Store system. Maximum length is 120 symbols |
| description | Comment to the order / description of payment details. Maximum length is 250 symbols |
| pdfUrl | Link to receipt |
| authCode | Bank authorization code (added if the order is paid) |
| isNeed3DS | 3DS-authorization flag ("Y" - 3D Secure check is required, "N" - no additional actions required |
| actionMPI | The card issuing bank page URL to which client should be redirected to confirm payment with 3D Secure |
| id | ID of the request from the Online Store to the Portmone.com system |
Structure of a failed response:
Please, refer to "4.7.4 failed response" to study the response structure.
Response parameters description:
| Parameter | Description |
|---|---|
| Code | Error code |
| Message | Error message |
| id | ID of the request from the Online Store to the Portmone.com system |
4.8 Token payment with the appearance of the card without CVV2
Description:
To make Token payment with the appearance of the card without CVV2 a request to the following URL: https://www.portmone.com.ua/gateway/.
Availability and restrictions:
No restrictions.
Request structure:
Please, refer to "4.8 Payment by Token. JSON request" to study the request structure.
Parameters to generate the data:
- payee – this block is required for partner identification
| Parameter | Description | Required |
|---|---|---|
| payeeId | A unique identifier of the Online Store. Assigned to each Partner individually when connected to the Portmone.com system | Yes |
| credentials | Required authorization data, can be obtained as a hash string here (in the cabinet) - https://www.portmone.com.ua/b2b_dash/request/subscriptions | Yes |
- order – this block contains the order data
| Parameter | Description | Required |
|---|---|---|
| description | Payment description (comment to the order/ payment details) | No |
| shopOrderNumber | Number of paid order in the Partner’s system | No |
| billAmount | Amount of the payment | Yes |
| successUrl | The URL of the Online Store to which the client will be redirected after a successful payment. Maximum number of characters 250 | No |
| failureUrl | The URL of the Online Store to which the client will be redirected in case of payment rejection. Maximum number of characters 250 | No |
| preauthFlag | Payment pre-authorization flag (value "Y" indicates that this payment is carried out using the pre-authorization procedure (see section 6 "Payments with pre-authorization"), value "N" is a regular payment without pre-authorization) | No |
| billCurrency | Currency of the payment. Default value: UAH | No |
| encoding | Encoding (encodes the request text from the set encoding to UTF-8) | No |
| attribute1 | Service field. Filled at company's discretion | No |
| attribute2 | Service field. Filled at company's discretion | No |
| attribute3 | Service field. Filled at company's discretion | No |
| attribute4 | Service field. Filled at company's discretion | No |
| attribute5 | Used to send the split parameters of the payment (see section 7 "Splitting the payment") | No |
- paymentTypes – this block allows you to choose payment methods ("Y" – enable, "N" – do not enable). If the parameters are not specified, then the payment methods assigned to the Online Store in the Portmone.com settings are used, or two main payment methods are used: "card", "portmone".
| Parameter | Description | Required |
|---|---|---|
| token | Payment by Token (if this option is enabled, other methods are not displayed) | Yes |
- priorityPaymentTypes – this block allows you to manage placement of payment methods on a page. If the value near the payment method name is 0, a tab with the payment method is not displayed, otherwise is placed in ascending order: 1 – at the top of the list, 2 – at the second position, 3 – at the third position, etc.
Important! In
paymentTypesthe payment method must have the "Y" value, in thepriorityPaymentTypesit must have a numeric value other than 0 ("0" disables the display on the payment page).
- token – settings to work with a Token
| Parameter | Description | Required |
|---|---|---|
| tokenFlag | Enables payment by Token ("N" – do not enable, "Y" – take the data processing into account) | Yes |
| returnToken | "Y" – enables the option to return the Token to the partner on the success page, "N" or empty value – the Token is not returned on the success page | No |
| token | Token value | Yes |
| cardMask | Card mask | Yes |
| otherPaymentMethods | Allows you to enable other payment methods when the Token is passed ("N" - disable, "Y" - enable) | No |
- payer – this block describes payer settings
| Parameter | Description | Required |
|---|---|---|
| lang | Payment page interface language. Possible values: uk – Ukrainian, en – English | No |
| emailAddress | Email address of the payer | No |
| showEmail | "Y" or empty value – enables displaying the "e-mail" field on the payment page, "N" – hides the "e-mail" field on the payment page (default value is "Y") | No |