Download OpenAPI specification:Download
This is a description of the public API that Poplapay provides for merchants and other integrators.
There are separate production and development environments, with separate API endpoints. Production environment uses actual production credit cards and transactions involve real money. Development environment uses bank issued test cards or certification test cards and does not involve real money. Production cards must never be used with development environment and development cards must never be used with production environment.
The API versioning follows Semantic Versioning 2.0.0 specification. Versions are specified as MAJOR.MINOR.PATCH, where:
All methods include the major version in the method path as
/api/MAJOR
. Each API major version is supported for backwards
compatibility for 12 months from the publication of new major
version.
All API requests require authentication. Currently HTTP basic authentication is used for all requests. Send email to developers@poplapay.com to request a development access key for authentication.
The Payment API supports eCommerce payments using payment cards. Implementation requires implementing background processing and storage of payment transaction records at the merchant backend. The API supports deep integration of multiple checkout methods into the merchant site both at shopping cart and checkout phases of the payment process.
The purchase flow always involves four stages as shown below.
All payments are initiated the same way. First insert a payment transaction record into merchant backend database. Then call Purchase, passing among other things a unique ID of the record in the merchant database.
Insert a new payment transaction record into merchant database. The record must contain
an ID that will never be used again, eg. a table primary key
or an UUID. This identifies the payment transaction, and is
called ext_id
.
Call Purchase endpoint, with parameters including:
ext_id
from the previous stepResponse contains checkout method specific information.
The payment is authorized by user's bank during this stage. Unlike other stages, this one is not performed by calling a server-to-server API endpoint. Details of this stage are different for each checkout method.
Often payment is performed by redirecting user to a URL to enter payment details, and redirected back to merchant's server.
Alternatively, there may need to be checkout method specific JavaScript code on the merchant page.
After payment stage has been completed, the merchant backend must read payment transaction outcome (success or failure) by calling Get endpoint. Merchant must then update its own database, and finally show the purchase result to user.
Call Get endpoint, passing ext_id
. Response indicates
among other things if the payment transaction was successful.
Store the outcome information into the payment transaction record in the merchant database.
Show the outcome to user.
Notice that the payment may have been successfully authorized in the Payment stage even if this stage isn't reached, eg. because user fails to redirect back to the merchant's server. See "Transactional Reliability" for more information.
Confirm must be called for all transactions for which a Purchase call has been completed or attempted, regardless of the payment outcome. This stage must be performed on the background, because the Confirm call must be retried until it succeeds.
Call Confirm endpoint, passing ext_id
. Even if Get
indicates the payment transaction was successful, it's acceptable to
confirm it as having failed.
Mark the payment transaction record as confirmed in the merchant database.
If Confirm is not called, the transaction will not be cleared, and manual processing may be required. Merchant will not receive payment even if authorization was successful.
Payment API supports multiple different checkout methods, given in
Purchase request field checkout_method
. In all the methods,
the "Prepare", "Get Outcome" and "Confirm" stages are similar. The largest
differences are in user interface. Generally, the deeper the checkout
method integrates with the merchant platform (eg. a web site or mobile
app), the larger the implementation effort and the potential for
streamlined user experience.
In the PAYMENT_FORM
checkout method merchant redirects to a page where user
enters card information. On completion user returns to return_url
. There
are no branding restrictions concerning the checkout button or otherwise.
When user clicks on the checkout button, create a record in merchant database and then call Purchase, as described in "Prepare" section above.
Redirect user to the payment form URL in Purchase response field
payment_form.redirect_url
.
When user is redirected to return_url
given in the Purchase call,
the "Payment" stage is complete
Perform the steps described in the "Get Outcome" section above.
Interactive flow is now completed. Ensure that Confirm is eventually called by merchant's server as described in the "Confirm" section above.
A purchase can be cancelled before it has been settled with the acquirer, by calling Cancel. This does not create a new payment transaction, but modifies the purchase transaction.
A successful purchase can be refunded for 40 days by calling Refund. This creates a new payment transaction, which will be referenced by the purchase transaction. There can be multiple partial refunds for a single purchase transaction.
Returns settlement batches and their transactions for given day. Failed transactions are not present in any batch. Response may contain additional fields not specified in this document. Such fields should be ignored.
Obs! Notice that while other endpoints of the server api are at /api/v2/ the settlement report is at /api/v1/.
date required | string Example: date=2014-05-20Z Creation date of the settlement batches. |
[- {
- "creation_time": "2023-09-20T06:02:28.561Z",
- "currency": 978,
- "currency_alpha": "EUR",
- "feedback_status": "ACCEPTED",
- "merchant_id": 12345,
- "merchant_number": "2100112307",
- "purchases_amount": 83750,
- "purchases_count": 51,
- "reference_number": null,
- "refunds_amount": 4995,
- "refunds_count": 3,
- "sales_location_id": 12345,
- "settlement_batch_id": "517",
- "state": "DELIVERED",
- "transactions": [
- {
- "ext_transaction_id": "5daa1a24-8c53-47e0-a0de-6f916d264f26",
- "order_id": "613aa5e5-2be5-4d78-bd6c-d34e2c83f66f",
- "merchant_id": 12345,
- "transaction_id": "8a878226-f182-49e7-8cf6-1de5988eafc0",
- "type": "PURCHASE",
- "success": true,
- "status_code": "SUCCESS",
- "status_description": "payment terminal confirmed transaction as successful",
- "currency": 978,
- "currency_alpha": "EUR",
- "amount": 1295,
- "merchant_pan": "426899******1234",
- "customer_pan": "************1234",
- "authorized": true,
- "authenticated": true,
- "authentication_result": "SUCCESS",
- "card_scheme": "VI",
- "card_country": 246,
- "card_country_alpha": "FI",
- "card_currency": 978,
- "card_currency_alpha": "EUR",
- "browser_ip_country": null,
- "browser_ip_country_alpha": "GB",
- "start_timestamp": "2015-03-04T08:01:22Z",
- "end_timestamp": "2015-03-04T08:01:24Z",
- "emv_transaction_time": "150304100111",
- "emv_reference_number": "150304000133",
- "emv_terminal_id": "00000023"
}
]
}
]
Cancels a purchase transaction completely. The customer will not be charged for the transaction after cancellation, and any reserved funds will be freed. Cancellation for a partial amount is not supported.
Cancellation is not possible for transactions which have already been settled with the acquirer. Such transactions will have to be refunded instead.
As opposed to Refund which creates a new payment transaction,
Cancel modifies the existing purchase transaction by setting
status_code
to USER_CANCELLED
.
Returns the cancelled payment transaction the same way as Get.
If the payment transaction is already cancelled, its information will be returned unchanged. Therefore, this call is idempotent, and can be safely retried.
ext_id | string Payment transaction identifier given by the calling system. Handled
as an opaque string, and used together with |
ext_scope | string Identifier scope for |
unique_id | string Payment transaction identifier assigned by Poplapay. Unique across
all |
reason_code required | string^[A-Z_]+$ Reason for the cancellation.
Other codes can be used, but should be agreed with Poplapay. |
reason_description | string A human readable description of the cancellation reason. This will not be presented to the user, but will be shown in logs, and administrative interfaces, and refund transaction's information. |
{- "ext_id": "a526ceca-565e-493e-aad6-a4912b5453c3",
- "ext_scope": "web123",
- "unique_id": "2a:1087143940",
- "reason_code": "USER_CANCELLED",
- "reason_description": "string"
}
{- "ext_id": "a526ceca-565e-493e-aad6-a4912b5453c3",
- "ext_scope": "web123",
- "unique_id": "2a:1087143940",
- "status_code": "SUCCESS",
- "status_description": "Transaction successful.",
- "status_details": "string",
- "state": "PREPARE",
- "transaction_type": "PURCHASE",
- "timestamp": "2016-10-12T11:06:19.241Z",
- "confirm_timestamp": "2016-10-12T11:06:27.090Z",
- "merchant_id": 9413,
- "settlement_contract_id": 1426,
- "sales_location_id": 38244,
- "terminal_id": 10353,
- "hardware_id": "a0f6fd72e785",
- "amount": 1200,
- "cashback_amount": 0,
- "refundable_amount": 1200,
- "currency": 978,
- "cardholder_verification": "PIN",
- "entry_mode": "chip",
- "card_number_customer": "************0035",
- "card_number_merchant": "411122******0035",
- "card_scheme": "VI",
- "card_country": 246,
- "card_currency": 978,
- "acquirer_timestamp": "161012140619",
- "acquirer_reference": "161012123253",
- "order_id": "5e98ebdeb3a17b48012400746a18ca9a",
- "order_description": "5e98ebdeb3a17b48012400746a18ca9a",
- "browser_ip_country": 246,
- "authorized": true,
- "authorized_amount": 1200,
- "authorization_code": "string",
- "id_check_performed": true,
- "external_data": {
- "name": "John Doe",
- "shift": {
- "number": 123
}
}, - "referring_transactions": "2a:1087143945"
}
Refunds an existing purchase transaction fully or partially. It's
possible to refund a transaction partially multiple times, as long as
the sum of refunds does not exceed amount
of the original
transaction.
Refund is usually possible within 70 days of purchase, but this may vary.
The original purchase transaction that this is a refund for is
identified by parameters original_ext_id
, original_ext_scope
and
original_unique_id
, which can be given in similar combinations as
Get's ext_id
, ext_scope
and unique_id
.
The original transaction must be successful (status_code=SUCCESS
) and
it must be confirmed (state=CLOSED
). If these conditions don't hold,
the transaction won't be settled with the acquirer and so refunding
would make no sense.
This request will create a new payment transaction with given
ext_id
and transaction_type=REFUND
. The transaction will
need to be confirmed with the Confirm call.
The unique_id
that is automatically assigned to this refund
transaction will be added to referring_transactions
field of the
original purchase transaction.
Returns the created refund transaction the same way as Get.
If a refund transaction with the same ext_id
and ext_scope
already exists, its
information will be returned unchanged, and no changes to the original
purchase transaction are made. Therefore, this call is idempotent, and
can be safely retried.
ext_id required | string Payment transaction identifier given by the calling system. Handled
as an opaque string, and used together with |
ext_scope | string Identifier scope for |
original_ext_id | string Original purchase transaction's |
original_ext_scope | string Original purchase transaction's |
original_unique_id | string Original purchase transaction's |
amount required | integer >= 0 The amount to be refunded. This may be equal to or smaller than the
current |
currency required | integer [ 0 .. 999 ] Currency that the |
reason_code required | string^[A-Z_]+$ Reason for the refund.
Other codes can be used, but should be agreed with Poplapay. |
reason_description | string A human readable description of the refund reason. This will not be presented to the user, but will be shown in logs and administrative interfaces, and refund transaction's information. |
transaction_time | string This field is required if the relevant feature is enabled for the account. Otherwise this field is ignored.
Value is the transaction timestamp in local time as |
reference_number | string This field is required if the relevant feature is enabled for the account. Otherwise this field is ignored.
The first six digits must match the the same digits of transaction time.
The last six digits must be between 100000-899999. Hence, the format is |
{- "ext_id": "a526ceca-565e-493e-aad6-a4912b5453c3",
- "ext_scope": "web123",
- "original_ext_id": "a526ceca-565e-493e-aad6-a4912b5453c3",
- "original_ext_scope": "web123",
- "original_unique_id": "2a:1087143940",
- "amount": 1200,
- "currency": 978,
- "reason_code": "MERCHANT_REFUND",
- "reason_description": "string",
- "transaction_time": "161012140619",
- "reference_number": "161012123253"
}
{- "ext_id": "a526ceca-565e-493e-aad6-a4912b5453c3",
- "ext_scope": "web123",
- "unique_id": "2a:1087143940",
- "status_code": "SUCCESS",
- "status_description": "Transaction successful.",
- "status_details": "string",
- "state": "PREPARE",
- "transaction_type": "PURCHASE",
- "timestamp": "2016-10-12T11:06:19.241Z",
- "confirm_timestamp": "2016-10-12T11:06:27.090Z",
- "merchant_id": 9413,
- "settlement_contract_id": 1426,
- "sales_location_id": 38244,
- "terminal_id": 10353,
- "hardware_id": "a0f6fd72e785",
- "amount": 1200,
- "cashback_amount": 0,
- "refundable_amount": 1200,
- "currency": 978,
- "cardholder_verification": "PIN",
- "entry_mode": "chip",
- "card_number_customer": "************0035",
- "card_number_merchant": "411122******0035",
- "card_scheme": "VI",
- "card_country": 246,
- "card_currency": 978,
- "acquirer_timestamp": "161012140619",
- "acquirer_reference": "161012123253",
- "order_id": "5e98ebdeb3a17b48012400746a18ca9a",
- "order_description": "5e98ebdeb3a17b48012400746a18ca9a",
- "browser_ip_country": 246,
- "authorized": true,
- "authorized_amount": 1200,
- "authorization_code": "string",
- "id_check_performed": true,
- "external_data": {
- "name": "John Doe",
- "shift": {
- "number": 123
}
}, - "referring_transactions": "2a:1087143945"
}
Get full information about a payment transaction.
A transaction is considered successful if status_code
field has value
SUCCESS
. If state
field has value other than CLOSED
, the payment
flow is not yet completed, and status_code
may still change.
changed eg. if a Confirm call marks the transaction has failed.
ext_id | string Payment transaction identifier given by the calling system. Handled
as an opaque string, and used together with |
ext_scope | string Identifier scope for |
unique_id | string Payment transaction identifier assigned by Poplapay. Unique across
all |
terminal_id | integer Poplapay-assigned identifier for the particular payment site. A
single merchant may have several differently configured payment
sites, which are identified by their unique The pair of |
reference_number | string Twelve-digit reference number of the financial transaction. The pair of |
{- "ext_id": "a526ceca-565e-493e-aad6-a4912b5453c3",
- "ext_scope": "web123",
- "unique_id": "2a:1087143940",
- "terminal_id": 15354,
- "reference_number": "150304000133"
}
{- "ext_id": "a526ceca-565e-493e-aad6-a4912b5453c3",
- "ext_scope": "web123",
- "unique_id": "2a:1087143940",
- "status_code": "SUCCESS",
- "status_description": "Transaction successful.",
- "status_details": "string",
- "state": "PREPARE",
- "transaction_type": "PURCHASE",
- "timestamp": "2016-10-12T11:06:19.241Z",
- "confirm_timestamp": "2016-10-12T11:06:27.090Z",
- "merchant_id": 9413,
- "settlement_contract_id": 1426,
- "sales_location_id": 38244,
- "terminal_id": 10353,
- "hardware_id": "a0f6fd72e785",
- "amount": 1200,
- "cashback_amount": 0,
- "refundable_amount": 1200,
- "currency": 978,
- "cardholder_verification": "PIN",
- "entry_mode": "chip",
- "card_number_customer": "************0035",
- "card_number_merchant": "411122******0035",
- "card_scheme": "VI",
- "card_country": 246,
- "card_currency": 978,
- "acquirer_timestamp": "161012140619",
- "acquirer_reference": "161012123253",
- "order_id": "5e98ebdeb3a17b48012400746a18ca9a",
- "order_description": "5e98ebdeb3a17b48012400746a18ca9a",
- "browser_ip_country": 246,
- "authorized": true,
- "authorized_amount": 1200,
- "authorization_code": "string",
- "id_check_performed": true,
- "external_data": {
- "name": "John Doe",
- "shift": {
- "number": 123
}
}, - "referring_transactions": "2a:1087143945"
}
Confirms a purchase or refund transaction as successful or failed.
If purchase processing has been successful in merchant site (merchant's
customer will receive the purchased product), confirm the transaction
as successful by passing value SUCCESS
in result_code
. Otherwise
use any other value, which will be considered an error code. After this
call, transaction's state
will be CLOSED
.
If Get response indicates the transaction was successful
(status_code=SUCCESS
) it can be confirmed as either successful or
failed. Otherwise it must be confirmed as failed. After being
confirmed as failed, transaction's status_code
will have a value
other than SUCCESS
.
A call will be successful (HTTP status 200) even if the specified
transaction does not exist. This enables calling Confirm
for all ext_id
's for which Purchase call has been attempted.
Transaction's status_code
may still change after this call has
completed, for example as a result of a Cancel call.
This endpoint shouldn't be called as part of user interaction, but from a background thread, because a failed call always requires retrying until successful. See "Transactional Reliability" for more discussion.
ext_id | string Payment transaction identifier given by the calling system. Handled
as an opaque string, and used together with |
ext_scope | string Identifier scope for |
result_code required | string^[A-Z_]+$ Pass |
result_description | string Usually only used if |
result_details | string Usually only used if |
{- "ext_id": "a526ceca-565e-493e-aad6-a4912b5453c3",
- "ext_scope": "web123",
- "result_code": "DB_ERROR",
- "result_description": "Database update failed: connection refused",
- "result_details": "Traceback (most recent call last): ..."
}
{- "error_code": "NOT_FOUND",
- "error_description": "Missing required parameter: foo",
- "error_details": "Traceback (most recent call last): ..."
}
Get full information about hardware, and basic information about the terminal contract, sales location, and merchant the hardware may be attached to.
hardware_id required | string Unique ID (sometimes called "MAC") of the hardware. |
{- "hardware_id": "0001234abcd1"
}
{- "hardware_id": "0001234abcd1",
- "hardware_model": "YOMANI ML",
- "ownership": "OWNED",
- "terminal_contract": {
- "terminal_contract_id": 123456,
- "terminal_contract_type": "spm20-poplatek-offline",
- "display_name": "POS 3",
- "sales_location": {
- "sales_location_id": 234567,
- "location_name": "The Leftorium Store",
- "location_address": "1250 Baltimore Pike",
- "location_postcode": "19064",
- "location_city": "Springfield",
- "location_country": "US",
- "location_telephone": "+16101234567",
- "merchant": {
- "merchant_id": 345678,
- "merchant_name": "Leftorium Holding Ltd",
- "merchant_address": "George St",
- "merchant_postcode": "123",
- "merchant_city": "Nassau",
- "merchant_country": "BS",
- "merchant_telephone": "+12421234567",
- "business_id": "1234567-1"
}
}
}
}
Attach hardware (a physical terminal) to an existing terminal contract. This operation has no effect on billing, which is based on active terminal contracts. Multiple hardwares should be attached to a terminal contract only temporarily, eg. when replacing a broken hardware. Successful response is an empty object. If the hardware is already attached to the terminal contract, a success response is returned. This way retrying a timed out request is straightforward.
terminal_contract_id required | integer ID of the terminal contract to attach the hardware to. |
hardware_id required | string ID (sometimes called "MAC") of the hardware to attach to the terminal contract. ID is not case sensitive. |
{- "terminal_contract_id": 1234,
- "hardware_id": "0001234abcd1"
}
{- "error_code": "INVALID_HARDWARE",
- "error_description": "Missing required parameter: foo",
- "error_details": "Traceback (most recent call last): ..."
}
Detach hardware (a physical terminal) from a terminal contract. This operation has no effect on billing, which is based on active terminal contracts. Hardware is typically detached when the terminal contract period has ended, or when the hardware is broken and replacement hardware is attached instead. Successful response is an empty object. If the hardware is already not attached to the terminal contract, a success response is returned. This way retrying a timed out request is straightforward.
terminal_contract_id required | integer ID of the terminal contract to detach the hardware from. |
hardware_id required | string ID (sometimes called "MAC") of the hardware to detach from the terminal contract. ID is not case sensitive. |
{- "terminal_contract_id": 1234,
- "hardware_id": "0001234abcd1"
}
{- "error_code": "INVALID_TERMINAL_CONTRACT",
- "error_description": "Missing required parameter: foo",
- "error_details": "Traceback (most recent call last): ..."
}
This API covers eCommerce purchase flow. Refunds, cancellations, and getting purchase (transaction) status is performed using Payment API.
Prepares a new transaction identified by ext_id
for processing.
The transaction_type
field will have value ACCOUNT_CHECK
.
If a store card transaction with the same ext_id
and ext_scope
already exists, its information will be returned unchanged. Therefore,
this call is idempotent, and can be safely retried.
The transaction will need to be confirmed with the Confirm call.
ext_id required | string Transaction identifier given by the calling system. This will be handled as an opaque string and is used to uniquely identify the transaction. This should be allocated and stored in a database before sending the request so that transactional reliability can be achieved. See section "Transactional Reliability". |
terminal_id required | integer Poplapay-assigned identifier for the particular payment site. A
single merchant may have several differently configured payment
sites, which are identified by their unique |
currency required | integer [ 0 .. 999 ] Currency code of the transaction according to ISO 4217 numeric, e.g. 978 for euro. |
origin_url required | string The URL of the page from where the checkout action will be invoked, either by navigating to an URL or some JavaScript based checkout method. |
return_url required | string The URL of the page to which user will be redirected after payment has been completed. The same url will be used for both success and failure cases. |
language required | string^[a-z]{2}$ Default: "en" The currently used interface language by the customer, as a
two letter code specified by ISO 639-1, e.g. |
allowed_card_schemes | Array of strings Items Enum: "VI" "MC" "AX" "DC" "JC" "UP" A list of one or more card schemes that the purchase is permitted to be completed with. If this field is not used, all schemes are allowed. This list will be further restricted by the settlement contracts the merchant has. List items are as following:
|
order_id | string ID of the order that this purchase transaction is for. There may be multiple purchase transactions per order, usually because some of the purchases have not succeed or are partial. This is not shown in any UI, but will be visible in transaction's information so can be useful in reporting or debugging. |
order_description | string Freeform order description. Will be shown to the customer in
eCommerce payment form, and will be retained in logs but not
processed programmatically. Required if |
recurring_payment | boolean Default: false To create recurring payment of transaction. This is just indicator for Nets. Merchant backend still needs to invoke payments in wanted cycle with |
{- "ext_id": "c2c8efe7-8b54-430b-b843-79cef6529948",
- "terminal_id": 15354,
- "currency": 978,
- "language": "fi",
- "allowed_card_schemes": [
- "VI",
- "MC",
- "AX"
], - "order_id": "5e98ebdeb3a17b48012400746a18ca9a",
- "order_description": "5e98ebdeb3a17b48012400746a18ca9a",
- "recurring_payment": false
}
{- "ext_id": "a526ceca-565e-493e-aad6-a4912b5453c3",
- "ext_scope": "web123",
- "unique_id": "2a:1087143940",
- "status_code": "SUCCESS",
- "status_description": "Transaction successful.",
- "status_details": "string",
- "state": "PREPARE",
- "transaction_type": "PURCHASE",
- "timestamp": "2016-10-12T11:06:19.241Z",
- "confirm_timestamp": "2016-10-12T11:06:27.090Z",
- "merchant_id": 9413,
- "settlement_contract_id": 1426,
- "sales_location_id": 38244,
- "terminal_id": 10353,
- "hardware_id": "a0f6fd72e785",
- "amount": 1200,
- "cashback_amount": 0,
- "refundable_amount": 1200,
- "currency": 978,
- "cardholder_verification": "PIN",
- "entry_mode": "chip",
- "card_number_customer": "************0035",
- "card_number_merchant": "411122******0035",
- "card_scheme": "VI",
- "card_country": 246,
- "card_currency": 978,
- "acquirer_timestamp": "161012140619",
- "acquirer_reference": "161012123253",
- "order_id": "5e98ebdeb3a17b48012400746a18ca9a",
- "order_description": "5e98ebdeb3a17b48012400746a18ca9a",
- "browser_ip_country": 246,
- "authorized": true,
- "authorized_amount": 1200,
- "authorization_code": "string",
- "id_check_performed": true,
- "external_data": {
- "name": "John Doe",
- "shift": {
- "number": 123
}
}, - "referring_transactions": "2a:1087143945"
}
Remove stored payment card with token.
token required | string Card token which is received when done card store or purchase with card storing option. |
{- "token": "c2c8efe7-8b54-430b-b843-79cef6529948"
}
{- "result": "SUCCESS"
}
Prepares a new payment transaction identified by ext_id
for processing.
The transaction_type
field will have value PURCHASE
.
If a purchase transaction with the same ext_id
and ext_scope
already exists, its information will be returned unchanged. Therefore,
this call is idempotent, and can be safely retried.
The purchase transaction will need to be confirmed with the Confirm call.
ext_id required | string Transaction identifier given by the calling system. This will be handled as an opaque string and is used to uniquely identify the transaction. This should be allocated and stored in a database before sending the request so that transactional reliability can be achieved. See section "Transactional Reliability". |
terminal_id required | integer Poplapay-assigned identifier for the particular payment site. A
single merchant may have several differently configured payment
sites, which are identified by their unique |
amount required | integer [ 0 .. 999999999999 ] Amount of the transaction expressed with implicit decimal point corresponding to the minor unit of currency as defined by ISO 4217. Eg. for 12.00 euros pass value 1200. |
currency required | integer [ 0 .. 999 ] Currency code of the transaction according to ISO 4217 numeric, e.g. 978 for euro. |
origin_url required | string The URL of the page from where the checkout action will be invoked, either by navigating to an URL or some JavaScript based checkout method. |
return_url required | string The URL of the page to which user will be redirected after payment has been completed. The same url will be used for both success and failure cases. |
checkout_method required | string Enum: "PAYMENT_FORM" "STORED_CARD" "MOBILEPAY" See section "Checkout Methods" above. |
language required | string^[a-z]{2}$ Default: "en" The currently used interface language by the customer, as a
two letter code specified by ISO 639-1, e.g. |
allowed_card_schemes | Array of strings Items Enum: "VI" "MC" "AX" "DC" "JC" "UP" A list of one or more card schemes that the purchase is permitted to be completed with. If this field is not used, all schemes are allowed. This list will be further restricted by the settlement contracts the merchant has. List items are as following:
|
card_scheme | string Enum: "VI" "MC" "AX" "DC" "JC" "UP" Card scheme the purchase is meant to be completed with, but
user can use any other scheme permitted by
|
reject_unauthenticated | boolean Default: false Reject purchases that cannot be authenticated via Visa 3-D Secure, MasterCard SecureCode or similar technology. Such purchases carry higher risk for the merchant, but provide an easier payment experience for the customer. |
prefer_unauthenticated | boolean Default: false Attempt to complete payment without using Visa 3-D Secure, MasterCard SecureCode or similar technology for authentication. Such purchases carry higher risk for merchant, but provide an easier payment experience for the customer. |
order_id | string ID of the order that this purchase transaction is for. There may be multiple purchase transactions per order, usually because some of the purchases have not succeed or are partial. This is not shown in any UI, but will be visible in transaction's information so can be useful in reporting or debugging. |
order_description | string Freeform order description. Will be shown to the customer in
eCommerce payment form, and will be retained in logs but not
processed programmatically. Required if |
store_card | string Default: null Enum: "REQUIRED" "OPTIONAL" "DISABLED" Store card options determines how form is displayed for user. |
recurring_payment | boolean Default: false To create recurring payment of transaction. This is just indicator for Nets. Merchant backend still needs to invoke payments in wanted cycle with |
Array of objects List of shopping cart items. Currently not used. |
{- "ext_id": "c2c8efe7-8b54-430b-b843-79cef6529948",
- "terminal_id": 15354,
- "amount": 1200,
- "currency": 978,
- "checkout_method": "PAYMENT_FORM",
- "language": "fi",
- "allowed_card_schemes": [
- "VI",
- "MC",
- "AX"
], - "card_scheme": "VI",
- "reject_unauthenticated": false,
- "prefer_unauthenticated": true,
- "order_id": "5e98ebdeb3a17b48012400746a18ca9a",
- "order_description": "5e98ebdeb3a17b48012400746a18ca9a",
- "store_card": "REQUIRED",
- "recurring_payment": false,
- "shopping_cart": [
- {
- "description": "Toothbrush",
- "quantity": 5,
- "value": 105,
}
]
}
{- "payment_form": {
- "redirect_url": "string"
}, - "ext_id": "a526ceca-565e-493e-aad6-a4912b5453c3",
- "ext_scope": "web123",
- "unique_id": "2a:1087143940",
- "status_code": "SUCCESS",
- "status_description": "Transaction successful.",
- "status_details": "string",
- "state": "PREPARE",
- "transaction_type": "PURCHASE",
- "timestamp": "2016-10-12T11:06:19.241Z",
- "confirm_timestamp": "2016-10-12T11:06:27.090Z",
- "merchant_id": 9413,
- "settlement_contract_id": 1426,
- "sales_location_id": 38244,
- "terminal_id": 10353,
- "hardware_id": "a0f6fd72e785",
- "amount": 1200,
- "cashback_amount": 0,
- "refundable_amount": 1200,
- "currency": 978,
- "cardholder_verification": "PIN",
- "entry_mode": "chip",
- "card_number_customer": "************0035",
- "card_number_merchant": "411122******0035",
- "card_scheme": "VI",
- "card_country": 246,
- "card_currency": 978,
- "acquirer_timestamp": "161012140619",
- "acquirer_reference": "161012123253",
- "order_id": "5e98ebdeb3a17b48012400746a18ca9a",
- "order_description": "5e98ebdeb3a17b48012400746a18ca9a",
- "browser_ip_country": 246,
- "authorized": true,
- "authorized_amount": 1200,
- "authorization_code": "string",
- "id_check_performed": true,
- "external_data": {
- "name": "John Doe",
- "shift": {
- "number": 123
}
}, - "referring_transactions": "2a:1087143945"
}