Thunes Integration Developer Guide

This section describes how to use this guide and where to find further information.

Audience and Purpose

This guide is written for merchants who want to offer Thunes services to customers. It describes tasks that a merchant must complete in order to process a payment. It is intended to help the merchant provide a seamless customer payment experience.

Customer Support

For support information about any service, visit the Support Center:

VISA Platform Connect: Specifications and Conditions for Resellers/Partners

The following are specifications and conditions that apply to a Reseller/Partner enabling its merchants through
Cybersource for
Visa Platform Connect
(“VPC”) processing
. Failure to meet any of the specifications and conditions below is subject to the liability provisions and indemnification obligations under Reseller/Partner’s contract with Visa/Cybersource.
  1. Before boarding merchants for payment processing on a VPC acquirer’s connection, Reseller/Partner and the VPC acquirer must have a contract or other legal agreement that permits Reseller/Partner to enable its merchants to process payments with the acquirer through the dedicated VPC connection and/or traditional connection with such VPC acquirer.
  2. Reseller/Partner is responsible for boarding and enabling its merchants in accordance with the terms of the contract or other legal agreement with the relevant VPC acquirer.
  3. Reseller/Partner acknowledges and agrees that all considerations and fees associated with chargebacks, interchange downgrades, settlement issues, funding delays, and other processing related activities are strictly between Reseller and the relevant VPC acquirer.
  4. Reseller/Partner acknowledges and agrees that the relevant VPC acquirer is responsible for payment processing issues, including but not limited to, transaction declines by network/issuer, decline rates, and interchange qualification, as may be agreed to or outlined in the contract or other legal agreement between Reseller/Partner and such VPC acquirer.
DISCLAIMER: NEITHER VISA NOR CYBERSOURCE WILL BE RESPONSIBLE OR LIABLE FOR ANY ERRORS OR OMISSIONS BY THE
Visa Platform Connect
ACQUIRER IN PROCESSING TRANSACTIONS. NEITHER VISA NOR CYBERSOURCE WILL BE RESPONSIBLE OR LIABLE FOR RESELLER/PARTNER BOARDING MERCHANTS OR ENABLING MERCHANT PROCESSING IN VIOLATION OF THE TERMS AND CONDITIONS IMPOSED BY THE RELEVANT
Visa Platform Connect
ACQUIRER.

Introduction to Thunes Integration

Thunes is a payment service provider (PSP) offered by
Cybersource
that enables you to process payments using regional payment methods throughout the world. You can choose which Thunes payment method to integrate to in order to offer your customers a market-specific payment option. The different payment methods also offer different ways to pay, such as buy now pay laters (BNPLs), credit card processing, and digital wallets.

Requirements

You must have a
Cybersource
merchant ID and a Thunes API key for each country in which you process transactions. Contact your
Cybersource
account manager for more information.

Getting Started with REST

To begin processing payments through
Cybersource
, you must first set up your payment processing system to be REST compliant.
Cybersource
uses the REST architecture for developing web services. REST enables communication between a client and server using HTTP protocols.
If you have not set up secure communications between your client and server using either a
JSON Web Token
or
HTTP signature
, see the
Getting Started with REST Developer Guide
.

Bizum Transaction Requests

Bizum is a payment method offered by the Thunes payment service provider (PSP) that you can offer your customers through
Cybersource
. You can process a payment by sending a sale API request message to
Cybersource
.
Cybersource
sends your request to Thunes. Thunes approves the transaction and sends the request to the processor for settlement. You can also send a follow-on refund and check status API requests.

Requirements

You must have a merchant ID and a Thunes API key for each country in which you process transactions. Contact your
Cybersource
account manager for more information.

Supported Country and Currency

This table lists the country, country code, and currency supported by Bizum.
Supported Country and Currency
Country
Country Code
Currency
Currency Code
Spain
ES
Euro
EUR

Shipping Policy

You can ship purchased goods when the sale status is
SETTLED
.

Bizum by Thunes Payment Workflow

This workflow describes the sequence of events that comprises a successful Bizum payment.

Figure:

Bizum by Thunes Payment Workflow
Bizum by Thunes Payment Workflow
  1. The customer begins to checkout on the merchant's website and chooses the Bizum payment method.
  2. The merchant sends a sale API request to
    Cybersource
    . For more information, see Process a Sale.
  3. Cybersource
    responds to the merchant with a
    PENDING
    status and a redirect URL.
  4. The merchant redirects the customer to the URL.
  5. The customer completes the checkout using Bizum and is redirected to the merchant website.
  6. The merchant sends a check status API request to
    Cybersource
    . For more information, see Check a Request Status.
  7. Cybersource
    responds to the merchant with a
    SETTLED
    status.
  8. The merchant displays a confirmation of the completed payment to the customer.

Transaction Statuses Workflow

This workflow shows the statuses that can occur at each stage of processing a sale and refund.

Figure:

Transaction Statuses Workflow
  1. When a customer begins to check out, you send a sale request to
    Cybersource
    and receive one of these possible statuses:
    • FAILED
      : The sale cannot be completed.
    • PENDING
      : The sale request is accepted but is not completed. Send the check status request to retrieve status updates.
  2. You send a check status request to
    Cybersource
    to verify the sale status and receive one of these statuses:
    • ABANDONED
      : The customer did not complete the payment using the redirect URL.
    • FAILED
      : The sale request failed. A failed request can be due to either a rejection or a technical error.
    • PENDING
      : The sale request is accepted but is not completed. Send the check status request as often as necessary to obtain the information that you need.
    • SETTLED
      : The sale request is settled for the requested amount. When the settled amount is deposited into the merchant's bank account, the status updates to
      FUNDED
      .
  3. If a customer returns a purchase, you send a refund request to
    Cybersource
    and receive one of these possible statuses:
    • FAILED
      : The refund request failed.
    • REFUNDED
      : The refund request is accepted but is not completed. Request the check status service to retrieve status updates.
  4. You send a check status request to
    Cybersource
    to verify the refund status and receive one of these statuses:
    • FAILED
      : The refund could not be completed.
    • REFUNDED
      : The settled amount is successfully refunded.

Process a Sale

Send a sale request to authorize and capture a payment in the same request. A successful sale response includes a redirect URL and a pending status. Redirect the customer to the URL to allow the customer to complete the checkout using Bizum. When the customer completes the checkout, the customer is redirected to your merchant website based on the success URL you include in the
merchantInformation.successUrl
request field.

Line Items

Line items are included in a request in the
lineItem[]
array.
For more information about how to properly format line items in your request, see Using Line Items.

Tax Amounts

You can include the tax amount for every type of purchased product in the
orderInformation.lineItems[].taxAmount
field when you request the sale service.

Calculating the Grand Total

Include the grand total in the request by using the
orderInformation.amountDetails.totalAmount
field.

Endpoints

Production:
POST
https://api.cybersource.com
/pts/v2/payments
Test:
POST
https://apitest.cybersource.com
/pts/v2/payments

Response Statuses

Cybersource
responds to your sale request with one of these statuses in the
status
field:
Sale Status
  • FAILED
    : The sale cannot be completed.
  • PENDING
    : The sale request is accepted but is not completed. Request the check status service every 60 minutes to retrieve status updates. See Check a Request Status.
When you send a check status request to retrieve an updated sale status, these are the possible responses:
Check Status for a Sale
  • ABANDONED
    : The customer did not complete the payment using the redirect URL.
  • FAILED
    : The sale cannot be completed.
  • FUNDED
    : The settled amount is funded to the merchant bank account.
  • PENDING
    : The sale request is accepted but is not complete. Continue sending the check status request every 60 minutes.
  • SETTLED
    : The sale request is settled for the requested amount. You cannot receive a settled status until the customer has completed checking out.

Processing a Sale

Follow these steps to successfully process sale.
  1. Send a
    POST
    request to the
    https://api.cybersource.com
    /pts/v2/payments
    endpoint and include these required fields:
    clientReferenceInformation.code
    merchantInformation.cancelUrl
    merchantInformation.failureUrl
    merchantInformation.successUrl
    orderInformation.amountDetails.currency
    orderInformation.amountDetails.totalAmount
    orderInformation.billTo.country
    orderInformation.billTo.email
    orderInformation.billTo.firstName
    orderInformation.billTo.lastName
    paymentInformation.paymentType.method.name
    Set to
    BIZUM
    .
    paymentInformation.paymentType.name
    Set to
    bankTransfer
    .
    processingInformation.actionlist
    Set to
    AP_SALE
    .
  2. You can include these optional fields in the request:
    merchantDefinedInformation[].key
    merchantInformation.merchantDescriptor
    orderInformation.billTo.address1
    orderInformation.billTo.address2
    orderInformation.billTo.administrativeArea
    orderInformation.billTo.locality
    orderInformation.billTo.phoneNumber
    orderInformation.billTo.postalCode
    orderInformation.lineItems[].productCode
    orderInformation.lineItems[].productName
    orderInformation.lineItems[].productSku
    orderInformation.lineItems[].quantity
    orderInformation.lineItems[].taxAmount
    orderInformation.lineItems[].totalAmount
    orderInformation.lineItems[].unitPrice
  3. Redirect the customer to the returned URL in the
    processorInformation.paymentUrl
    response field.
    "paymentUrl": "https://Bizum.limonetikqualif.com/PayPage/359299031517"
  4. When the customer completes the checkout using their Bizum credentials, the customer is redirected to the merchant website based on the URL that you included in the
    merchantInformation.successUrl
    field.
  5. Save the request ID in the
    id
    field from the sale response. Include the request ID in a check status request to confirm that the payment is complete.
    "id": "7652176144426365504805"

Example: Processing a Sale

Request
{     "clientReferenceInformation": {         "code": "123"     },     "merchantInformation": {         "cancelUrl": "https://www.valid.merchant.redirect.url.from.request.html?actioncancel",         "failureUrl": "https://www.valid.merchant.redirect.url.from.request.html?actionfailure",         "successUrl": "https://www.valid.merchant.redirect.url.from.request.html?actionsuccess"     },     "paymentInformation": {         "paymentType": {             "method": {                 "name": "BIZUM"             },             "name": "bankTransfer"         }     },     "orderInformation": {         "billTo": {             "country": "ES"         },         "amountDetails": {             "currency": "EUR",             "totalAmount": "8.00"         }     },     "processingInformation": {         "actionList": [             "AP_SALE"         ]     } }
Response to a Successful Request
{     "_links": {         "void": {             "method": "POST",             "href": "/pts/v2/payments/7652176144426365504805/voids"         },         "billingAgreement": {             "method": "POST",             "href": "/pts/v2/billing-agreements/7652176144426365504805"         },         "self": {             "method": "POST",             "href": "/pts/v2/payments/7652176144426365504805"         },         "refund": {             "method": "POST",             "href": "/pts/v2/payments/7652176144426365504805/refunds"         },         "status": {             "method": "POST",             "href": "/pts/v2/refresh-payment-status/7652176144426365504805"         }     },     "clientReferenceInformation": {         "code": "123"     },     "id": "7652176144426365504805",     "message": "Request was processed successfully.",     "orderInformation": {         "amountDetails": {             "totalAmount": "8.00",             "currency": "EUR"         }     },     "processorInformation": {         "responseDetails": "00001",         "paymentUrl": "https://Bizum.limonetikqualif.com/PayPage/359299031517",         "transactionId": "359299031517",         "responseCode": "00001"     },     "reconciliationId": "XFZ3ZIRG3CAE",     "status": "PENDING",     "submitTimeUtc": "2025-12-08T18:13:35Z" }

Check a Request Status

You can retrieve the status of a pending sale or refund by sending a check status request.
When a pending status updates, a check status response includes the transaction's new status. Thunes sometimes needs to review a service request, which causes a transaction to initially respond with a pending status. The check status request requires you to include the request ID from the pending transaction response you are checking the status of. The request ID is located in the
id
response field.
Cybersource
recommends that you send a check status request hourly until the status updates from pending.

Endpoints

Production:
POST
https://api.cybersource.com
/pts/v2/refresh-payment-status/
{id}
Test:
POST
https://apitest.cybersource.com
/pts/v2/refresh-payment-status/
{id}
Set the
{id}
to the request ID of the API service you are retrieving.

Response Statuses

Cybersource
responds to your check status request with one of these statuses in the
status
field:
Check Status Responses for a Sale
  • ABANDONED
    : The customer did not complete the payment using the redirect URL.
  • FAILED
    : The service request failed. A failed request can be due to either Bizum rejecting the transaction or a technical error.
  • FUNDED
    : The settled amount is funded to the merchant bank account.
  • PENDING
    : The service request is accepted but is not completed. Request the check status service to retrieve status updates.
  • SETTLED
    : The sale request is settled for the requested amount.
Check Status Responses for a Refund
  • FAILED
    : The service request failed. A failed request can be due to either Bizum rejecting the transaction or a technical error.
  • REFUNDED
    : The settled amount is successfully refunded.

Example: Checking a Request Status

Request
{     "clientReferenceInformation": {         "code": "refnum-1234"     },     "paymentInformation": {         "paymentType": {             "method": {                 "name": "BIZUM"             },             "name": "bankTransfer"         }     },     "processingInformation": {         "actionList": "AP_STATUS"     } }
Response to a Successful Request
{     "clientReferenceInformation": {         "code": "refnum-1234"     },     "id": "7652140009076673004807",     "processorInformation": {         "responseDetails": "00004",         "token": "524844527123",         "responseCode": "00004"     },     "reconciliationId": "XFZ3ZIR241FRH",     "status": "SETTLED" }

Refund a Payment

You can refund a completed payment for the full amount or a partial amount by sending a refund request. Bizum supports multiple refund requests when the total amount of all of the refund requests is less than the captured amount.
Requesting a refund requires the request ID from the sale response. The request ID is located in the
id
response field.

Endpoints

Production:
POST
https://api.cybersource.com
/pts/v2/payments/
{id}
/refunds
Test:
POST
https://apitest.cybersource.com
/pts/v2/payments/
{id}
/refunds
The
{id}
is the request ID contained in the original transaction request.

Response Statuses

Cybersource
responds to your refund request with one of these statuses as the
status
field value:
  • FAILED
    : The refund request failed.
  • REFUNDED
    : The refund request is accepted but is not completed. Request the check status service to retrieve status updates. For more information, see Check a Transaction Status.
When you send a check status request to retrieve an updated refund status, these are the possible responses:
  • FAILED
    : The refund request failed.
  • REFUNDED
    : The settled payment is successfully refunded.

Example: Refunding a Payment

Request
{     "clientReferenceInformation": {         "code": "refnum-1234"     },     "paymentInformation": {         "paymentType": {             "method": {                 "name": "BIZUM"             },             "name": "bankTransfer"         }     },     "processingInformation": {         "actionList": "AP_REFUND"     },     "orderInformation": {         "amountDetails": {             "totalAmount": "60.00",             "currency": "EUR"         }     } }
Response to a Successful Request
{     "_links": {         "self": {             "method": "GET",             "href": "/pts/v2/refunds/7652176144426365504805"         },         "status": {             "method": "POST",             "href": "/pts/v2/refresh-payment-status/7652176144426365504805"         }     },     "clientReferenceInformation": {         "code": "refnum-1234",         "returnReconciliationId": "AE7GHI9V2XIS"     },     "id": "7652140293476589504806",     "orderInformation": {         "amountDetails": {             "currency": "EUR"         }     },     "processorInformation": {         "responseDetails": "00006",         "transactionId": "524844527123",         "responseCode": "00006"     },     "reconciliationId": "XFZ3ZIRG3C8C",     "refundAmountDetails": {         "refundAmount": "60.00"     },     "status": "REFUNDED",     "submitTimeUtc": "2025-12-08T17:13:51Z" }

Blik Transaction Requests

Blik is a payment method offered by the Thunes payment service provider (PSP) that you can offer your customers through
Cybersource
. You can process a payment by sending a sale API request message to
Cybersource
.
Cybersource
sends your request to Thunes. Thunes approves the transaction and sends the request to the processor for settlement. You can also send a follow-on refund and check status API requests.

Requirements

You must have a merchant ID and a Thunes API key for each country in which you process transactions. Contact your
Cybersource
account manager for more information.

Supported Country and Currency

This table lists the country, country code, and currency supported by Blik.
Supported Country and Currency
Country
Country Code
Currency
Currency Code
Poland
PL
Polish zloty
PLN

Shipping Policy

You can ship purchased goods when the sale status is
SETTLED
.

Blik by Thunes Payment Workflow

This workflow describes the sequence of events that comprises a successful Blik payment.

Figure:

Blik by Thunes Payment Workflow
Blik by Thunes Payment Workflow
  1. The customer begins to checkout on the merchant's website and chooses the Blik payment method.
  2. The merchant sends a sale API request to
    Cybersource
    . For more information, see Process a Sale.
  3. Cybersource
    responds to the merchant with a
    PENDING
    status and a redirect URL.
  4. The merchant redirects the customer to the URL.
  5. The customer completes the checkout using Blik and is redirected to the merchant website.
  6. The merchant sends a check status API request to
    Cybersource
    . For more information, see Check a Request Status.
  7. Cybersource
    responds to the merchant with a
    SETTLED
    status.
  8. The merchant displays a confirmation of the completed payment to the customer.

Transaction Statuses Workflow

This workflow shows the statuses that can occur at each stage of processing a sale and refund.

Figure:

Transaction Statuses Workflow
  1. When a customer begins to check out, you send a sale request to
    Cybersource
    and receive one of these possible statuses:
    • FAILED
      : The sale cannot be completed.
    • PENDING
      : The sale request is accepted but is not completed. Send the check status request to retrieve status updates.
  2. You send a check status request to
    Cybersource
    to verify the sale status and receive one of these statuses:
    • ABANDONED
      : The customer did not complete the payment using the redirect URL.
    • FAILED
      : The sale request failed. A failed request can be due to either a rejection or a technical error.
    • PENDING
      : The sale request is accepted but is not completed. Send the check status request as often as necessary to obtain the information that you need.
    • SETTLED
      : The sale request is settled for the requested amount. When the settled amount is deposited into the merchant's bank account, the status updates to
      FUNDED
      .
  3. If a customer returns a purchase, you send a refund request to
    Cybersource
    and receive one of these possible statuses:
    • FAILED
      : The refund request failed.
    • REFUNDED
      : The refund request is accepted but is not completed. Request the check status service to retrieve status updates.
  4. You send a check status request to
    Cybersource
    to verify the refund status and receive one of these statuses:
    • FAILED
      : The refund could not be completed.
    • REFUNDED
      : The settled amount is successfully refunded.

Process a Sale

Send a sale request to authorize and capture a payment in the same request. A successful sale response includes a redirect URL and a pending status. Redirect the customer to the URL to allow the customer to complete the checkout using Blik. When the customer completes the checkout, the customer is redirected to your merchant website based on the success URL you include in the
merchantInformation.successUrl
request field.

Line Items

Line items are included in a request in the
lineItem[]
array.
For more information about how to properly format line items in your request, see Using Line Items.

Tax Amounts

You can include the tax amount for every type of purchased product in the
orderInformation.lineItems[].taxAmount
field when you request the sale service.

Calculating the Grand Total

Include the grand total in the request by using the
orderInformation.amountDetails.totalAmount
field.

Endpoints

Production:
POST
https://api.cybersource.com
/pts/v2/payments
Test:
POST
https://apitest.cybersource.com
/pts/v2/payments

Response Statuses

Cybersource
responds to your sale request with one of these statuses in the
status
field:
Sale Status
  • FAILED
    : The sale cannot be completed.
  • PENDING
    : The sale request is accepted but is not completed. Request the check status service every 60 minutes to retrieve status updates. See Check a Request Status.
When you send a check status request to retrieve an updated sale status, these are the possible responses:
Check Status for a Sale
  • ABANDONED
    : The customer did not complete the payment using the redirect URL.
  • FAILED
    : The sale cannot be completed.
  • FUNDED
    : The settled amount is funded to the merchant bank account.
  • PENDING
    : The sale request is accepted but is not complete. Continue sending the check status request every 60 minutes.
  • SETTLED
    : The sale request is settled for the requested amount. You cannot receive a settled status until the customer has completed checking out.

Processing a Sale

Follow these steps to successfully process sale.
  1. Send a
    POST
    request to the
    https://api.cybersource.com
    /pts/v2/payments
    endpoint and include these required fields:
    clientReferenceInformation.code
    merchantInformation.cancelUrl
    merchantInformation.failureUrl
    merchantInformation.successUrl
    orderInformation.amountDetails.currency
    orderInformation.amountDetails.totalAmount
    orderInformation.billTo.country
    orderInformation.billTo.email
    orderInformation.billTo.firstName
    orderInformation.billTo.lastName
    paymentInformation.paymentType.method.name
    Set to
    BLIK
    .
    paymentInformation.paymentType.name
    Set to
    bankTransfer
    .
    processingInformation.actionlist
    Set to
    AP_SALE
    .
  2. You can include these optional fields in the request:
    merchantDefinedInformation[].key
    merchantInformation.merchantDescriptor
    orderInformation.billTo.address1
    orderInformation.billTo.address2
    orderInformation.billTo.administrativeArea
    orderInformation.billTo.locality
    orderInformation.billTo.phoneNumber
    orderInformation.billTo.postalCode
    orderInformation.lineItems[].productCode
    orderInformation.lineItems[].productName
    orderInformation.lineItems[].productSku
    orderInformation.lineItems[].quantity
    orderInformation.lineItems[].taxAmount
    orderInformation.lineItems[].totalAmount
    orderInformation.lineItems[].unitPrice
  3. Redirect the customer to the returned URL in the
    processorInformation.paymentUrl
    response field.
    "paymentUrl": "https://payment.limonetikqualif.com/Blik/Order/PayPage/765137695558"
  4. When the customer completes the checkout using their Blik credentials, the customer is redirected to the merchant website based on the URL that you included in the
    merchantInformation.successUrl
    field.
  5. Save the request ID in the
    id
    field from the sale response. Include the request ID in a check status request to confirm that the payment is complete.
    "id": "7652141816856636104806"

Example: Processing a Sale

Request
{     "clientReferenceInformation": {         "code": "123"     },     "merchantInformation": {         "cancelUrl": "https://www.valid.merchant.redirect.url.from.request.html?actioncancel",         "failureUrl": "https://www.valid.merchant.redirect.url.from.request.html?actionfailure",         "successUrl": "https://www.valid.merchant.redirect.url.from.request.html?actionsuccess"     },     "paymentInformation": {         "paymentType": {             "method": {                 "name": "BLIK"             },             "name": "bankTransfer"         }     },     "orderInformation": {         "billTo": {             "firstName": "John",             "lastName": "Doe",             "country": "PT"         },         "amountDetails": {             "totalAmount": "600.00",             "currency": "PLN"         }     },     "processingInformation": {         "actionList": [             "AP_SALE"         ]     } }
Response to a Successful Request
{     "_links": {         "void": {             "method": "POST",             "href": "/pts/v2/payments/7652141816856636104806/voids"         },         "billingAgreement": {             "method": "POST",             "href": "/pts/v2/billing-agreements/7652141816856636104806"         },         "self": {             "method": "POST",             "href": "/pts/v2/payments/7652141816856636104806"         },         "refund": {             "method": "POST",             "href": "/pts/v2/payments/7652141816856636104806/refunds"         },         "status": {             "method": "POST",             "href": "/pts/v2/refresh-payment-status/7652141816856636104806"         }     },     "clientReferenceInformation": {         "code": "123"     },     "id": "7652141816856636104806",     "message": "Request was processed successfully.",     "orderInformation": {         "amountDetails": {             "totalAmount": "600.00",             "currency": "PLN"         }     },     "processorInformation": {         "responseDetails": "00001",         "paymentUrl": "https://payment.limonetikqualif.com/Blik/Order/PayPage/765137695558",         "transactionId": "765137695558",         "responseCode": "00001"     },     "reconciliationId": "XFZ55IRDYZ09",     "status": "PENDING",     "submitTimeUtc": "2025-12-08T17:16:22Z" }

Check a Request Status

You can retrieve the status of a pending sale or refund by sending a check status request.
When a pending status updates, a check status response includes the transaction's new status. Thunes sometimes needs to review a service request, which causes a transaction to initially respond with a pending status. The check status request requires you to include the request ID from the pending transaction response you are checking the status of. The request ID is located in the
id
response field.
Cybersource
recommends that you send a check status request hourly until the status updates from pending.

Endpoints

Production:
POST
https://api.cybersource.com
/pts/v2/refresh-payment-status/
{id}
Test:
POST
https://apitest.cybersource.com
/pts/v2/refresh-payment-status/
{id}
Set the
{id}
to the request ID of the API service you are retrieving.

Response Statuses

Cybersource
responds to your check status request with one of these statuses in the
status
field:
Check Status Responses for a Sale
  • ABANDONED
    : The customer did not complete the payment using the redirect URL.
  • FAILED
    : The service request failed. A failed request can be due to either Blik rejecting the transaction or a technical error.
  • FUNDED
    : The settled amount is funded to the merchant bank account.
  • PENDING
    : The service request is accepted but is not completed. Request the check status service to retrieve status updates.
  • SETTLED
    : The sale request is settled for the requested amount.
Check Status Responses for a Refund
  • FAILED
    : The service request failed. A failed request can be due to either Blik rejecting the transaction or a technical error.
  • REFUNDED
    : The settled amount is successfully refunded.

Example: Checking a Request Status

Request
{     "clientReferenceInformation": {         "code": "refnum-1234"     },     "paymentInformation": {         "paymentType": {             "method": {                 "name": "BLIK"             },             "name": "bankTransfer"         }     },     "processingInformation": {         "actionList": "AP_STATUS"     } }
Response to a Successful Request
{     "clientReferenceInformation": {         "code": "refnum-1234"     },     "id": "7652140009076673004807",     "processorInformation": {         "responseDetails": "00004",         "token": "524844527089",         "responseCode": "00004"     },     "reconciliationId": "XFZ3ZIRG3C8H",     "status": "SETTLED" }

Refund a Payment

You can refund a completed payment for the full amount or a partial amount by sending a refund request. Blik supports multiple refund requests when the total amount of all of the refund requests is less than the captured amount.
Requesting a refund requires the request ID from the sale response. The request ID is located in the
id
response field.

Endpoints

Production:
POST
https://api.cybersource.com
/pts/v2/payments/
{id}
/refunds
Test:
POST
https://apitest.cybersource.com
/pts/v2/payments/
{id}
/refunds
The
{id}
is the request ID contained in the original transaction request.

Response Statuses

Cybersource
responds to your refund request with one of these statuses as the
status
field value:
  • FAILED
    : The refund request failed.
  • REFUNDED
    : The refund request is accepted but is not completed. Request the check status service to retrieve status updates. For more information, see Check a Transaction Status.
When you send a check status request to retrieve an updated refund status, these are the possible responses:
  • FAILED
    : The refund request failed.
  • REFUNDED
    : The settled payment is successfully refunded.

Required Fields for Refunding a Payment

Example: Refunding a Payment

Request
{     "clientReferenceInformation": {         "code": "refnum-1234"     },     "paymentInformation": {         "paymentType": {             "method": {                 "name": "BLIK"             },             "name": "bankTransfer"         }     },     "processingInformation": {         "actionList": "AP_REFUND"     },     "orderInformation": {         "amountDetails": {             "totalAmount": "600.00",             "currency": "PLN"         }     } }
Response to a Successful Request
{     "_links": {         "self": {             "method": "GET",             "href": "/pts/v2/refunds/7652140293476589504806"         },         "status": {             "method": "POST",             "href": "/pts/v2/refresh-payment-status/7652140293476589504806"         }     },     "clientReferenceInformation": {         "code": "refnum-1234",         "returnReconciliationId": "AE7GHI9V2XIS"     },     "id": "7652140293476589504806",     "orderInformation": {         "amountDetails": {             "currency": "PLN"         }     },     "processorInformation": {         "responseDetails": "00006",         "transactionId": "524844527089",         "responseCode": "00006"     },     "reconciliationId": "XFZ3ZIRG3C8C",     "refundAmountDetails": {         "refundAmount": "600.00"     },     "status": "REFUNDED",     "submitTimeUtc": "2025-12-08T17:13:51Z" }

GrabPay Transaction Requests

GrabPay is a payment method offered by the Thunes payment service provider (PSP) that you can offer your customers through
Cybersource
. You can process a payment by sending a sale API request message to
Cybersource
.
Cybersource
sends your request to Thunes. Thunes approves the transaction and sends the request to the processor for settlement. You can also send a refund and check status API request as follow-on services.

Requirements

You must have a merchant ID and a Thunes API key for each country in which you process transactions. Contact your
Cybersource
account manager for more information.

Supported Currencies

This table lists the currencies supported by GrabPay.
Supported Currencies and Currency Codes
Currency
Currency Code
IDR
Indonesian rupiah
MYR
Malaysian ringgit
PHP
Philippine peso

Shipping Policy

Goods can be shipped when the sale status is
SETTLED
.

GrabPay by Thunes Payment Workflow

This workflow describes the sequence of events that comprises a successful GrabPay payment.

Figure:

GrabPay by Thunes Payment Workflow
  1. The customer begins to checkout on the merchant's website and chooses the GrabPay payment method.
  2. The merchant sends a sale API request to
    Cybersource
    . For more information, see Process a Sale.
  3. Cybersource
    responds to the merchant with a
    PENDING
    status and a redirect URL.
  4. The merchant redirects the customer to the URL.
  5. The customer completes the checkout using GrabPay and is redirected to the merchant website.
  6. The merchant sends a check status API request to
    Cybersource
    . For more information, see Check a Request Status.
  7. Cybersource
    responds to the merchant with a
    SETTLED
    status.
  8. The merchant displays a confirmation of the completed payment to the customer.

Transaction Statuses Workflow

This workflow shows the statuses that can occur at each stage of processing a sale and refund.

Figure:

Transaction Statuses Workflow
  1. When a customer begins to check out, you send a sale request to
    Cybersource
    and receive one of these possible statuses:
    • FAILED
      : The sale cannot be completed.
    • PENDING
      : The sale request is accepted but is not completed. Send the check status request to retrieve status updates.
  2. You send a check status request to
    Cybersource
    to verify the sale status and receive one of these statuses:
    • ABANDONED
      : The customer did not complete the payment using the redirect URL.
    • FAILED
      : The sale request failed. A failed request can be due to either a rejection or a technical error.
    • PENDING
      : The sale request is accepted but is not completed. Send the check status request as often as necessary to obtain the information that you need.
    • SETTLED
      : The sale request is settled for the requested amount. When the settled amount is deposited into the merchant's bank account, the status updates to
      FUNDED
      .
  3. If a customer returns a purchase, you send a refund request to
    Cybersource
    and receive one of these possible statuses:
    • FAILED
      : The refund request failed.
    • REFUNDED
      : The refund request is accepted but is not completed. Request the check status service to retrieve status updates.
  4. You send a check status request to
    Cybersource
    to verify the refund status and receive one of these statuses:
    • FAILED
      : The refund could not be completed.
    • REFUNDED
      : The settled amount is successfully refunded.

Process a Sale

Send a sale request to authorize and capture a payment in the same request. A successful sale response includes a redirect URL and a pending status. Redirect the customer to the URL to allow the customer to complete the checkout using GrabPay. When the customer completes the checkout, the customer is redirected to the merchant website using the success-URL provided in the sale request.

Line Items

Line items are included in a request in the
lineItem[]
array.
For more information about how to properly format line items in your request, see Using Line Items.

Tax Amounts

You can include the tax amount for every type of purchased product in the
orderInformation.lineItems[].taxAmount
field when you request the sale service.

Calculating the Grand Total

Include the grand total in the request by using the
orderInformation.amountDetails.totalAmount
field.

Endpoints

Production:
POST
https://api.cybersource.com
/pts/v2/payments
Test:
POST
https://apitest.cybersource.com
/pts/v2/payments

Response Statuses

Cybersource
responds to your sale request with one of these statuses in the
status
field:
Sale Status
  • FAILED
    : The sale cannot be completed.
  • PENDING
    : The sale request is accepted but is not completed. Request the check status service every 60 minutes to retrieve status updates. See Check a Request Status.
When you send a check status request to retrieve an updated sale status, these are the possible responses:
Check Status for a Sale
  • ABANDONED
    : The customer did not complete the payment using the redirect URL.
  • FAILED
    : The sale cannot be completed.
  • FUNDED
    : The settled amount is funded to the merchant bank account.
  • PENDING
    : The sale request is accepted but is not complete. Continue sending the check status request every 60 minutes.
  • SETTLED
    : The sale request is settled for the requested amount. You cannot receive a settled status until the customer has completed checking out.

Processing a Sale

Follow these steps to successfully process sale.
  1. Send a
    POST
    request to the
    https://api.cybersource.com
    /pts/v2/payments
    endpoint and include these required fields:
    billTo.country
    clientReferenceInformation.code
    merchantInformation.cancelUrl
    merchantInformation.failureUrl
    merchantInformation.successUrl
    orderInformation.amountDetails.currency
    orderInformation.amountDetails.totalAmount
    orderInformation.billTo.address1
    orderInformation.billTo.administrativeArea
    orderInformation.billTo.country
    orderInformation.billTo.email
    orderInformation.billTo.firstName
    orderInformation.billTo.lastName
    orderInformation.billTo.locality
    orderInformation.billTo.phoneNumber
    orderInformation.billTo.postalCode
    orderInformation.lineItems.productCode
    orderInformation.lineItems.productName
    orderInformation.lineItems.productSKU
    orderInformation.lineItems.quantity
    orderInformation.lineItems.totalAmount
    orderInformation.lineItems.unitPrice
    orderInformation.shipTo.address1
    orderInformation.shipTo.country
    orderInformation.shipTo.email
    orderInformation.shipTo.firstName
    orderInformation.shipTo.lastName
    orderInformation.shipTo.locality
    orderInformation.shipTo.phoneNumber
    paymentInformation.paymentType.method.name
    Set to GRABPAY.
    paymentInformation.paymentType.name
    processingInformation.actionList
  2. You can include these optional fields in the request:
  3. Redirect the customer to the returned URL in the
    merchantInformation.successUrl
    response field.
    "successUrl": "
    https://www.valid.merchant.redirect.url.from.request.html?actionsuccess
    "
  4. When the customer completes the checkout using their GrabPay credentials, the customer is redirected to the merchant website based on the URL that you included in the
    merchantInformation.successUrl
    field.
  5. Save the request ID in the
    id
    field from the sale response. Include the request ID in a check status request to confirm that the payment is complete.
    "id": "
    7551853376466526104891
    "

Example: Processing a Sale

Request
{ "clientReferenceInformation": { "code": "123" }, "merchantInformation": { "cancelUrl": "https://www.valid.merchant.redirect.url.from.request.html?actioncancel", "failureUrl": "https://www.valid.merchant.redirect.url.from.request.html?actionfailure", "successUrl": "https://www.valid.merchant.redirect.url.from.request.html?actionsuccess" }, "paymentInformation": { "paymentType": { "method": { "name": "GRABPAY" }, "name": "eWallet" } }, "billTo": { "country": "MY" }, "orderInformation": { "billTo": { "firstName": "John", "lastName": "Doe", "address1": "1 Market St", "locality": "Paris", "administrativeArea": "AR", "postalCode": "75001", "country": "PT", "email": "nredhi@visa.com", "phoneNumber": "33623456789" }, "shipTo": { "firstName": "John", "lastName": "Doe", "address1": "1 Market St", "locality": "Paris", "country": "MY", "email": "nredhi@visa.com", "phoneNumber": "33623456789" }, "amountDetails": { "totalAmount": "600.00", "currency": "MYR" }, "lineItems": [ { "unitPrice": "100.00", "quantity": "6", "productSKU": "testI", "productName": "TV", "productCode": "4564", "totalAmount": "600.00" } ] }, "processingInformation": { "actionList": [ "AP_SALE" ] } }
Response to a Successful Request
{ "_links": { "void": { "method": "POST", "href": "/pts/v2/payments/7551853376466526104891/voids" }, "billingAgreement": { "method": "POST", "href": "/pts/v2/billing-agreements/7551853376466526104891" }, "self": { "method": "POST", "href": "/pts/v2/payments/7551853376466526104891" }, "refund": { "method": "POST", "href": "/pts/v2/payments/7551853376466526104891/refunds" }, "status": { "method": "POST", "href": "/pts/v2/refresh-payment-status/7551853376466526104891" } }, "clientReferenceInformation": { "code": "123" }, "id": "7551853376466526104891", "message": "Request was processed successfully.", "orderInformation": { "amountDetails": { "totalAmount": "600.00", "currency": "MYR" } }, "processorInformation": { "responseDetails": "00001", "paymentUrl": "https://payment.limonetik.com/Razer/Order/PayPage/755025063216", "transactionId": "755025063216", "responseCode": "00001" }, "reconciliationId": "XETXPDYE7WDK", "status": "PENDING", "submitTimeUtc": "2025-08-14T15:28:58Z" }

Check a Request Status

You can retrieve the status of a pending sale or refund by sending a check status request.
When a pending status updates, a check status response includes the transaction's new status. Thunes sometimes needs to review a service request, which causes a transaction to initially respond with a pending status. The check status request requires you to include the request ID from the pending transaction response you are checking the status of. The request ID is located in the
id
response field.
Cybersource
recommends that you send a check status request hourly until the status updates from pending.

Endpoints

Production:
POST
https://api.cybersource.com
/pts/v2/refresh-payment-status/
{id}
Test:
POST
https://apitest.cybersource.com
/pts/v2/refresh-payment-status/
{id}
Set the
{id}
to the request ID of the API service you are retrieving.

Response Statuses

Cybersource
responds to your check status request with one of these statuses in the
status
field:
Check Status Responses for a Sale
  • ABANDONED
    : The customer did not complete the payment using the redirect URL.
  • FAILED
    : The service request failed. A failed request can be due to either GrabPay rejecting the transaction or a technical error.
  • FUNDED
    : The settled amount is funded to the merchant bank account.
  • PENDING
    : The service request is accepted but is not completed. Request the check status service to retrieve status updates.
  • SETTLED
    : The sale request is settled for the requested amount.
Check Status Responses for a Refund
  • FAILED
    : The service request failed. A failed request can be due to either GrabPay rejecting the transaction or a technical error.
  • REFUNDED
    : The settled amount is successfully refunded.

Example: Checking a Request Status

Request
{ "clientReferenceInformation": { "code": "refnum-1234" }, "paymentInformation": { "paymentType": { "method": { "name": "GRABPAY" }, "name": "eWallet" } }, "processingInformation": { "actionList": "AP_STATUS" } }
Response to a Successful Request
{ "clientReferenceInformation": { "code": "refnum-1234" }, "id": "7551854954556394804888", "processorInformation": { "responseDetails": "00001", "token": "755025063216", "responseCode": "00001" }, "reconciliationId": "XEL42E9I5E3C", "status": "PENDING" }

Refund a Payment

You can refund a completed payment for the full amount or a partial amount by sending a refund request. GrabPay supports multiple refund requests when the total amount of all of the refund requests is less than the captured amount.
Requesting a refund requires the request ID from the sale response. The request ID is located in the
id
response field.

Endpoints

Production:
POST
https://api.cybersource.com
/pts/v2/payments/
{id}
/refunds
Test:
POST
https://apitest.cybersource.com
/pts/v2/payments/
{id}
/refunds
The
{id}
is the request ID contained in the original transaction request.

Response Statuses

Cybersource
responds to your refund request with one of these statuses as the
status
field value:
  • FAILED
    : The refund request failed.
  • REFUNDED
    : The refund request is accepted but is not completed. Request the check status service to retrieve status updates. For more information, see Check a Request Status.
When you send a check status request to retrieve an updated refund status, these are the possible responses:
  • FAILED
    : The refund request failed.
  • REFUNDED
    : The settled payment is successfully refunded.

Required Fields for Refunding a Payment

clientReferenceInformation.code
orderInformation.amountDetails.currency
Set to
MYR
.
orderInformation.amountDetails.totalAmount
paymentInformation.paymentType.method.name
Set to
GRABPAY
.
paymentInformation.paymentType.name
Set to
eWallet
.
processingInformation.actionList
Set to
AP_REFUND
.

Example: Refunding a Payment

Request
{ "clientReferenceInformation": { "code": "refnum-1234" }, "paymentInformation": { "paymentType": { "method": { "name": "GRABPAY" }, "name": "eWallet" } }, "processingInformation": { "actionList": "AP_REFUND" }, "orderInformation": { "amountDetails": { "totalAmount": "600.00", "currency": "MYR" } } }
Response to a Successful Request
{ "_links": { "self": { "method": "GET", "href": "/pts/v2/refunds/7551855794346633404893" }, "status": { "method": "POST", "href": "/pts/v2/refresh-payment-status/7551855794346633404893" } }, "id": "7551855794346633404893", "orderInformation": { "amountDetails": { "currency": "MYR" } }, "clientReferenceInformation": { "code": "refnum-1234" }, "processorInformation": { "responseDetails": "00006", "transactionId": "430844862998", "responseCode": "00006" }, "reconciliationId": "XFZ3ZE1G1DID", "refundAmountDetails": { "refundAmount": "5.00" }, "status": "REFUNDED", "submitTimeUtc": "2025-08-08T18:14:18Z" }

GroupUp Transaction Requests

GroupUp is a payment method offered by the Thunes payment service provider (PSP) that you can offer your customers through
Cybersource
. With GroupUp you can process payments, refund payments, and retrieve the status of a pending payment or refund.
This section describes how to process GroupUp transactions using the
REST API
.

Requirement

You must receive a Thunes merchant ID before you can begin processing payments. Contact your
Cybersource
account manager for more information.

Supported Country and Currency

This table lists the country and currency that is supported by GroupUp.
Supported Country and Currency
Supported Country
Country Code
Supported Currency
Currency Code
France
FR
Euro
EUR

Shipping Policy

You can ship purchased goods when the sale status is
SETTLED
.

GroupUp by Thunes Transaction Workflow

This workflow describes the sequence of events that comprises a successful GroupUp payment and refund.

Figure:

GroupUp by Thunes Transaction Workflow
  1. The customer begins to checkout on your website and chooses the GroupUp payment method.
  2. You send a sale API request to
    Cybersource
    . For more information, see Process a Sale.
  3. Cybersource
    responds to you with a
    PENDING
    status, GroupUp redirect URL, and sale request ID.
  4. You redirect the customer to the GroupUp URL.
  5. The customer completes the checkout using GroupUp and is redirected to your website.
  6. You send a check status API request to
    Cybersource
    . For more information, see Check a Transaction Status.
  7. Cybersource
    responds to you with a
    SETTLED
    status.
  8. You confirm the payment to the customer.
  9. The customer returns the purchase.
  10. You send a refund API request to
    Cybersource
    with the sale request ID. For more information, see Refund a Payment.
  11. Cybersource
    responds to you with a
    REFUNDED
    status and refund request ID.
  12. You send a check status request to
    Cybersource
    to verify the refund status.
  13. Cybersource
    respond to you with a
    REFUNDED
    status.
  14. You confirm the refund to the customer.

Transaction Statuses Workflow

This workflow shows the statuses that can occur at each stage of processing a sale and refund.

Figure:

Transaction Statuses Workflow
  1. When a customer begins to check out, you send a sale request to
    Cybersource
    and receive one of these possible statuses:
    • FAILED
      : The sale cannot be completed.
    • PENDING
      : The sale request is accepted but is not completed. Send the check status request to retrieve status updates.
  2. You send a check status request to
    Cybersource
    to verify the sale status and receive one of these statuses:
    • ABANDONED
      : The customer did not complete the payment using the redirect URL.
    • FAILED
      : The sale request failed. A failed request can be due to either a rejection or a technical error.
    • PENDING
      : The sale request is accepted but is not completed. Send the check status request as often as necessary to obtain the information that you need.
    • SETTLED
      : The sale request is settled for the requested amount. When the settled amount is deposited into the merchant's bank account, the status updates to
      FUNDED
      .
  3. If a customer returns a purchase, you send a refund request to
    Cybersource
    and receive one of these possible statuses:
    • FAILED
      : The refund request failed.
    • REFUNDED
      : The refund request is accepted but is not completed. Request the check status service to retrieve status updates.
  4. You send a check status request to
    Cybersource
    to verify the refund status and receive one of these statuses:
    • FAILED
      : The refund could not be completed.
    • REFUNDED
      : The settled amount is successfully refunded.

Process a Sale

This section describes how to send a sale request to process a payment.
A sale request authorizes and captures a payment in the same request. A successful sale response includes an GroupUp redirect URL and a
PENDING
status. Redirect the customer to the GroupUp URL to allow the customer to complete the checkout using their GroupUp account. When the customer completes the checkout, the customer is redirected to your website.
When you receive a successful response, save the sale request ID in the
id
response field to perform a follow-on check status request or refund request.

Calculating the Grand Total

Include the grand total in the request by using the
orderInformation.amountDetails.totalAmount
field.

Endpoints

Production:
POST
https://api.cybersource.com
/pts/v2/payments
Test:
POST
https://apitest.cybersource.com
/pts/v2/payments

Processing a Sale

Follow these steps to successfully process sale.
  1. Send a
    POST
    request to the endpoint and include these required fields:
    clientReferenceInformation.code
    merchantInformation.cancelUrl
    merchantInformation.failureUrl
    merchantInformation.successUrl
    orderInformation.amountDetails.currency
    Set to
    EUR
    .
    orderInformation.amountDetails.totalAmount
    orderInformation.billTo.country
    orderInformation.billTo.email
    orderInformation.billTo.firstName
    orderInformation.billTo.lastName
    paymentInformation.paymentType.method.name
    Set to
    GROUPUP
    .
    paymentInformation.paymentType.name
    processingInformation.actionList
    Set to
    AP_SALE
    .
  2. You can include these optional fields in the request:
    merchantDefinedInformation[].key
    merchantInformation.merchantDescriptor
    orderInformation.billTo.address1
    orderInformation.billTo.address2
    orderInformation.billTo.administrativeArea
    orderInformation.billTo.locality
    orderInformation.billTo.phoneNumber
    orderInformation.billTo.postalCode
    orderInformation.lineItems[].productCode
    orderInformation.lineItems[].productName
    orderInformation.lineItems[].productSku
    orderInformation.lineItems[].quantity
    orderInformation.lineItems[].taxAmount
    orderInformation.lineItems[].totalAmount
    orderInformation.lineItems[].unitPrice
  3. Redirect the customer to the returned URL in the
    merchantInformation.successUrl
    response field.
    "successUrl": "https://www.valid.merchant.redirect.url.from.request.html?actionsuccess"
  4. When the customer completes the checkout using their GroupUp credentials, the customer is redirected to the merchant website based on the URL that you included in the
    merchantInformation.successUrl
    request field.
  5. Save the request ID in the
    id
    field from the sale response. Include the request ID in a check status request to confirm that the payment is complete.
    "id": "7546757907606782704806"

Example: Processing a Sale

Request
{ "clientReferenceInformation": { "code": "123" }, "merchantInformation": { "cancelUrl": "https://www.valid.merchant.redirect.url.from.request.html?actioncancel", "failureUrl": "https://www.valid.merchant.redirect.url.from.request.html?actionfailure", "successUrl": "https://www.valid.merchant.redirect.url.from.request.html?actionsuccess" }, "paymentInformation": { "paymentType": { "method": { "name": "GROUPUP" }, "name": "Voucher" } }, "orderInformation": { "billTo": { "firstName": "John", "lastName": "Doe", "country": "FR", "email": "test@test.com" }, "amountDetails": { "totalAmount": "10.00", "currency": "EUR" } }, "processingInformation": { "actionList": [ "AP_SALE" ] } }
Response to a Successful Request
{ "_links": { "void": { "method": "POST", "href": "/pts/v2/payments/7546757907606782704806/voids" }, "billingAgreement": { "method": "POST", "href": "/pts/v2/billing-agreements/7546757907606782704806" }, "self": { "method": "POST", "href": "/pts/v2/payments/7546757907606782704806" }, "refund": { "method": "POST", "href": "/pts/v2/payments/7546757907606782704806/refunds" }, "status": { "method": "POST", "href": "/pts/v2/refresh-payment-status/7546757907606782704806" } }, "clientReferenceInformation": { "code": "123" }, "id": "7546757907606782704806", "message": "Request was processed successfully.", "orderInformation": { "amountDetails": { "totalAmount": "10.00", "currency": "EUR" } }, "processorInformation": { "responseDetails": "00001", "paymentUrl": "https://payment.limonetikqualif.com/Conecs/Order/PayPage/960636547358", "transactionId": "960636547358", "responseCode": "00001" }, "reconciliationId": "XFZ55E33PZ6F", "status": "PENDING", "submitTimeUtc": "2025-08-08T17:56:32Z" }

Response Statuses for Processing a Sale

Cybersource
responds to your sale request with one of these statuses in the
status
field:
  • FAILED
    : The sale cannot be completed.
  • PENDING
    : The sale request is accepted but is not completed. Send a check status request as often as necessary to obtain the information that you need. For more information, see Check a Transaction Status.

Check a Transaction Status

This section describes how to retrieve the current status of a sale or refund. Send a check status request to know if a pending sale is settled, or to verify that a refund request is refunded. Use the check status request as often as necessary to obtain the information that you need.
The check status request requires the request ID from the sale or refund response. The request ID is in the
id
response field.

Endpoints

Production:
POST
https://api.cybersource.com
/pts/v2/refresh-payment-status/
{id}
Test:
POST
https://apitest.cybersource.com
/pts/v2/refresh-payment-status/
{id}
Set the
{id}
to the request ID of the API service you are retrieving.

Required Fields for Checking a Status

clientReferenceInformation.code
paymentInformation.paymentType.method.name
Set to
GROUPUP
.
paymentInformation.paymentType.name
processingInformation.actionList
Set to
AP_STATUS
.

Example: Checking a Status

Request
{ "clientReferenceInformation": { "code": "refnum-1234" }, "paymentInformation": { "paymentType": { "method": { "name": "GROUPUP" }, "name": "Voucher" } }, "processingInformation": { "actionList": "AP_STATUS" } }
Response to a Successful Request
{ "clientReferenceInformation": { "code": "refnum-1234" }, "id": "7546760673456997804806", "processorInformation": { "responseDetails": "00004", "token": "960636547358", "responseCode": "00004" }, "reconciliationId": "XFZ3ZE1G1DAT", "status": "SETTLED" }

Response Statuses for Checking a Status

Cybersource
responds to your check status request with one of these statuses in the
status
field:
Check Status Responses for a Sale
  • ABANDONED
    : The customer did not complete the payment using the redirect URL.
  • FAILED
    : The service request failed. A failed request can be due to either GroupUp rejecting the transaction or a technical error.
  • FUNDED
    : The settled amount is funded to the merchant bank account.
  • PENDING
    : The service request is accepted but is not completed. Request the check status service to retrieve status updates.
  • SETTLED
    : The sale request is settled for the requested amount.
Check Status Responses for a Refund
  • FAILED
    : The service request failed. A failed request can be due to either GroupUp rejecting the transaction or a technical error.
  • REFUNDED
    : The settled amount is successfully refunded.

Refund a Payment

This section describes how to refund a payment. You can refund a settled payment for the full amount or a partial amount by sending a refund request. Multiple partial refund requests are also supported, and the total amount of all of the refund requests must be less than the settled amount.
Requesting a refund requires the sale request ID from the sale response. The sale request ID is in the
id
response field.

Endpoints

Production:
POST
https://api.cybersource.com
/pts/v2/payments/
{id}
/refunds
Test:
POST
https://apitest.cybersource.com
/pts/v2/payments/
{id}
/refunds
The
{id}
is the request ID contained in the original transaction request.

Required Fields for Refunding a Payment

clientReferenceInformation.code
orderInformation.amountDetails.currency
Set to
EUR
.
orderInformation.amountDetails.totalAmount
paymentInformation.paymentType.method.name
Set to
GROUPUP
.
paymentInformation.paymentType.name
processingInformation.actionList
Set to
AP_REFUND
.

Example: Refunding a Payment

Request
{ "clientReferenceInformation": { "code": "refnum-1234" }, "paymentInformation": { "paymentType": { "method": { "name": "GROUPUP" }, "name": "Voucher" } }, "processingInformation": { "actionList": "AP_REFUND" }, "orderInformation": { "amountDetails": { "totalAmount": "5.00", "currency": "EUR" } } }
Response to a Successful Request
{ "_links": { "self": { "method": "GET", "href": "/pts/v2/refunds/7546762147596482204807" }, "status": { "method": "POST", "href": "/pts/v2/refresh-payment-status/7546762147596482204807" } }, "clientReferenceInformation": { "code": "refnum-1234", "returnReconciliationId": "R015AE1TJE8N" }, "id": "7546762147596482204807", "orderInformation": { "amountDetails": { "currency": "EUR" } }, "processorInformation": { "responseDetails": "00006", "transactionId": "960636547358", "responseCode": "00006" }, "reconciliationId": "XFZ55E33PZ6F", "refundAmountDetails": { "refundAmount": "5.00" }, "status": "REFUNDED", "submitTimeUtc": "2025-08-08T18:03:35Z" }

Response Statuses for Refunding a Payment

Cybersource
responds to your refund request with one of these statuses in the
status
field:
  • FAILED
    : The refund request failed.
  • REFUNDED
    : The refund request is accepted but is not completed. Send a check status request to verify that the status is refunded. For more information, see Check a Transaction Status.

iDEAL Transaction Requests

iDEAL is a payment method offered by the Thunes payment service provider (PSP) that you can offer your customers through
Cybersource
. With iDEAL you can process payments, refund payments, and retrieve the status of a pending payment or refund.
This section describes how to process iDEAL transactions using the
REST API
.

Requirement

You must receive a Thunes merchant ID before you can begin processing payments. Contact your
Cybersource
account manager for more information.

Supported Country and Currency

This table lists the country and currency that is supported by iDEAL.
Supported Country and Currency
Supported Country
Country Code
Supported Currency
Currency Code
Netherlands
NL
Euro
EUR

Shipping Policy

You can ship purchased goods when the sale status is
SETTLED
.

iDEAL by Thunes Transaction Workflow

This workflow describes the sequence of events that comprises a successful iDEAL payment and refund.

Figure:

iDEAL by Thunes Transaction Workflow
  1. The customer begins to checkout on your website and chooses the iDEAL payment method.
  2. You send a sale API request to
    Cybersource
    . For more information, see Process a Sale.
  3. Cybersource
    responds to you with a
    PENDING
    status, iDEAL redirect URL, and sale request ID.
  4. You redirect the customer to the iDEAL URL.
  5. The customer completes the checkout using iDEAL and is redirected to your website.
  6. You send a check status API request to
    Cybersource
    . For more information, see Check a Transaction Status.
  7. Cybersource
    responds to you with a
    SETTLED
    status.
  8. You confirm the payment to the customer.
  9. The customer returns the purchase.
  10. You send a refund API request to
    Cybersource
    with the sale request ID. For more information, see Refund a Payment.
  11. Cybersource
    responds to you with a
    REFUNDED
    status and refund request ID.
  12. You send a check status request to
    Cybersource
    to verify the refund status.
  13. Cybersource
    respond to you with a
    REFUNDED
    status.
  14. You confirm the refund to the customer.

Transaction Statuses Workflow

This workflow shows the statuses that can occur at each stage of processing a sale and refund.

Figure:

Transaction Statuses Workflow
  1. When a customer begins to check out, you send a sale request to
    Cybersource
    and receive one of these possible statuses:
    • FAILED
      : The sale cannot be completed.
    • PENDING
      : The sale request is accepted but is not completed. Send the check status request to retrieve status updates.
  2. You send a check status request to
    Cybersource
    to verify the sale status and receive one of these statuses:
    • ABANDONED
      : The customer did not complete the payment using the redirect URL.
    • FAILED
      : The sale request failed. A failed request can be due to either a rejection or a technical error.
    • PENDING
      : The sale request is accepted but is not completed. Send the check status request as often as necessary to obtain the information that you need.
    • SETTLED
      : The sale request is settled for the requested amount. When the settled amount is deposited into the merchant's bank account, the status updates to
      FUNDED
      .
  3. If a customer returns a purchase, you send a refund request to
    Cybersource
    and receive one of these possible statuses:
    • FAILED
      : The refund request failed.
    • REFUNDED
      : The refund request is accepted but is not completed. Request the check status service to retrieve status updates.
  4. You send a check status request to
    Cybersource
    to verify the refund status and receive one of these statuses:
    • FAILED
      : The refund could not be completed.
    • REFUNDED
      : The settled amount is successfully refunded.

Process a Sale

This section describes how to send a sale request to process a payment.
A sale request authorizes and captures a payment in the same request. A successful sale response includes an iDEAL redirect URL and a
PENDING
status. Redirect the customer to the iDEAL URL to allow the customer to complete the checkout using their iDEAL account. When the customer completes the checkout, the customer is redirected to your website.
When you receive a successful response, save the sale request ID in the
id
response field to perform a follow-on check status request or refund request.

Calculating the Grand Total

Include the grand total in the request by using the
orderInformation.amountDetails.totalAmount
field.

Endpoints

Production:
POST
https://api.cybersource.com
/pts/v2/payments
Test:
POST
https://apitest.cybersource.com
/pts/v2/payments

Processing a Sale

Follow these steps to successfully process sale.
  1. Send a
    POST
    request to the
    https://apitest.cybersource.com
    /pts/v2/payments
    endpoint and include these required fields:
    clientReferenceInformation.code
    merchantInformation.cancelUrl
    merchantInformation.failureUrl
    merchantInformation.successUrl
    orderInformation.amountDetails.currency
    Set to
    EUR
    .
    orderInformation.amountDetails.totalAmount
    orderInformation.billTo.address1
    orderInformation.billTo.country
    orderInformation.billTo.email
    orderInformation.billTo.firstName
    orderInformation.billTo.lastName
    orderInformation.billTo.phoneNumber
    paymentInformation.paymentType.method.name
    Set to
    IDEALT
    .
    paymentInformation.paymentType.name
    Set to
    bankTransfer
    .
    processingInformation.actionList
    Set to
    AP_SALE
    .
  2. You can include these optional fields in the request:
    merchantDefinedInformation[].key
    merchantInformation.merchantDescriptor
    orderInformation.billTo.address1
    orderInformation.billTo.address2
    orderInformation.billTo.administrativeArea
    orderInformation.billTo.locality
    orderInformation.billTo.phoneNumber
    orderInformation.billTo.postalCode
    orderInformation.lineItems[].productCode
    orderInformation.lineItems[].productName
    orderInformation.lineItems[].productSku
    orderInformation.lineItems[].quantity
    orderInformation.lineItems[].taxAmount
    orderInformation.lineItems[].totalAmount
    orderInformation.lineItems[].unitPrice
  3. Redirect the customer to the returned URL in the
    merchantInformation.successUrl
    response field.
    "successUrl": "https://www.valid.merchant.redirect.url.from.request.html?actionsuccess"
  4. When the customer completes the checkout using their iDEAL credentials, the customer is redirected to the merchant website based on the URL that you included in the
    merchantInformation.successUrl
    request field.
  5. Save the request ID in the
    id
    field from the sale response. Include the request ID in a check status request to confirm that the payment is complete.
    "id": "7551878413816917004807"

Example: Processing a Sale

Request
{ "clientReferenceInformation": { "code": "123" }, "merchantInformation": { "cancelUrl": "https://www.valid.merchant.redirect.url.from.request.html?actioncancel", "failureUrl": "https://www.valid.merchant.redirect.url.from.request.html?actionfailure", "successUrl": "https://www.valid.merchant.redirect.url.from.request.html?actionsuccess" }, "paymentInformation": { "paymentType": { "method": { "name": "IDEALT" }, "name": "bankTransfer" } }, "orderInformation": { "billTo": { "firstName": "John", "lastName": "Doe", "address1": "1 Market St", "country": "NL", "email": "test@test.com", "phoneNumber": "33623456789" }, "amountDetails": { "totalAmount": "600.00", "currency": "EUR" } }, "processingInformation": { "actionList": [ "AP_SALE" ] } }
Response to a Successful Request
{ "_links": { "void": { "method": "POST", "href": "/pts/v2/payments/7551878413816917004807/voids" }, "billingAgreement": { "method": "POST", "href": "/pts/v2/billing-agreements/7551878413816917004807" }, "self": { "method": "POST", "href": "/pts/v2/payments/7551878413816917004807" }, "refund": { "method": "POST", "href": "/pts/v2/payments/7551878413816917004807/refunds" }, "status": { "method": "POST", "href": "/pts/v2/refresh-payment-status/7551878413816917004807" } }, "clientReferenceInformation": { "code": "123" }, "id": "7551878413816917004807", "message": "Request was processed successfully.", "orderInformation": { "amountDetails": { "totalAmount": "600.00", "currency": "EUR" } }, "processorInformation": { "responseDetails": "00001", "paymentUrl": "https://payment.limonetikqualif.com/PPRO/Order/PayPage/555912063193", "transactionId": "555912063193", "responseCode": "00001" }, "reconciliationId": "XFZ55E5TB5S3", "status": "PENDING", "submitTimeUtc": "2025-08-14T16:10:42Z" }

Response Statuses for Processing a Sale

Cybersource
responds to your sale request with one of these statuses in the
status
field:
  • FAILED
    : The sale cannot be completed.
  • PENDING
    : The sale request is accepted but is not completed. Send a check status request as often as necessary to obtain the information that you need. For more information, see Check a Transaction Status.

Check a Transaction Status

This section describes how to retrieve the current status of a sale or refund. Send a check status request to know if a pending sale is settled, or to verify that a refund request is refunded. Use the check status request as often as necessary to obtain the information that you need.
The check status request requires the request ID from the sale or refund response. The request ID is in the
id
response field.

Endpoints

Production:
POST
https://api.cybersource.com
/pts/v2/refresh-payment-status/
{id}
Test:
POST
https://apitest.cybersource.com
/pts/v2/refresh-payment-status/
{id}
Set the
{id}
to the request ID of the API service you are retrieving.

Required Fields for Checking a Status

clientReferenceInformation.code
paymentInformation.paymentType.method.name
Set to
IDEALT
.
paymentInformation.paymentType.name
Set to
bankTransfer
.
processingInformation.actionList
Set to
AP_STATUS
.

Example: Checking a Status

Request
{ "clientReferenceInformation": { "code": "refnum-1234" }, "paymentInformation": { "paymentType": { "method": { "name": "IDEALT" }, "name": "bankTransfer" } }, "processingInformation": { "actionList": "AP_STATUS" } }
Response to a Successful Request
{ "clientReferenceInformation": { "code": "refnum-1234" }, "id": "7551879994136016504807", "processorInformation": { "responseDetails": "00004", "token": "555912063193", "responseCode": "00004" }, "reconciliationId": "XFZ55E5TB5TR", "status": "SETTLED" }

Response Statuses for Checking a Status

Cybersource
responds to your check status request with one of these statuses in the
status
field:
Check Status Responses for a Sale
  • ABANDONED
    : The customer did not complete the payment using the redirect URL.
  • FAILED
    : The service request failed. A failed request can be due to either iDEAL rejecting the transaction or a technical error.
  • FUNDED
    : The settled amount is funded to the merchant bank account.
  • PENDING
    : The service request is accepted but is not completed. Request the check status service to retrieve status updates.
  • SETTLED
    : The sale request is settled for the requested amount.
Check Status Responses for a Refund
  • FAILED
    : The service request failed. A failed request can be due to either iDEAL rejecting the transaction or a technical error.
  • REFUNDED
    : The settled amount is successfully refunded.

Refund a Payment

This section describes how to refund a payment. You can refund a settled payment for the full amount or a partial amount by sending a refund request. Multiple partial refund requests are also supported, and the total amount of all of the refund requests must be less than the settled amount.
Requesting a refund requires the sale request ID from the sale response. The sale request ID is in the
id
response field.

Endpoints

Production:
POST
https://api.cybersource.com
/pts/v2/payments/
{id}
/refunds
Test:
POST
https://apitest.cybersource.com
/pts/v2/payments/
{id}
/refunds
The
{id}
is the request ID contained in the original transaction request.

Required Fields for Refunding a Payment

clientReferenceInformation.code
orderInformation.amountDetails.currency
Set to
EUR
.
orderInformation.amountDetails.totalAmount
paymentInformation.paymentType.method.name
Set to
P24
.
paymentInformation.paymentType.name
Set to
bankTransfer
.
processingInformation.actionList
Set to
AP_REFUND
.

Example: Refunding a Payment

Request
{ "clientReferenceInformation": { "code": "refnum-1234" }, "paymentInformation": { "paymentType": { "method": { "name": "IDEALT" }, "name": "bankTransfer" } }, "processingInformation": { "actionList": "AP_REFUND" }, "orderInformation": { "amountDetails": { "totalAmount": "600.00", "currency": "EUR" } } }
Response to a Successful Request
{ "_links": { "self": { "method": "GET", "href": "/pts/v2/refunds/7551880639626418704805" }, "status": { "method": "POST", "href": "/pts/v2/refresh-payment-status/7551880639626418704805" } }, "clientReferenceInformation": { "code": "refnum-1234", "returnReconciliationId": "HX0HTE22MIIY" }, "id": "7551880639626418704805", "orderInformation": { "amountDetails": { "currency": "EUR" } }, "processorInformation": { "responseDetails": "00006", "transactionId": "555912063193", "responseCode": "00006" }, "reconciliationId": "XFZ55E5TB5S3", "refundAmountDetails": { "refundAmount": "600.00" }, "status": "REFUNDED", "submitTimeUtc": "2025-08-14T16:14:25Z" }

Response Statuses for Refund a Payment

Cybersource
responds to your refund request with one of these statuses in the
status
field:
  • FAILED
    : The refund request failed.
  • REFUNDED
    : The refund request is accepted but is not completed. Send a check status request to verify that the status is refunded. For more information, see Check a Transaction Status.

MobilePay Transaction Requests

MobilePay is an e-wallet payment method offered by the Thunes payment service provider (PSP) that you can offer your customers through
Cybersource
. With MobilePay you can process payments, refund payments, and retrieve the status of a pending payment or refund.
This section describes how to process MobilePay transactions using the
REST API
.

Requirement

You must receive a Thunes merchant ID before you can begin processing payments. Contact your
Cybersource
account manager for more information.

Supported Country and Currency

This table lists the country and currency that is supported by MobilePay.
Supported Country and Currency
Supported Country
Country Code
Supported Currency
Currency Code
Denmark
DK
Danish krone
DKK

Shipping Policy

You can ship purchased goods when the sale status is
SETTLED
.

MobilePay by Thunes Transaction Workflow

This workflow describes the sequence of events that comprises a successful MobilePay payment and refund.

Figure:

MobilePay by Thunes Transaction Workflow
  1. The customer begins to checkout on your website and chooses the MobilePay payment method.
  2. You send a sale API request to
    Cybersource
    . For more information, see Process a Sale.
  3. Cybersource
    responds to you with a
    PENDING
    status, MobilePay redirect URL, and sale request ID.
  4. You redirect the customer to the MobilePay URL.
  5. The customer completes the checkout using MobilePay and is redirected to your website.
  6. You send a check status API request to
    Cybersource
    . For more information, see Check a Status.
  7. Cybersource
    responds to you with a
    SETTLED
    status.
  8. You confirm the payment to the customer.
  9. The customer returns the purchase.
  10. You send a refund API request to
    Cybersource
    with the sale request ID. For more information, see Refund a Payment.
  11. Cybersource
    responds to you with a
    REFUNDED
    status and refund request ID.
  12. You send a check status request to
    Cybersource
    to verify the refund status.
  13. Cybersource
    respond to you with a
    REFUNDED
    status.
  14. You confirm the refund to the customer.

Transaction Statuses Workflow

This workflow shows the statuses that can occur at each stage of processing a sale and refund.

Figure:

Transaction Statuses Workflow
  1. When a customer begins to check out, you send a sale request to
    Cybersource
    and receive one of these possible statuses:
    • FAILED
      : The sale cannot be completed.
    • PENDING
      : The sale request is accepted but is not completed. Send the check status request to retrieve status updates.
  2. You send a check status request to
    Cybersource
    to verify the sale status and receive one of these statuses:
    • ABANDONED
      : The customer did not complete the payment using the redirect URL.
    • FAILED
      : The sale request failed. A failed request can be due to either a rejection or a technical error.
    • PENDING
      : The sale request is accepted but is not completed. Send the check status request as often as necessary to obtain the information that you need.
    • SETTLED
      : The sale request is settled for the requested amount. When the settled amount is deposited into the merchant's bank account, the status updates to
      FUNDED
      .
  3. If a customer returns a purchase, you send a refund request to
    Cybersource
    and receive one of these possible statuses:
    • FAILED
      : The refund request failed.
    • REFUNDED
      : The refund request is accepted but is not completed. Request the check status service to retrieve status updates.
  4. You send a check status request to
    Cybersource
    to verify the refund status and receive one of these statuses:
    • FAILED
      : The refund could not be completed.
    • REFUNDED
      : The settled amount is successfully refunded.

Process a Sale

This section describes how to send a sale request to process a payment.
A sale request authorizes and captures a payment in the same request. A successful sale response includes an MobilePay redirect URL and a
PENDING
status. Redirect the customer to the MobilePay URL to allow the customer to complete the checkout using their MobilePay account. When the customer completes the checkout, the customer is redirected to your website.
When you receive a successful response, save the sale request ID in the
id
response field to perform a follow-on check status request or refund request.

Calculating the Grand Total

Include the grand total in the request by using the
orderInformation.amountDetails.totalAmount
field.

Endpoints

Production:
POST
https://api.cybersource.com
/pts/v2/payments
Test:
POST
https://apitest.cybersource.com
/pts/v2/payments

Processing a Sale

Follow these steps to successfully process sale.
  1. Send a
    POST
    request to the
    https://apitest.cybersource.com
    /pts/v2/payments
    endpoint and include these required fields:
    clientReferenceInformation.code
    merchantInformation.cancelUrl
    merchantInformation.failureUrl
    merchantInformation.successUrl
    orderInformation.amountDetails.currency
    Set to
    DKK
    .
    orderInformation.amountDetails.totalAmount
    orderInformation.billTo.country
    orderInformation.billTo.email
    orderInformation.billTo.firstName
    orderInformation.billTo.lastName
    paymentInformation.paymentType.method.name
    Set to
    MOBILEPAY
    .
    paymentInformation.paymentType.name
    Set to
    eWallet
    .
    processingInformation.actionList
    Set to
    AP_SALE
    .
  2. You can include these optional fields in the request:
    merchantDefinedInformation[].key
    merchantInformation.merchantDescriptor
    orderInformation.billTo.address1
    orderInformation.billTo.address2
    orderInformation.billTo.administrativeArea
    orderInformation.billTo.locality
    orderInformation.billTo.phoneNumber
    orderInformation.billTo.postalCode
    orderInformation.lineItems[].productCode
    orderInformation.lineItems[].productName
    orderInformation.lineItems[].productSku
    orderInformation.lineItems[].quantity
    orderInformation.lineItems[].taxAmount
    orderInformation.lineItems[].totalAmount
    orderInformation.lineItems[].unitPrice
  3. Redirect the customer to the returned URL in the
    merchantInformation.successUrl
    response field.
    "successUrl": "https://www.valid.merchant.redirect.url.from.request.html?actionsuccess"
  4. When the customer completes the checkout using their MobilePay credentials, the customer is redirected to the merchant website based on the URL that you included in the
    merchantInformation.successUrl
    request field.
  5. Save the request ID in the
    id
    field from the sale response. Include the request ID in a check status request to confirm that the payment is complete.
    "id": "7533004326616427604807"

Example: Processing a Sale

Request
{ "clientReferenceInformation": { "code": "123" }, "merchantInformation": { "cancelUrl": "https://www.valid.merchant.redirect.url.from.request.html?actioncancel", "failureUrl": "https://www.valid.merchant.redirect.url.from.request.html?actionfailure", "successUrl": "https://www.valid.merchant.redirect.url.from.request.html?actionsuccess" }, "paymentInformation": { "paymentType": { "method": { "name": "MOBILEPAY" }, "name": "eWallet" } }, "billTo": { "country": "DK" }, "orderInformation": { "billTo": { "firstName": "John", "lastName": "Doe", "address1": "1 Market St", "country": "DK", "email": "nredhi@visa.com", "phoneNumber": "33623456789" }, "shipTo": { "firstName": "John", "lastName": "Doe", "address1": "1 Market St", "country": "DK", "email": "nredhi@visa.com", "phoneNumber": "33623456789" }, "amountDetails": { "totalAmount": "43.00", "currency": "DKK" }, "lineItems": [ { "unitPrice": "43.00", "quantity": "1", "productSKU": "testI", "productName": "TV", "productCode": "4564", "totalAmount": "43.00" } ] }, "processingInformation": { "actionList": [ "AP_SALE" ] } }
Response to a Successful Request
{ "_links": { "void": { "method": "POST", "href": "/pts/v2/payments/7533004326616427604807/voids" }, "billingAgreement": { "method": "POST", "href": "/pts/v2/billing-agreements/7533004326616427604807" }, "self": { "method": "POST", "href": "/pts/v2/payments/7533004326616427604807" }, "refund": { "method": "POST", "href": "/pts/v2/payments/7533004326616427604807/refunds" }, "status": { "method": "POST", "href": "/pts/v2/refresh-payment-status/7533004326616427604807" } }, "clientReferenceInformation": { "code": "123" }, "id": "7533004326616427604807", "message": "Request was processed successfully.", "orderInformation": { "amountDetails": { "totalAmount": "43.00", "currency": "DKK" } }, "processorInformation": { "responseDetails": "00001", "paymentUrl": "https://lmk.limonetikqualif.com/mobilepay/PayPage/823876344653", "transactionId": "823876344653", "responseCode": "00001" }, "reconciliationId": "XFZ3YDF243RW", "status": "PENDING", "submitTimeUtc": "2025-07-23T19:53:54Z" }

Response Statuses for Processing a Sale

Cybersource
responds to your sale request with one of these statuses in the
status
field:
  • FAILED
    : The sale cannot be completed.
  • PENDING
    : The sale request is accepted but is not completed. Send a check status request as often as necessary to obtain the information that you need. For more information, see Check a Status.

Check a Status

This section describes how to retrieve the current status of a sale or refund. Send a check status request to know if a pending sale is settled, or to verify that a refund request is refunded. Use the check status request as often as necessary to obtain the information that you need.
The check status request requires the request ID from the sale or refund response. The request ID is in the
id
response field.

Endpoints

Production:
POST
https://api.cybersource.com
/pts/v2/refresh-payment-status/
{id}
Test:
POST
https://apitest.cybersource.com
/pts/v2/refresh-payment-status/
{id}
Set the
{id}
to the request ID of the API service you are retrieving.

Required Fields for Checking a Status

clientReferenceInformation.code
paymentInformation.paymentType.method.name
Set to
MOBILEPAY
.
paymentInformation.paymentType.name
Set to
eWallet
.
processingInformation.actionList
Set to
AP_STATUS
.

Example: Checking a Status

Request
{ "clientReferenceInformation": { "code": "refnum-1234" }, "paymentInformation": { "paymentType": { "method": { "name": "MOBILEPAY" }, "name": "eWallet" } }, "processingInformation": { "actionList": "AP_STATUS" } }
Response to a Successful Request
{ "clientReferenceInformation": { "code": "refnum-1234" }, "id": "7533005724356445104807", "processorInformation": { "responseDetails": "00004", "token": "823876344653", "responseCode": "00004" }, "reconciliationId": "XFZ3YDF243SA", "status": "SETTLED" }

Response Statuses for Checking a Status

Cybersource
responds to your check status request with one of these statuses in the
status
field:
Check Status Responses for a Sale
  • ABANDONED
    : The customer did not complete the payment using the redirect URL.
  • FAILED
    : The service request failed. A failed request can be due to either MobilePay rejecting the transaction or a technical error.
  • FUNDED
    : The settled amount is funded to the merchant bank account.
  • PENDING
    : The service request is accepted but is not completed. Request the check status service to retrieve status updates.
  • SETTLED
    : The sale request is settled for the requested amount.
Check Status Responses for a Refund
  • FAILED
    : The service request failed. A failed request can be due to either MobilePay rejecting the transaction or a technical error.
  • REFUNDED
    : The settled amount is successfully refunded.

Refund a Payment

This section describes how to refund a payment. You can refund a settled payment for the full amount or a partial amount by sending a refund request. Multiple partial refund requests are also supported, and the total amount of all of the refund requests must be less than the settled amount.
Requesting a refund requires the sale request ID from the sale response. The sale request ID is in the
id
response field.

Endpoints

Production:
POST
https://api.cybersource.com
/pts/v2/payments/
{id}
/refunds
Test:
POST
https://apitest.cybersource.com
/pts/v2/payments/
{id}
/refunds
The
{id}
is the request ID contained in the original transaction request.

Required Fields for Refunding a Payment

clientReferenceInformation.code
orderInformation.amountDetails.currency
Set to
DKK
.
orderInformation.amountDetails.totalAmount
paymentInformation.paymentType.method.name
Set to
MOBILEPAY
.
paymentInformation.paymentType.name
Set to
eWallet
.
processingInformation.actionList
Set to
AP_REFUND
.

Example: Refunding a Payment

Request
{ "clientReferenceInformation": { "code": "refnum-1234" }, "paymentInformation": { "paymentType": { "method": { "name": "MOBILEPAY" }, "name": "eWallet" } }, "processingInformation": { "actionList": "AP_REFUND" }, "orderInformation": { "amountDetails": { "totalAmount": "43.00", "currency": "DKK" } } }
Response to a Successful Request
{ "_links": { "self": { "method": "GET", "href": "/pts/v2/refunds/7533006119896971604805" }, "status": { "method": "POST", "href": "/pts/v2/refresh-payment-status/7533006119896971604805" } }, "clientReferenceInformation": { "code": "refnum-1234", "returnReconciliationId": "3MDKOCX65QSM" }, "id": "7533006119896971604805", "orderInformation": { "amountDetails": { "currency": "DKK" } }, "processorInformation": { "responseDetails": "00006", "transactionId": "823876344653", "responseCode": "00006" }, "reconciliationId": "XFZ3YDF243RW", "refundAmountDetails": { "refundAmount": "43.00" }, "status": "REFUNDED", "submitTimeUtc": "2025-07-23T19:56:55Z" }

Response Statuses for Refunding a Payment

Cybersource
responds to your refund request with one of these statuses in the
status
field:
  • FAILED
    : The refund request failed.
  • REFUNDED
    : The refund request is accepted but is not completed. Send a check status request to verify that the status is refunded. For more information, see Check a Status.

Multibanco Transaction Requests

Multibanco is a payment method offered by the Thunes payment service provider (PSP) that you can offer your customers through
Cybersource
. With Multibanco you can process payments, refund payments, and retrieve the status of a pending payment or refund.
This section describes how to process Multibanco transactions using the
REST API
.

Requirement

You must receive a Thunes merchant ID before you can begin processing payments. Contact your
Cybersource
account manager for more information.

Supported Country and Currency

This table lists the country and currency that is supported by Multibanco.
Supported Country and Currency
Supported Country
Country Code
Supported Currency
Currency Code
Portugal
PT
Euro
EUR

Shipping Policy

You can ship purchased goods when the sale status is
SETTLED
.

Multibanco by Thunes Transaction Workflow

This workflow describes the sequence of events that comprises a successful Multibanco payment and refund.

Figure:

Multibanco Transaction Workflow
  1. The customer begins to checkout on your website and chooses the Multibanco payment method.
  2. You send a sale API request to
    Cybersource
    . For more information, see Process a Sale.
  3. Cybersource
    responds to you with a
    PENDING
    status, Multibanco redirect URL, and sale request ID.
  4. You redirect the customer to the Multibanco URL.
  5. The customer completes the checkout using Multibanco and is redirected to your website.
  6. You send a check status API request to
    Cybersource
    . For more information, see Check a Status.
  7. Cybersource
    responds to you with a
    SETTLED
    status.
  8. You confirm the payment to the customer.
  9. The customer returns the purchase.
  10. You send a refund API request to
    Cybersource
    with the sale request ID. For more information, see Refund a Payment.
  11. Cybersource
    responds to you with a
    REFUNDED
    status and refund request ID.
  12. You send a check status request to
    Cybersource
    to verify the refund status.
  13. Cybersource
    respond to you with a
    REFUNDED
    status.
  14. You confirm the refund to the customer.

Transaction Statuses Workflow

This workflow shows the statuses that can occur at each stage of processing a sale and refund.

Figure:

Transaction Statuses Workflow
  1. When a customer begins to check out, you send a sale request to
    Cybersource
    and receive one of these possible statuses:
    • FAILED
      : The sale cannot be completed.
    • PENDING
      : The sale request is accepted but is not completed. Send the check status request to retrieve status updates.
  2. You send a check status request to
    Cybersource
    to verify the sale status and receive one of these statuses:
    • ABANDONED
      : The customer did not complete the payment using the redirect URL.
    • FAILED
      : The sale request failed. A failed request can be due to either a rejection or a technical error.
    • PENDING
      : The sale request is accepted but is not completed. Send the check status request as often as necessary to obtain the information that you need.
    • SETTLED
      : The sale request is settled for the requested amount. When the settled amount is deposited into the merchant's bank account, the status updates to
      FUNDED
      .
  3. If a customer returns a purchase, you send a refund request to
    Cybersource
    and receive one of these possible statuses:
    • FAILED
      : The refund request failed.
    • REFUNDED
      : The refund request is accepted but is not completed. Request the check status service to retrieve status updates.
  4. You send a check status request to
    Cybersource
    to verify the refund status and receive one of these statuses:
    • FAILED
      : The refund could not be completed.
    • REFUNDED
      : The settled amount is successfully refunded.

Process a Sale

This section describes how to send a sale request to process a payment.
A sale request authorizes and captures a payment in the same request. A successful sale response includes an Multibanco redirect URL and a
PENDING
status. Redirect the customer to the Multibanco URL to allow the customer to complete the checkout using their Multibanco account. When the customer completes the checkout, the customer is redirected to your website.
When you receive a successful response, save the sale request ID in the
id
response field to perform a follow-on check status request or refund request.

Calculating the Grand Total

Include the grand total in the request by using the
orderInformation.amountDetails.totalAmount
field.

Endpoints

Production:
POST
https://api.cybersource.com
/pts/v2/payments
Test:
POST
https://apitest.cybersource.com
/pts/v2/payments

Processing a Sale

Follow these steps to successfully process sale.
  1. Send a
    POST
    request to the
    https://apitest.cybersource.com
    /pts/v2/payments
    endpoint and include these required fields:
    clientReferenceInformation.code
    merchantInformation.cancelUrl
    merchantInformation.failureUrl
    merchantInformation.successUrl
    orderInformation.amountDetails.currency
    Set to
    EUR
    .
    orderInformation.amountDetails.totalAmount
    orderInformation.billTo.address1
    orderInformation.billTo.country
    orderInformation.billTo.email
    orderInformation.billTo.firstName
    orderInformation.billTo.lastName
    orderInformation.billTo.phoneNumber
    paymentInformation.paymentType.method.name
    Set to
    MULTIBANCO
    .
    paymentInformation.paymentType.name
    Set to
    bankTransfer
    .
    processingInformation.actionList
    Set to
    AP_SALE
    .
  2. You can include these optional fields in the request:
    merchantDefinedInformation[].key
    merchantInformation.merchantDescriptor
    orderInformation.billTo.address1
    orderInformation.billTo.address2
    orderInformation.billTo.administrativeArea
    orderInformation.billTo.locality
    orderInformation.billTo.phoneNumber
    orderInformation.billTo.postalCode
    orderInformation.lineItems[].productCode
    orderInformation.lineItems[].productName
    orderInformation.lineItems[].productSku
    orderInformation.lineItems[].quantity
    orderInformation.lineItems[].taxAmount
    orderInformation.lineItems[].totalAmount
    orderInformation.lineItems[].unitPrice
  3. Redirect the customer to the returned URL in the
    merchantInformation.successUrl
    response field.
    "successUrl": "https://www.valid.merchant.redirect.url.from.request.html?actionsuccess"
  4. When the customer completes the checkout using their Multibanco credentials, the customer is redirected to the merchant website based on the URL that you included in the
    merchantInformation.successUrl
    request field.
  5. Save the request ID in the
    id
    field from the sale response. Include the request ID in a check status request to confirm that the payment is complete.
    "id": "7551889104536542704807"

Example: Processing a Sale

Request
{ "clientReferenceInformation": { "code": "123" }, "merchantInformation": { "cancelUrl": "https://www.valid.merchant.redirect.url.from.request.html?actioncancel", "failureUrl": "https://www.valid.merchant.redirect.url.from.request.html?actionfailure", "successUrl": "https://www.valid.merchant.redirect.url.from.request.html?actionsuccess" }, "paymentInformation": { "paymentType": { "method": { "name": "MULTIBANCO" }, "name": "bankTransfer" } }, "orderInformation": { "billTo": { "firstName": "John", "lastName": "Doe", "address1": "1 Market St", "country": "PT", "email": "test@test.com", "phoneNumber": "33623456789" }, "amountDetails": { "totalAmount": "600.00", "currency": "EUR" } }, "processingInformation": { "actionList": [ "AP_SALE" ] } }
Response to a Successful Request
{ "_links": { "void": { "method": "POST", "href": "/pts/v2/payments/7551889104536542704807/voids" }, "billingAgreement": { "method": "POST", "href": "/pts/v2/billing-agreements/7551889104536542704807" }, "self": { "method": "POST", "href": "/pts/v2/payments/7551889104536542704807" }, "refund": { "method": "POST", "href": "/pts/v2/payments/7551889104536542704807/refunds" }, "status": { "method": "POST", "href": "/pts/v2/refresh-payment-status/7551889104536542704807" } }, "clientReferenceInformation": { "code": "123" }, "id": "7551889104536542704807", "message": "Request was processed successfully.", "orderInformation": { "amountDetails": { "totalAmount": "600.00", "currency": "EUR" } }, "processorInformation": { "responseDetails": "00001", "paymentUrl": "https://payment.limonetikqualif.com/IfThenPay/Order/PayPage/665437010510", "transactionId": "665437010510", "responseCode": "00001" }, "reconciliationId": "XFZ3ZE5XDZTC", "status": "PENDING", "submitTimeUtc": "2025-08-14T16:28:31Z" }

Response Statuses for Processing a Sale

Cybersource
responds to your sale request with one of these statuses in the
status
field:
  • FAILED
    : The sale cannot be completed.
  • PENDING
    : The sale request is accepted but is not completed. Send a check status request as often as necessary to obtain the information that you need. For more information, see Check a Status.

Check a Status

This section describes how to retrieve the current status of a sale or refund. Send a check status request to know if a pending sale is settled, or to verify that a refund request is refunded. Use the check status request as often as necessary to obtain the information that you need.
The check status request requires the request ID from the sale or refund response. The request ID is in the
id
response field.

Endpoints

Production:
POST
https://api.cybersource.com
/pts/v2/refresh-payment-status/
{id}
Test:
POST
https://apitest.cybersource.com
/pts/v2/refresh-payment-status/
{id}
Set the
{id}
to the request ID of the API service you are retrieving.

Required Fields for Checking a Status

clientReferenceInformation.code
paymentInformation.paymentType.method.name
Set to
MULTIBANCO
.
paymentInformation.paymentType.name
Set to
bankTransfer
.
processingInformation.actionList
Set to
AP_STATUS
.

Example: Checking a Status

Request
{ "clientReferenceInformation": { "code": "refnum-1234" }, "paymentInformation": { "paymentType": { "method": { "name": "MULTIBANCO" }, "name": "bankTransfer" } }, "processingInformation": { "actionList": "AP_STATUS" } }
Response to a Successful Request
{ "clientReferenceInformation": { "code": "refnum-1234" }, "id": "7551890187526961804805", "processorInformation": { "responseDetails": "00001", "token": "665437010510", "responseCode": "00001" }, "reconciliationId": "XFZ3ZE5XDZTI", "status": "PENDING" }

Response Statuses for Checking a Status

Cybersource
responds to your check status request with one of these statuses in the
status
field:
Check Status Responses for a Sale
  • ABANDONED
    : The customer did not complete the payment using the redirect URL.
  • FAILED
    : The service request failed. A failed request can be due to either Multibanco rejecting the transaction or a technical error.
  • FUNDED
    : The settled amount is funded to the merchant bank account.
  • PENDING
    : The service request is accepted but is not completed. Request the check status service to retrieve status updates.
  • SETTLED
    : The sale request is settled for the requested amount.
Check Status Responses for a Refund
  • FAILED
    : The service request failed. A failed request can be due to either Multibanco rejecting the transaction or a technical error.
  • REFUNDED
    : The settled amount is successfully refunded.

Refund a Payment

This section describes how to refund a payment. You can refund a settled payment for the full amount or a partial amount by sending a refund request. Multiple partial refund requests are also supported, and the total amount of all of the refund requests must be less than the settled amount.
Requesting a refund requires the sale request ID from the sale response. The sale request ID is in the
id
response field.

Endpoints

Production:
POST
https://api.cybersource.com
/pts/v2/payments/
{id}
/refunds
Test:
POST
https://apitest.cybersource.com
/pts/v2/payments/
{id}
/refunds
The
{id}
is the request ID contained in the original transaction request.

Required Fields for Refunding a Payment

clientReferenceInformation.code
orderInformation.amountDetails.currency
Set to
EUR
.
orderInformation.amountDetails.totalAmount
paymentInformation.paymentType.method.name
Set to
MULTIBANCO
.
paymentInformation.paymentType.name
Set to
bankTransfer
.
processingInformation.actionList
Set to
AP_REFUND
.

Example: Refunding a Payment

Request
{ "clientReferenceInformation": { "code": "refnum-1234" }, "paymentInformation": { "paymentType": { "method": { "name": "MULTIBANCO" }, "name": "bankTransfer" } }, "processingInformation": { "actionList": "AP_REFUND" }, "orderInformation": { "amountDetails": { "totalAmount": "5.00", "currency": "EUR" } } }
Response to a Successful Request
{ "_links": { "self": { "method": "GET", "href": "/pts/v2/refunds/7551890715256012504806" }, "status": { "method": "POST", "href": "/pts/v2/refresh-payment-status/7551890715256012504806" } }, "clientReferenceInformation": { "code": "refnum-1234" }, "id": "7551890715256012504806", "orderInformation": { "amountDetails": { "currency": "EUR" } }, "processorInformation": { "responseDetails": "00006", "transactionId": "555912063193", "responseCode": "00006" }, "reconciliationId": "XFZ55E5TB5S3", "refundAmountDetails": { "refundAmount": "5.00" }, "status": "REFUNDED", "submitTimeUtc": "2025-08-14T16:14:25Z" }

Response Statuses for Refunding a Payment

Cybersource
responds to your refund request with one of these statuses in the
status
field:
  • FAILED
    : The refund request failed.
  • REFUNDED
    : The refund request is accepted but is not completed. Send a check status request to verify that the status is refunded. For more information, see Check a Status.

Pluxee Transaction Requests

Pluxee, previously known as
Sodexo
, is a payment method offered by the Thunes payment service provider (PSP) that you can offer your customers through
Cybersource
. With Pluxee you can process payments, refund payments, and retrieve the status of a pending payment or refund.
This section describes how to process Pluxee transactions using the
REST API
.

Requirement

You must receive a Thunes merchant ID before you can begin processing payments. Contact your
Cybersource
account manager for more information.

Supported Country and Currency

This table lists the country and currency that is supported by Pluxee.
Supported Country and Currency
Supported Country
Country Code
Supported Currency
Currency Code
France
FR
Euro
EUR

Shipping Policy

You can ship purchased goods when the sale status is
SETTLED
.

Pluxee by Thunes Transaction Workflow

This workflow describes the sequence of events that comprises a successful Pluxee payment and refund.

Figure:

Pluxee by Thunes Transaction Workflow
  1. The customer begins to checkout on your website and chooses the Pluxee payment method.
  2. You send a sale API request to
    Cybersource
    . For more information, see Process a Sale.
  3. Cybersource
    responds to you with a
    PENDING
    status, Pluxee redirect URL, and sale request ID.
  4. You redirect the customer to the Pluxee URL.
  5. The customer completes the checkout using Pluxee and is redirected to your website.
  6. You send a check status API request to
    Cybersource
    . For more information, see Check a Transaction Status.
  7. Cybersource
    responds to you with a
    SETTLED
    status.
  8. You confirm the payment to the customer.
  9. The customer returns the purchase.
  10. You send a refund API request to
    Cybersource
    with the sale request ID. For more information, see Refund a Payment.
  11. Cybersource
    responds to you with a
    REFUNDED
    status and refund request ID.
  12. You send a check status request to
    Cybersource
    to verify the refund status.
  13. Cybersource
    respond to you with a
    REFUNDED
    status.
  14. You confirm the refund to the customer.

Transaction Statuses Workflow

This workflow shows the statuses that can occur at each stage of processing a sale and refund.

Figure:

Transaction Statuses Workflow
  1. When a customer begins to check out, you send a sale request to
    Cybersource
    and receive one of these possible statuses:
    • FAILED
      : The sale cannot be completed.
    • PENDING
      : The sale request is accepted but is not completed. Send the check status request to retrieve status updates.
  2. You send a check status request to
    Cybersource
    to verify the sale status and receive one of these statuses:
    • ABANDONED
      : The customer did not complete the payment using the redirect URL.
    • FAILED
      : The sale request failed. A failed request can be due to either a rejection or a technical error.
    • PENDING
      : The sale request is accepted but is not completed. Send the check status request as often as necessary to obtain the information that you need.
    • SETTLED
      : The sale request is settled for the requested amount. When the settled amount is deposited into the merchant's bank account, the status updates to
      FUNDED
      .
  3. If a customer returns a purchase, you send a refund request to
    Cybersource
    and receive one of these possible statuses:
    • FAILED
      : The refund request failed.
    • REFUNDED
      : The refund request is accepted but is not completed. Request the check status service to retrieve status updates.
  4. You send a check status request to
    Cybersource
    to verify the refund status and receive one of these statuses:
    • FAILED
      : The refund could not be completed.
    • REFUNDED
      : The settled amount is successfully refunded.

Process a Sale

This section describes how to send a sale request to process a payment.
A sale request authorizes and captures a payment in the same request. A successful sale response includes an Pluxee redirect URL and a
PENDING
status. Redirect the customer to the Pluxee URL to allow the customer to complete the checkout using their Pluxee account. When the customer completes the checkout, the customer is redirected to your website.
When you receive a successful response, save the sale request ID in the
id
response field to perform a follow-on check status request or refund request.

Calculating the Grand Total

Include the grand total in the request by using the
orderInformation.amountDetails.totalAmount
field.

Endpoints

Production:
POST
https://api.cybersource.com
/pts/v2/payments
Test:
POST
https://apitest.cybersource.com
/pts/v2/payments

Processing a Sale

Follow these steps to successfully process sale.
  1. Send a
    POST
    request to the
    https://apitest.cybersource.com
    /pts/v2/payments
    endpoint and include these required fields:
    clientReferenceInformation.code
    merchantInformation.cancelUrl
    merchantInformation.failureUrl
    merchantInformation.successUrl
    orderInformation.amountDetails.currency
    Set to
    EUR
    .
    orderInformation.amountDetails.totalAmount
    orderInformation.billTo.country
    orderInformation.billTo.email
    orderInformation.billTo.firstName
    orderInformation.billTo.lastName
    paymentInformation.paymentType.method.name
    Set to
    SODEXO
    .
    paymentInformation.paymentType.name
    Set to
    Voucher
    .
    processingInformation.actionList
    Set to
    AP_SALE
    .
  2. You can include these optional fields in the request:
  3. Redirect the customer to the returned URL in the
    merchantInformation.successUrl
    response field.
    "successUrl": "https://www.valid.merchant.redirect.url.from.request.html?actionsuccess"
  4. When the customer completes the checkout using their Pluxee credentials, the customer is redirected to the merchant website based on the URL that you included in the
    merchantInformation.successUrl
    request field.
  5. Save the request ID in the
    id
    field from the sale response. Include the request ID in a check status request to confirm that the payment is complete.
    "id": "7551878413816917004807"

Example: Processing a Sale

Request
{ "clientReferenceInformation": { "code": "123" }, "merchantInformation": { "cancelUrl": "https://www.valid.merchant.redirect.url.from.request.html?actioncancel", "failureUrl": "https://www.valid.merchant.redirect.url.from.request.html?actionfailure", "successUrl": "https://www.valid.merchant.redirect.url.from.request.html?actionsuccess" }, "paymentInformation": { "paymentType": { "method": { "name": "SODEXO" }, "name": "Voucher" } }, "orderInformation": { "billTo": { "firstName": "John", "lastName": "Doe", "country": "FR", "email": "test@test.com" }, "amountDetails": { "totalAmount": "10.00", "currency": "EUR" } }, "processingInformation": { "actionList": [ "AP_SALE" ] } }
Response to a Successful Request
{ "_links": { "void": { "method": "POST", "href": "/pts/v2/payments/7546709037156463304805/voids" }, "billingAgreement": { "method": "POST", "href": "/pts/v2/billing-agreements/7546709037156463304805" }, "self": { "method": "POST", "href": "/pts/v2/payments/7546709037156463304805" }, "refund": { "method": "POST", "href": "/pts/v2/payments/7546709037156463304805/refunds" }, "status": { "method": "POST", "href": "/pts/v2/refresh-payment-status/7546709037156463304805" } }, "clientReferenceInformation": { "code": "123" }, "id": "7546709037156463304805", "message": "Request was processed successfully.", "orderInformation": { "amountDetails": { "totalAmount": "10.00", "currency": "EUR" } }, "processorInformation": { "responseDetails": "00001", "paymentUrl": "https://payment.limonetikqualif.com/PluxeeFrance/Order/PayPage/734260616764", "transactionId": "734260616764", "responseCode": "00001" }, "reconciliationId": "XFZ40E1G1A6G", "status": "PENDING", "submitTimeUtc": "2025-08-08T16:35:04Z" }

Response Statuses for Processing a Sale

Cybersource
responds to your sale request with one of these statuses in the
status
field:
  • FAILED
    : The sale cannot be completed.
  • PENDING
    : The sale request is accepted but is not completed. Send a check status request as often as necessary to obtain the information that you need. For more information, see Check a Transaction Status.

Check a Transaction Status

This section describes how to retrieve the current status of a sale or refund. Send a check status request to know if a pending sale is settled, or to verify that a refund request is refunded. Use the check status request as often as necessary to obtain the information that you need.
The check status request requires the request ID from the sale or refund response. The request ID is in the
id
response field.

Endpoints

Production:
POST
https://api.cybersource.com
/pts/v2/refresh-payment-status/
{id}
Test:
POST
https://apitest.cybersource.com
/pts/v2/refresh-payment-status/
{id}
Set the
{id}
to the request ID of the API service you are retrieving.

Required Fields for Checking a Status

clientReferenceInformation.code
paymentInformation.paymentType.method.name
Set to
SODEXO
.
paymentInformation.paymentType.name
Set to
Voucher
.
processingInformation.actionList
Set to
AP_STATUS
.

Example: Checking a Status

Request
{ "clientReferenceInformation": { "code": "" }, "paymentInformation": { "paymentType": { "method": { "name": "SODEXO" }, "name": "bankTransfer" } }, "processingInformation": { "actionList": "AP_STATUS" } }
Response to a Successful Request
{ "clientReferenceInformation": { "code": "refnum-1234" }, "id": "7546709711836385404806", "processorInformation": { "responseDetails": "00001", "token": "734260616764", "responseCode": "00001" }, "reconciliationId": "XFZ3ZE1G1BCB", "status": "PENDING" }

Response Statuses for Checking a Status

Cybersource
responds to your check status request with one of these statuses in the
status
field:
Check Status Responses for a Sale
  • ABANDONED
    : The customer did not complete the payment using the redirect URL.
  • FAILED
    : The service request failed. A failed request can be due to either Pluxee rejecting the transaction or a technical error.
  • FUNDED
    : The settled amount is funded to the merchant bank account.
  • PENDING
    : The service request is accepted but is not completed. Request the check status service to retrieve status updates.
  • SETTLED
    : The sale request is settled for the requested amount.
Check Status Responses for a Refund
  • FAILED
    : The service request failed. A failed request can be due to either Pluxee rejecting the transaction or a technical error.
  • REFUNDED
    : The settled amount is successfully refunded.

Refund a Payment

This section describes how to refund a payment. You can refund a settled payment for the full amount or a partial amount by sending a refund request. Multiple partial refund requests are also supported, and the total amount of all of the refund requests must be less than the settled amount.
Requesting a refund requires the sale request ID from the sale response. The sale request ID is in the
id
response field.

Endpoints

Production:
POST
https://api.cybersource.com
/pts/v2/payments/
{id}
/refunds
Test:
POST
https://apitest.cybersource.com
/pts/v2/payments/
{id}
/refunds
The
{id}
is the request ID contained in the original transaction request.

Required Fields for Refunding a Payment

clientReferenceInformation.code
orderInformation.amountDetails.currency
Set to
EUR
.
orderInformation.amountDetails.totalAmount
paymentInformation.paymentType.method.name
Set to
SODEXO
.
paymentInformation.paymentType.name
Set to
Voucher
.
processingInformation.actionList
Set to
AP_REFUND
.

Example: Refunding a Payment

Request
{ "clientReferenceInformation": { "code": "refnum-1234" }, "paymentInformation": { "paymentType": { "method": { "name": "SODEXO" }, "name": "Voucher" } }, "processingInformation": { "actionList": "AP_REFUND" }, "orderInformation": { "amountDetails": { "totalAmount": "5.00", "currency": "EUR" } } }
Response to a Successful Request
{ "_links": { "self": { "method": "GET", "href": "/pts/v2/refunds/7546712826736457204806" }, "status": { "method": "POST", "href": "/pts/v2/refresh-payment-status/7546712826736457204806" } }, "clientReferenceInformation": { "code": "refnum-1234" }, "errorInformation": { "reason": "PAYMENT_REFUSED", "message": "Payment Service Error" }, "id": "7546712826736457204806", "processorInformation": { "responseCode": "30200" }, "status": "FAILED" }

Response Statuses for Refunding a Payment

Cybersource
responds to your refund request with one of these statuses in the
status
field:
  • FAILED
    : The refund request failed.
  • REFUNDED
    : The refund request is accepted but is not completed. Send a check status request to verify that the status is refunded. For more information, see Check a Transaction Status.

Przelewy24 Transaction Requests

Przelewy24 (P24) is a payment method offered by the Thunes payment service provider (PSP) that you can offer your customers through
Cybersource
. You can process a payment by sending a sale API request message to
Cybersource
.
Cybersource
sends your request to Thunes. Thunes approves the transaction and sends the request to the processor for settlement. You can also send a refund and check status API request as follow-on requests.

Requirements

You must have a merchant ID and a Thunes API key for each country in which you process transactions. Contact your
Cybersource
account manager for more information.

Supported Country and Currency

This table lists the country, country code, and currency supported by P24.
Supported Country and Currency
Country
Country Code
Currency Code
Poland
PL
PLN

Shipping Policy

You can ship purchased goods when the sale status is
SETTLED
.

P24 by Thunes Payment Workflow

This workflow describes the sequence of events that comprises a successful P24 payment.

Figure:

P24 by Thunes Payment Workflow
  1. The customer begins to checkout on the merchant's website and chooses the P24 payment method.
  2. The merchant sends a sale API request to
    Cybersource
    . For more information, see Process a Sale.
  3. Cybersource
    responds to the merchant with a
    PENDING
    status and a redirect URL.
  4. The merchant redirects the customer to the URL.
  5. The customer completes the checkout using P24 and is redirected to the merchant website.
  6. The merchant sends a check status API request to
    Cybersource
    . For more information, see Check a Request Status.
  7. Cybersource
    responds to the merchant with a
    SETTLED
    status.
  8. The merchant displays a confirmation of the completed payment to the customer.

Transaction Statuses Workflow

This workflow shows the statuses that can occur at each stage of processing a sale and refund.

Figure:

Transaction Statuses Workflow
  1. When a customer begins to check out, you send a sale request to
    Cybersource
    and receive one of these possible statuses:
    • FAILED
      : The sale cannot be completed.
    • PENDING
      : The sale request is accepted but is not completed. Send the check status request to retrieve status updates.
  2. You send a check status request to
    Cybersource
    to verify the sale status and receive one of these statuses:
    • ABANDONED
      : The customer did not complete the payment using the redirect URL.
    • FAILED
      : The sale request failed. A failed request can be due to either a rejection or a technical error.
    • PENDING
      : The sale request is accepted but is not completed. Send the check status request as often as necessary to obtain the information that you need.
    • SETTLED
      : The sale request is settled for the requested amount. When the settled amount is deposited into the merchant's bank account, the status updates to
      FUNDED
      .
  3. If a customer returns a purchase, you send a refund request to
    Cybersource
    and receive one of these possible statuses:
    • FAILED
      : The refund request failed.
    • REFUNDED
      : The refund request is accepted but is not completed. Request the check status service to retrieve status updates.
  4. You send a check status request to
    Cybersource
    to verify the refund status and receive one of these statuses:
    • FAILED
      : The refund could not be completed.
    • REFUNDED
      : The settled amount is successfully refunded.

Process a Sale

Send a sale request to authorize and capture a payment in the same request. A successful sale response includes a redirect URL and a pending status. Redirect the customer to the URL to allow the customer to complete the checkout using P24. When the customer completes the checkout, the customer is redirected to the merchant website using the success-URL provided in the sale request.

Line Items

Line items are included in a request in the
lineItem[]
array.
For more information about how to properly format line items in your request, see Using Line Items.

Tax Amounts

You can include the tax amount for every type of purchased product in the
orderInformation.lineItems[].taxAmount
field when you request the sale service.

Calculating the Grand Total

Include the grand total in the request by using the
orderInformation.amountDetails.totalAmount
field.

Endpoints

Production:
POST
https://api.cybersource.com
/pts/v2/payments
Test:
POST
https://apitest.cybersource.com
/pts/v2/payments

Response Statuses

Cybersource
responds to your sale request with one of these statuses in the
status
field:
Sale Status
  • FAILED
    : The sale cannot be completed.
  • PENDING
    : The sale request is accepted but is not completed. Request the check status service every 60 minutes to retrieve status updates. See Check a Request Status.
When you send a check status request to retrieve an updated sale status, these are the possible responses:
Check Status for a Sale
  • ABANDONED
    : The customer did not complete the payment using the redirect URL.
  • FAILED
    : The sale cannot be completed.
  • FUNDED
    : The settled amount is funded to the merchant bank account.
  • PENDING
    : The sale request is accepted but is not complete. Continue sending the check status request every 60 minutes.
  • SETTLED
    : The sale request is settled for the requested amount. You cannot receive a settled status until the customer has completed checking out.

Processing a Sale

Follow these steps to successfully process sale.
IMPORTANT
You must include all of the listed required fields in your sale request to guarantee the redirect URL will display properly to the customer.
  1. You can include these optional fields in the request:
  2. Redirect the customer to the returned URL in the
    processorInformation.paymentUrl
    response field.
    "successUrl": "https://www.valid.merchant.redirect.url.from.request.html?actionsuccess"
  3. When the customer completes the checkout using their Prz24 credentials, the customer is redirected to the merchant website based on the URL that you included in the
    merchantInformation.successUrl
    field.
  4. Save the request ID in the
    id
    field from the sale response. Include the request ID in a check status request to confirm that the payment is complete.
    "id": "7546689587576406204805"

Example: Processing a Sale

Request
{ "clientReferenceInformation": { "code": "123" }, "merchantInformation": { "cancelUrl": "https://www.valid.merchant.redirect.url.from.request.html?actioncancel", "failureUrl": "https://www.valid.merchant.redirect.url.from.request.html?actionfailure", "successUrl": "https://www.valid.merchant.redirect.url.from.request.html?actionsuccess" }, "paymentInformation": { "paymentType": { "method": { "name": "P24" }, "name": "bankTransfer" } }, "orderInformation": { "billTo": { "firstName": "John", "lastName": "Doe", "country": "PL", "email": "test@test.com" }, "amountDetails": { "totalAmount": "600.00", "currency": "PLN" } }, "processingInformation": { "actionList": [ "AP_SALE" ] } }
Response to a Successful Request
{ "_links": { "void": { "method": "POST", "href": "/pts/v2/payments/7546689587576406204805/voids" }, "billingAgreement": { "method": "POST", "href": "/pts/v2/billing-agreements/7546689587576406204805" }, "self": { "method": "POST", "href": "/pts/v2/payments/7546689587576406204805" }, "refund": { "method": "POST", "href": "/pts/v2/payments/7546689587576406204805/refunds" }, "status": { "method": "POST", "href": "/pts/v2/refresh-payment-status/7546689587576406204805" } }, "clientReferenceInformation": { "code": "123" }, "id": "7546689587576406204805", "message": "Request was processed successfully.", "orderInformation": { "amountDetails": { "totalAmount": "600.00", "currency": "PLN" } }, "processorInformation": { "responseDetails": "00001", "paymentUrl": "https://payment.limonetikqualif.com/P24/Order/PayPage/896435173864", "transactionId": "896435173864", "responseCode": "00001" }, "reconciliationId": "XFZ3ZE1G1ABL", "status": "PENDING", "submitTimeUtc": "2025-08-08T16:02:39Z" }

Check a Request Status

You can retrieve the status of a pending sale or refund by sending a check status request.
When a pending status updates, a check status response includes the transaction's new status. Thunes sometimes needs to review a service request, which causes a transaction to initially respond with a pending status. The check status request requires you to include the request ID from the pending transaction response you are checking the status of. The request ID is located in the
id
response field.
Cybersource
recommends that you send a check status request hourly until the status updates from pending.

Endpoints

Production:
POST
https://api.cybersource.com
/pts/v2/refresh-payment-status/
{id}
Test:
POST
https://apitest.cybersource.com
/pts/v2/refresh-payment-status/
{id}
Set the
{id}
to the request ID of the API service you are retrieving.

Response Statuses

Cybersource
responds to your check status request with one of these statuses in the
status
field:
Check Status Responses for a Sale
  • ABANDONED
    : The customer did not complete the payment using the redirect URL.
  • FAILED
    : The service request failed. A failed request can be due to either P24 rejecting the transaction or a technical error.
  • FUNDED
    : The settled amount is funded to the merchant bank account.
  • PENDING
    : The service request is accepted but is not completed. Request the check status service to retrieve status updates.
  • SETTLED
    : The sale request is settled for the requested amount.
Check Status Responses for a Refund
  • FAILED
    : The service request failed. A failed request can be due to either P24 rejecting the transaction or a technical error.
  • REFUNDED
    : The settled amount is successfully refunded.

Example: Checking a Request Status

Request
{ "clientReferenceInformation": { "code": "refnum-1234" }, "paymentInformation": { "paymentType": { "method": { "name": "P24" }, "name": "bankTransfer" } }, "processingInformation": { "actionList": "AP_STATUS" } }
Response to a Successful Request
{ "clientReferenceInformation": { "code": "refnum-1234" }, "id": "7546690291866465104805", "processorInformation": { "responseDetails": "00004", "token": "896435173864", "responseCode": "00004" }, "reconciliationId": "XFZ40E1G19AF", "status": "SETTLED" }

Refund a Payment

You can refund a completed payment for the full amount or a partial amount by sending a refund request. P24 supports multiple refund requests when the total amount of all of the refund requests is less than the captured amount.
Requesting a refund requires the request ID from the sale response. The request ID is located in the response field.

Endpoints

Production:
POST
https://api.cybersource.com
/pts/v2/payments/
{id}
/refunds
Test:
POST
https://apitest.cybersource.com
/pts/v2/payments/
{id}
/refunds
The
{id}
is the request ID contained in the original transaction request.

Response Statuses

Cybersource
responds to your refund request with one of these statuses as the
status
field value:
  • FAILED
    : The refund request failed.
  • REFUNDED
    : The refund request is accepted but is not completed. Request the check status service to retrieve status updates. For more information, see Check a Request Status.
When you send a check status request to retrieve an updated refund status, these are the possible responses:
  • FAILED
    : The refund request failed.
  • REFUNDED
    : The settled payment is successfully refunded.

Example: Refunding a Payment

Request
{ "clientReferenceInformation": { "code": "refnum-1234" }, "paymentInformation": { "paymentType": { "method": { "name": "P24" }, "name": "bankTransfer" } }, "processingInformation": { "actionList": "AP_REFUND" }, "orderInformation": { "amountDetails": { "totalAmount": "60.00", "currency": "PLN" } } }
Response to a Successful Request
{ "_links": { "self": { "method": "GET", "href": "/pts/v2/refunds/7546693022266551304805" }, "status": { "method": "POST", "href": "/pts/v2/refresh-payment-status/7546693022266551304805" } }, "clientReferenceInformation": { "code": "refnum-1234" }, "id": "7546693022266551304805", "processorInformation": { "responseCode": "00006" }, "status": "REFUNDED" }

ShopeePay Transaction Requests

ShopeePay is a payment method offered by the Thunes payment service provider (PSP) that you can offer your customers through
Cybersource
. You can process a payment by sending a sale API request message to
Cybersource
.
Cybersource
sends your request to Thunes. Thunes approves the transaction and sends the request to the processor for settlement. You can also send a refund and check status API request as follow-on services.

Requirements

You must have a merchant ID and a Thunes API key for each country in which you process transactions. Contact your
Cybersource
account manager for more information.

Supported Currencies

This table lists the currencies supported by ShopeePay.
Supported Currencies and Currency Codes
Currency
Currency Code
IDR
Indonesian rupiah
MYR
Malaysian ringgit
PHP
Philippine peso

Shipping Policy

You can ship purchased goods when the sale status is
SETTLED
.

ShopeePay by Thunes Payment Workflow

This workflow describes the sequence of events that comprises a successful ShopeePay payment.

Figure:

ShopeePay by Thunes Payment Workflow
  1. The customer begins to checkout on the merchant's website and chooses the ShopeePay payment method.
  2. The merchant sends a sale API request to
    Cybersource
    . For more information, see Process a Sale.
  3. Cybersource
    responds to the merchant with a
    PENDING
    status and a redirect URL.
  4. The merchant redirects the customer to the URL.
  5. The customer completes the checkout using ShopeePay and is redirected to the merchant website.
  6. The merchant sends a check status API request to
    Cybersource
    . For more information, see Check a Request Status.
  7. Cybersource
    responds to the merchant with a
    SETTLED
    status.
  8. The merchant displays a confirmation of the completed payment to the customer.

Transaction Statuses Workflow

This workflow shows the statuses that can occur at each stage of processing a sale and refund.

Figure:

Transaction Statuses Workflow
  1. When a customer begins to check out, you send a sale request to
    Cybersource
    and receive one of these possible statuses:
    • FAILED
      : The sale cannot be completed.
    • PENDING
      : The sale request is accepted but is not completed. Send the check status request to retrieve status updates.
  2. You send a check status request to
    Cybersource
    to verify the sale status and receive one of these statuses:
    • ABANDONED
      : The customer did not complete the payment using the redirect URL.
    • FAILED
      : The sale request failed. A failed request can be due to either a rejection or a technical error.
    • PENDING
      : The sale request is accepted but is not completed. Send the check status request as often as necessary to obtain the information that you need.
    • SETTLED
      : The sale request is settled for the requested amount. When the settled amount is deposited into the merchant's bank account, the status updates to
      FUNDED
      .
  3. If a customer returns a purchase, you send a refund request to
    Cybersource
    and receive one of these possible statuses:
    • FAILED
      : The refund request failed.
    • REFUNDED
      : The refund request is accepted but is not completed. Request the check status service to retrieve status updates.
  4. You send a check status request to
    Cybersource
    to verify the refund status and receive one of these statuses:
    • FAILED
      : The refund could not be completed.
    • REFUNDED
      : The settled amount is successfully refunded.

Process a Sale

Send a sale request to authorize and capture a payment in the same request. A successful sale response includes a redirect URL and a pending status. Redirect the customer to the URL to allow the customer to complete the checkout using ShopeePay. When the customer completes the checkout, the customer is redirected to the merchant website using the success-URL provided in the sale request.

Line Items

Line items are included in a request in the
lineItem[]
array.
For more information about how to properly format line items in your request, see Using Line Items.

Tax Amounts

You can include the tax amount for every type of purchased product in the
orderInformation.lineItems[].taxAmount
field when you request the sale service.

Calculating the Grand Total

Include the grand total in the request by using the
orderInformation.amountDetails.totalAmount
field.

Response Statuses

Cybersource
responds to your sale request with one of these statuses in the
status
field:
Sale Status
When you send a check status request to retrieve an updated sale status, these are the possible responses:
Check Status for a Sale
  • ABANDONED
    : The customer did not complete the payment using the redirect URL.
  • FAILED
    : The sale cannot be completed.
  • FUNDED
    : The settled amount is funded to the merchant bank account.
  • PENDING
    : The sale request is accepted but is not complete. Continue sending the check status request every 60 minutes.
  • SETTLED
    : The sale request is settled for the requested amount. You cannot receive a settled status until the customer has completed checking out.

Processing a Sale

Follow these steps to successfully process sale.
IMPORTANT
You must include all of the listed required fields in your sale request to guarantee the redirect URL will display properly to the customer.
  1. You can include these optional fields in the request:
  2. Redirect the customer to the returned URL in the
    processorInformation.paymentUrl
    response field.
    "paymentUrl": "https://payment.limonetik.com/Razer/Order/PayPage/614898130710"
  3. When the customer completes the checkout using their ShopeePay credentials, the customer is redirected to the merchant website based on the URL that you included in the
    merchantInformation.successUrl
    field.
  4. Save the request ID in the
    id
    field from the sale response. Include the request ID in a check status request to confirm that the payment is complete.
    "id": "7551867752176984004896"

Example: Processing a Sale

Request
{ "clientReferenceInformation": { "code": "123" }, "merchantInformation": { "cancelUrl": "https://www.valid.merchant.redirect.url.from.request.html?actioncancel", "failureUrl": "https://www.valid.merchant.redirect.url.from.request.html?actionfailure", "successUrl": "https://www.valid.merchant.redirect.url.from.request.html?actionsuccess" }, "paymentInformation": { "paymentType": { "method": { "name": "SHOPEEPAY" }, "name": "eWallet" } }, "orderInformation": { "billTo": { "firstName": "John", "lastName": "Doe", "address1": "1 Market St", "country": "MY", "email": "test@test.com", "phoneNumber": "33623456789" }, "amountDetails": { "totalAmount": "600.00", "currency": "MYR" } }, "processingInformation": { "actionList": [ "AP_SALE" ] } }
Response to a Successful Request
{ "_links": { "void": { "method": "POST", "href": "/pts/v2/payments/7551867752176984004896/voids" }, "billingAgreement": { "method": "POST", "href": "/pts/v2/billing-agreements/7551867752176984004896" }, "self": { "method": "POST", "href": "/pts/v2/payments/7551867752176984004896" }, "refund": { "method": "POST", "href": "/pts/v2/payments/7551867752176984004896/refunds" }, "status": { "method": "POST", "href": "/pts/v2/refresh-payment-status/7551867752176984004896" } }, "clientReferenceInformation": { "code": "123" }, "id": "7551867752176984004896", "message": "Request was processed successfully.", "orderInformation": { "amountDetails": { "totalAmount": "600.00", "currency": "MYR" } }, "processorInformation": { "responseDetails": "00001", "paymentUrl": "https://payment.limonetik.com/Razer/Order/PayPage/614898130710", "transactionId": "614898130710", "responseCode": "00001" }, "reconciliationId": "XEKVLDYDE4BN", "status": "PENDING", "submitTimeUtc": "2025-08-14T15:52:56Z" }

Check a Request Status

You can retrieve the status of a pending sale or refund by sending a check status request.
When a pending status updates, a check status response includes the transaction's new status. Thunes sometimes needs to review a service request, which causes a transaction to initially respond with a pending status. The check status request requires you to include the request ID from the pending transaction response you are checking the status of. The request ID is located in the
id
response field.
Cybersource
recommends that you send a check status request hourly until the status updates from pending.

Response Statuses

Cybersource
responds to your check status request with one of these statuses in the
status
field:
Check Status Responses for a Sale
  • ABANDONED
    : The customer did not complete the payment using the redirect URL.
  • FAILED
    : The service request failed. A failed request can be due to either ShopeePay rejecting the transaction or a technical error.
  • FUNDED
    : The settled amount is funded to the merchant bank account.
  • PENDING
    : The service request is accepted but is not completed. Request the check status service to retrieve status updates.
  • SETTLED
    : The sale request is settled for the requested amount.
Check Status Responses for a Refund
  • FAILED
    : The service request failed. A failed request can be due to either ShopeePay rejecting the transaction or a technical error.
  • REFUNDED
    : The settled amount is successfully refunded.

Example: Checking a Request Status

Request
{ "clientReferenceInformation": { "code": "refnum-1234" }, "paymentInformation": { "paymentType": { "method": { "name": "SHOPEEPAY" }, "name": "eWallet" } }, "processingInformation": { "actionList": "AP_STATUS" } }
Response to a Successful Request
{ "clientReferenceInformation": { "code": "refnum-1234" }, "id": "7551864268166401504883", "processorInformation": { "responseDetails": "00001", "token": "945165815864", "responseCode": "00001" }, "reconciliationId": "XEL3SE9I5TN6", "status": "PENDING" }

Refund a Payment

You can refund a completed payment for the full amount or a partial amount by sending a refund request. ShopeePay supports multiple refund requests when the total amount of all of the refund requests is less than the captured amount.
Requesting a refund requires the request ID from the sale response. The request ID is located in the
id
response field.

Endpoints

Production:
POST
https://api.cybersource.com
/pts/v2/payments/
{id}
/refunds
Test:
POST
https://apitest.cybersource.com
/pts/v2/payments/
{id}
/refunds
The
{id}
is the request ID contained in the original transaction request.

Response Statuses

Cybersource
responds to your refund request with one of these statuses as the
status
field value:
  • FAILED
    : The refund request failed.
  • REFUNDED
    : The refund request is accepted but is not completed. Request the check status service to retrieve status updates. For more information, see Refund a Payment.
When you send a check status request to retrieve an updated refund status, these are the possible responses:
  • FAILED
    : The refund request failed.
  • REFUNDED
    : The settled payment is successfully refunded.

Example: Refunding a Payment

Request
{ "clientReferenceInformation": { "code": "refnum-1234" }, "paymentInformation": { "paymentType": { "method": { "name": "SHOPEEPAY" }, "name": "eWallet" } }, "processingInformation": { "actionList": "AP_REFUND" }, "orderInformation": { "amountDetails": { "totalAmount": "5.00", "currency": "MYR" } } }
Response to a Successful Request
{ "_links": { "self": { "method": "GET", "href": "/pts/v2/refunds/7551868761676372704895" }, "status": { "method": "POST", "href": "/pts/v2/refresh-payment-status/7551868761676372704895" } }, "id": "7551868761676372704895", "orderInformation": { "amountDetails": { "currency": "MYR" } }, "clientReferenceInformation": { "code": "refnum-1234" }, "processorInformation": { "responseDetails": "00006", "transactionId": "430844862998", "responseCode": "00006" }, "reconciliationId": "XFZ3ZE1G1DID", "refundAmountDetails": { "refundAmount": "5.00" }, "status": "REFUNDED", "submitTimeUtc": "2025-08-12T18:14:18Z" }

Turkey Card Processing Transaction Requests

Turkey card processing is a payment method offered by the Thunes payment service provider (PSP) that you can offer your customers through
Cybersource
. To process a payment, send a sale API request message to
Cybersource
.
Cybersource
sends the request to Thunes. Thunes approves the transaction and sends the request to the processor for settlement. You can also send a refund and check status API request as follow-on requests.

Requirements

You must have a merchant ID and a Thunes API key for each country in which you process transactions. Contact your
Cybersource
account manager for more information.

Supported Country and Currency

This table lists the country, country code, and currency supported by Turkey credit card processing.
Supported Country and Currency
Country
Country Code
Currency Code
Supported Card Types
Turkey
TR
TRY
  • Mastercard
  • Troy
  • Visa

Shipping Policy

You can ship purchased goods when the sale status is
SETTLED
.

Turkey Card Processing by Thunes Payment Workflow

This workflow illustrates the process of a Turkey local card payment.

Figure:

Turkey credit card processing by Thunes Payment Workflow
Turkey card by Thunes Payment Workflow
  1. The customer begins to checkout on the merchant's website and chooses to pay with their credit or debit card.
  2. The merchant sends a sale API request to
    Cybersource
    . For more information, see Process a Sale.
  3. Cybersource
    responds to the merchant with a
    PENDING
    status and a redirect URL.
  4. The merchant redirects the customer to the URL.
  5. The customer completes the checkout using their credit or debit card and is redirected to the merchant website.
  6. The merchant sends a check status API request to
    Cybersource
    . For more information, see Check a Request Status.
  7. Cybersource
    responds to the merchant with a
    SETTLED
    status.
  8. The merchant displays a confirmation of the completed payment to the customer.

Transaction Statuses Workflow

This workflow shows the statuses that can occur at each stage of processing a sale and refund.

Figure:

Transaction Statuses Workflow
  1. When a customer begins to check out, you send a sale request to
    Cybersource
    and receive one of these possible statuses:
    • FAILED
      : The sale cannot be completed.
    • PENDING
      : The sale request is accepted but is not completed. Send the check status request to retrieve status updates.
  2. You send a check status request to
    Cybersource
    to verify the sale status and receive one of these statuses:
    • ABANDONED
      : The customer did not complete the payment using the redirect URL.
    • FAILED
      : The sale request failed. A failed request can be due to either a rejection or a technical error.
    • PENDING
      : The sale request is accepted but is not completed. Send the check status request as often as necessary to obtain the information that you need.
    • SETTLED
      : The sale request is settled for the requested amount. When the settled amount is deposited into the merchant's bank account, the status updates to
      FUNDED
      .
  3. If a customer returns a purchase, you send a refund request to
    Cybersource
    and receive one of these possible statuses:
    • FAILED
      : The refund request failed.
    • REFUNDED
      : The refund request is accepted but is not completed. Request the check status service to retrieve status updates.
  4. You send a check status request to
    Cybersource
    to verify the refund status and receive one of these statuses:
    • FAILED
      : The refund could not be completed.
    • REFUNDED
      : The settled amount is successfully refunded.

Process a Sale

Send a sale request to authorize and capture a payment in the same request. A successful sale response includes a redirect URL and a pending status. Redirect the customer to the URL to allow the customer to complete the checkout using Turkey credit card processing. When the customer completes the checkout, the customer is redirected to the merchant website using the success-URL provided in the sale request.

Line Items

Line items are included in a request in the
lineItem[]
array.

Tax Amounts

You can include the tax amount for every type of purchased product in the
orderInformation.lineItems[].taxAmount
field when you request the sale service.

Calculating the Grand Total

Include the grand total in the request by using the
orderInformation.amountDetails.totalAmount
field.

Endpoints

Production:
POST
https://api.cybersource.com
/pts/v2/payments
Test:
POST
https://apitest.cybersource.com
/pts/v2/payments

Response Statuses

Cybersource
responds to your sale request with one of these statuses in the
status
field:
Sale Status
  • FAILED
    : The sale cannot be completed.
  • PENDING
    : The sale request is accepted but is not completed. Request the check status service every 60 minutes to retrieve status updates. See Process a Sale.
When you send a check status request to retrieve an updated sale status, these are the possible responses:
Check Status for a Sale
  • ABANDONED
    : The customer did not complete the payment using the redirect URL.
  • FAILED
    : The sale cannot be completed.
  • FUNDED
    : The settled amount is funded to the merchant bank account.
  • PENDING
    : The sale request is accepted but is not complete. Continue sending the check status request every 60 minutes.
  • SETTLED
    : The sale request is settled for the requested amount. You cannot receive a settled status until the customer has completed checking out.

Processing a Sale

Follow these steps to successfully process sale.
  1. You can include these optional fields in the request:
    merchantDefinedInformation[].key
    merchantInformation.merchantDescriptor
    orderInformation.billTo.address1
    orderInformation.billTo.address2
    orderInformation.billTo.administrativeArea
    orderInformation.billTo.email
    orderInformation.billTo.locality
    orderInformation.billTo.phoneNumber
    orderInformation.billTo.postalCode
    orderInformation.lineItems[].productCode
    orderInformation.lineItems[].productName
    orderInformation.lineItems[].productSku
    orderInformation.lineItems[].quantity
    orderInformation.lineItems[].taxAmount
    orderInformation.lineItems[].totalAmount
    orderInformation.lineItems[].unitPrice
  2. Redirect the customer to the returned URL in the
    merchantInformation.successUrl
    response field.
    "successUrl": "https://www.valid.merchant.redirect.url.from.request.html?actionsuccess"
  3. When the customer completes the checkout using their card credentials, the customer is redirected to the merchant website based on the URL that you included in the
    merchantInformation.successUrl
    field.
  4. Save the request ID in the
    id
    field from the sale response. Include the request ID in a check status request to confirm that the payment is complete.
    "id": "7546675945716557504805",

Example: Processing a Sale

Request
{ "clientReferenceInformation": { "code": "123" }, "merchantInformation": { "cancelUrl": "https://www.valid.merchant.redirect.url.from.request.html?actioncancel", "failureUrl": "https://www.valid.merchant.redirect.url.from.request.html?actionfailure", "successUrl": "https://www.valid.merchant.redirect.url.from.request.html?actionsuccess" }, "paymentInformation": { "paymentType": { "method": { "name": "TURKEYCARDS" }, "name": "localCard" } }, "orderInformation": { "amountDetails": { "currency": "TRY", "totalAmount": "220.00" } }, "processingInformation" : { "actionList" : [ "AP_SALE" ] } }
Response to a Successful Request
{ "_links": { "void": { "method": "POST", "href": "/pts/v2/payments/7546675945716557504805/voids" }, "billingAgreement": { "method": "POST", "href": "/pts/v2/billing-agreements/7546675945716557504805" }, "self": { "method": "POST", "href": "/pts/v2/payments/7546675945716557504805" }, "refund": { "method": "POST", "href": "/pts/v2/payments/7546675945716557504805/refunds" }, "status": { "method": "POST", "href": "/pts/v2/refresh-payment-status/7546675945716557504805" } }, "clientReferenceInformation": { "code": "123" }, "id": "7546675945716557504805", "message": "Request was processed successfully.", "orderInformation": { "amountDetails": { "totalAmount": "220.00", "currency": "TRY" } }, "processorInformation": { "responseDetails": "00001", "paymentUrl": "https://payment.limonetikqualif.com/GenericCreditCard/Order/PayPage/944772931372, "transactionId": "944772931372", "responseCode": "00001" }, "reconciliationId": "XFZ40E1G18JF", "status": "PENDING", "submitTimeUtc": "2025-08-08T15:39:55Z" }

Check a Request Status

You can retrieve the status of a pending sale or refund by sending a check status request.
When a pending status updates, a check status response includes the transaction's new status. Thunes sometimes needs to review a service request, which causes a transaction to initially respond with a pending status. The check status request requires you to include the request ID from the pending transaction response you are checking the status of. The request ID is located in the
id
response field.
Cybersource
recommends that you send a check status request hourly until the status updates from pending.

Endpoints

Production:
POST
https://api.cybersource.com
/pts/v2/refresh-payment-status/
{id}
Test:
POST
https://apitest.cybersource.com
/pts/v2/refresh-payment-status/
{id}
Set the
{id}
to the request ID of the API service you are retrieving.

Response Statuses

Cybersource
responds to your check status request with one of these statuses in the
status
field:
Check Status Responses for a Sale
  • ABANDONED
    : The customer did not complete the payment using the redirect URL.
  • FAILED
    : The service request failed. A failed request can be due to either Turkey credit card processing rejecting the transaction or a technical error.
  • FUNDED
    : The settled amount is funded to the merchant bank account.
  • PENDING
    : The service request is accepted but is not completed. Request the check status service to retrieve status updates.
  • SETTLED
    : The sale request is settled for the requested amount.
Check Status Responses for a Refund
  • FAILED
    : The service request failed. A failed request can be due to either Turkey credit card processing rejecting the transaction or a technical error.
  • REFUNDED
    : The settled amount is successfully refunded.

Example: Checking a Request Status

Request
{ "clientReferenceInformation": { "code": "refnum-1234" }, "paymentInformation": { "paymentType": { "method": { "name": "TURKEYCARDS" }, "name": "localCard" } }, "processingInformation": { "actionList": "AP_STATUS" } }
Response to a Successful Request
{ "clientReferenceInformation": { "code": "refnum-1234" }, "id": "7546677566956817204807", "processorInformation": { "responseDetails": "00004", "token": "944772931372", "responseCode": "00004" }, "reconciliationId": "XFZ3ZE1G19PT", "status": "SETTLED" }

Refund a Payment

You can refund a completed payment for the full amount or a partial amount by sending a refund request. Turkey card processing supports multiple refund requests when the total amount of all of the refund requests is less than the captured amount.
Requesting a refund requires the request ID from the sale response. The request ID is located in the
id
response field.

Endpoints

Production:
POST
https://api.cybersource.com
/pts/v2/payments/
{id}
/refunds
Test:
POST
https://apitest.cybersource.com
/pts/v2/payments/
{id}
/refunds
The
{id}
is the request ID contained in the original transaction request.

Response Statuses

Cybersource
responds to your refund request with one of these statuses as the
status
field value:
  • FAILED
    : The refund request failed.
  • REFUNDED
    : The refund request is accepted but is not completed. Request the check status service to retrieve status updates. For more information, see Check a Request Status.
When you send a check status request to retrieve an updated refund status, these are the possible responses:
  • FAILED
    : The refund request failed.
  • REFUNDED
    : The settled payment is successfully refunded.

Example: Refunding a Payment

Request
{ "clientReferenceInformation": { "code": "refnum-1234" }, "paymentInformation": { "paymentType": { "name": "localCard", "method": { "name": "TURKEYCARDS" } } }, "processingInformation": { "actionList": "AP_REFUND" }, "orderInformation": { "amountDetails": { "totalAmount": "10.00", "currency": "TRY" } } }
Response to a Successful Request
{ "_links": { "self": { "method": "GET", "href": "/pts/v2/refunds/7546680552276902104807" }, "status": { "method": "POST", "href": "/pts/v2/refresh-payment-status/7546680552276902104807" } }, "clientReferenceInformation": { "code": "refnum-1234", "returnReconciliationId": "R015AE1TJE8I" }, "id": "7546680552276902104807", "orderInformation": { "amountDetails": { "currency": "TRY" } }, "processorInformation": { "responseDetails": "00006", "transactionId": "944772931372", "responseCode": "00006" }, "reconciliationId": "XFZ40E1G18JF", "refundAmountDetails": { "refundAmount": "10.00" }, "status": "REFUNDED", "submitTimeUtc": "2025-08-08T15:47:37Z" }

Twint Transaction Requests

Twint is a payment method offered by the Thunes payment service provider (PSP) that you can offer your customers through
Cybersource
. You can process a payment by sending a sale API request message to
Cybersource
.
Cybersource
sends your request to Thunes. Thunes approves the transaction and sends the request to the processor for settlement. You can also send a refund and check status API request as follow-on requests.

Requirements

You must have a merchant ID and a Thunes API key for each country in which you process transactions. Contact your
Cybersource
account manager for more information.

Supported Country and Currency

This table lists the country, country code, and currency supported by Twint.
Supported Country and Currency
Country
Country Code
Currency Code
Switzerland
CH
CHF

Shipping Policy

Goods can be shipped when the sale status is
SETTLED
.

Twint by Thunes Payment Workflow

This workflow describes the sequence of events that comprises a successful Twint payment.

Figure:

Twint by Thunes Payment Workflow
MB Way by Thunes Payment Workflow
  1. The customer begins to checkout on the merchant's website and chooses the Twint payment method.
  2. The merchant sends a sale API request to
    Cybersource
    . For more information, see Process a Sale.
  3. Cybersource
    responds to the merchant with a
    PENDING
    status and a redirect URL.
  4. The merchant redirects the customer to the URL.
  5. The customer completes the checkout using Twint and is redirected to the merchant website.
  6. The merchant sends a check status API request to
    Cybersource
    . For more information, see Check a Request Status.
  7. Cybersource
    responds to the merchant with a
    SETTLED
    status.
  8. The merchant displays a confirmation of the completed payment to the customer.

Transaction Statuses Workflow

This workflow shows the statuses that can occur at each stage of processing a sale and refund.

Figure:

Transaction Statuses Workflow
  1. When a customer begins to check out, you send a sale request to
    Cybersource
    and receive one of these possible statuses:
    • FAILED
      : The sale cannot be completed.
    • PENDING
      : The sale request is accepted but is not completed. Send the check status request to retrieve status updates.
  2. You send a check status request to
    Cybersource
    to verify the sale status and receive one of these statuses:
    • ABANDONED
      : The customer did not complete the payment using the redirect URL.
    • FAILED
      : The sale request failed. A failed request can be due to either a rejection or a technical error.
    • PENDING
      : The sale request is accepted but is not completed. Send the check status request as often as necessary to obtain the information that you need.
    • SETTLED
      : The sale request is settled for the requested amount. When the settled amount is deposited into the merchant's bank account, the status updates to
      FUNDED
      .
  3. If a customer returns a purchase, you send a refund request to
    Cybersource
    and receive one of these possible statuses:
    • FAILED
      : The refund request failed.
    • REFUNDED
      : The refund request is accepted but is not completed. Request the check status service to retrieve status updates.
  4. You send a check status request to
    Cybersource
    to verify the refund status and receive one of these statuses:
    • FAILED
      : The refund could not be completed.
    • REFUNDED
      : The settled amount is successfully refunded.

Process a Sale

Send a sale request to authorize and capture a payment in the same request. A successful sale response includes a redirect URL and a pending status. Redirect the customer to the URL to allow the customer to complete the checkout using Twint. When the customer completes the checkout, the customer is redirected to the merchant website using the success-URL provided in the sale request.

Line Items

Line items are included in a request in the
lineItem[]
array.
For more information about how to properly format line items in your request, see Using Line Items.

Tax Amounts

You can include the tax amount for every type of purchased product in the
orderInformation.lineItems[].taxAmount
field when you request the sale service.

Calculating the Grand Total

Include the grand total in the request by using the
orderInformation.amountDetails.totalAmount
field.

Endpoints

Production:
POST
https://api.cybersource.com
/pts/v2/payments
Test:
POST
https://apitest.cybersource.com
/pts/v2/payments

Response Statuses

Cybersource
responds to your sale request with one of these statuses in the
status
field:
Sale Status
  • FAILED
    : The sale cannot be completed.
  • PENDING
    : The sale request is accepted but is not completed. Request the check status service every 60 minutes to retrieve status updates. See Check a Request Status.
When you send a check status request to retrieve an updated sale status, these are the possible responses:
Check Status for a Sale
  • ABANDONED
    : The customer did not complete the payment using the redirect URL.
  • FAILED
    : The sale cannot be completed.
  • FUNDED
    : The settled amount is funded to the merchant bank account.
  • PENDING
    : The sale request is accepted but is not complete. Continue sending the check status request every 60 minutes.
  • SETTLED
    : The sale request is settled for the requested amount. You cannot receive a settled status until the customer has completed checking out.

Processing a Sale

Follow these steps to successfully process sale.
  1. Send a
    POST
    request to the
    https://api.cybersource.com
    /pts/v2/payments
    endpoint and include these required fields:
  2. You can include these optional fields in the request:
    merchantDefinedInformation[].key
    merchantInformation.merchantDescriptor
    orderInformation.billTo.address1
    orderInformation.billTo.address2
    orderInformation.billTo.administrativeArea
    orderInformation.billTo.email
    orderInformation.billTo.locality
    orderInformation.billTo.phoneNumber
    orderInformation.billTo.postalCode
    orderInformation.lineItems[].productCode
    orderInformation.lineItems[].productName
    orderInformation.lineItems[].productSku
    orderInformation.lineItems[].quantity
    orderInformation.lineItems[].taxAmount
    orderInformation.lineItems[].totalAmount
    orderInformation.lineItems[].unitPrice
  3. Redirect the customer to the returned URL in the
    merchantInformation.successUrl
    response field.
    "successUrl": "https://www.valid.merchant.redirect.url.from.request.html?actionsuccess"
  4. When the customer completes the checkout using their Twint credentials, the customer is redirected to the merchant website based on the URL that you included in the
    merchantInformation.successUrl
    field.
  5. Save the request ID in the
    id
    field from the sale response. Include the request ID in a check status request to confirm that the payment is complete.
    "id": "7546697089506643204805"

Example: Processing a Sale

Request
{ "clientReferenceInformation": { "code": "123" }, "merchantInformation": { "cancelUrl": "https://www.valid.merchant.redirect.url.from.request.html?actioncancel", "failureUrl": "https://www.valid.merchant.redirect.url.from.request.html?actionfailure", "successUrl": "https://www.valid.merchant.redirect.url.from.request.html?actionsuccess" }, "paymentInformation": { "paymentType": { "method": { "name": "TWINT" }, "name": "eWallet" } }, "orderInformation": { "billTo": { "firstName": "John", "lastName": "Doe", "country": "CH", "email": "test@test.com" }, "amountDetails": { "currency": "CHF", "totalAmount": "220.00" } }, "processingInformation": { "actionList": [ "AP_SALE" ] } }
Response to a Successful Request
{ "_links": { "void": { "method": "POST", "href": "/pts/v2/payments/7546697089506643204805/voids" }, "billingAgreement": { "method": "POST", "href": "/pts/v2/billing-agreements/7546697089506643204805" }, "self": { "method": "POST", "href": "/pts/v2/payments/7546697089506643204805" }, "refund": { "method": "POST", "href": "/pts/v2/payments/7546697089506643204805/refunds" }, "status": { "method": "POST", "href": "/pts/v2/refresh-payment-status/7546697089506643204805" } }, "clientReferenceInformation": { "code": "123" }, "id": "7546697089506643204805", "message": "Request was processed successfully.", "orderInformation": { "amountDetails": { "totalAmount": "220.00", "currency": "CHF" } }, "processorInformation": { "responseDetails": "00001", "paymentUrl": "https://payment.limonetikqualif.com/Six/Order/PayPage/705811299014", "transactionId": "705811299014", "responseCode": "00001" }, "reconciliationId": "XFZ3ZE1G1AMM", "status": "PENDING", "submitTimeUtc": "2025-08-08T16:15:10Z" }

Check a Request Status

You can retrieve the status of a pending sale or refund by sending a check status request.
When a pending status updates, a check status response includes the transaction's new status. Thunes sometimes needs to review a service request, which causes a transaction to initially respond with a pending status. The check status request requires you to include the request ID from the pending transaction response you are checking the status of. The request ID is located in the
id
response field.
Cybersource
recommends that you send a check status request hourly until the status updates from pending.

Endpoints

Production:
POST
https://api.cybersource.com
/pts/v2/refresh-payment-status/
{id}
Test:
POST
https://apitest.cybersource.com
/pts/v2/refresh-payment-status/
{id}
Set the
{id}
to the request ID of the API service you are retrieving.

Response Statuses

Cybersource
responds to your check status request with one of these statuses in the
status
field:
Check Status Responses for a Sale
  • ABANDONED
    : The customer did not complete the payment using the redirect URL.
  • FAILED
    : The service request failed. A failed request can be due to either Twint rejecting the transaction or a technical error.
  • FUNDED
    : The settled amount is funded to the merchant bank account.
  • PENDING
    : The service request is accepted but is not completed. Request the check status service to retrieve status updates.
  • SETTLED
    : The sale request is settled for the requested amount.
Check Status Responses for a Refund
  • FAILED
    : The service request failed. A failed request can be due to either Twint rejecting the transaction or a technical error.
  • REFUNDED
    : The settled amount is successfully refunded.

Example: Checking a Request Status

Request
{ "clientReferenceInformation": { "code": "refnum-1234" }, "paymentInformation": { "paymentType": { "method": { "name": "TWINT" }, "name": "eWallet" } }, "processingInformation": { "actionList": "AP_STATUS" } }
Response to a Successful Request
{ "clientReferenceInformation": { "code": "refnum-1234" }, "id": "7546697971406661704805", "processorInformation": { "responseDetails": "00001", "token": "705811299014", "responseCode": "00001" }, "reconciliationId": "XFZ40E1G19P5", "status": "PENDING" }

Refund a Payment

You can refund a completed payment for the full amount or a partial amount by sending a refund request. Twint supports multiple refund requests when the total amount of all of the refund requests is less than the captured amount.
Requesting a refund requires the request ID from the sale response. The request ID is located in the
id
response field.

Endpoints

Production:
POST
https://api.cybersource.com
/pts/v2/payments/
{id}
/refunds
Test:
POST
https://apitest.cybersource.com
/pts/v2/payments/
{id}
/refunds
The
{id}
is the request ID contained in the original transaction request.

Response Statuses

Cybersource
responds to your refund request with one of these statuses as the
status
field value:
  • FAILED
    : The refund request failed.
  • REFUNDED
    : The refund request is accepted but is not completed. Request the check status service to retrieve status updates. For more information, see Check a Transaction Status.
When you send a check status request to retrieve an updated refund status, these are the possible responses:
  • FAILED
    : The refund request failed.
  • REFUNDED
    : The settled payment is successfully refunded.

Example: Refunding a Payment

Request
{ "clientReferenceInformation": { "code": "refnum-1234" }, "paymentInformation": { "paymentType": { "name": "eWallet", "method": { "name": "TWINT" } } }, "processingInformation": { "actionList": "AP_REFUND" }, "orderInformation": { "amountDetails": { "totalAmount": "10.00", "currency": "CHF" } } }
Response to a Successful Request
{ "_links": { "self": { "method": "GET", "href": "/pts/v2/refunds/7546698758166740704805" }, "status": { "method": "POST", "href": "/pts/v2/refresh-payment-status/7546698758166740704805" } }, "clientReferenceInformation": { "code": "refnum-1234", "returnReconciliationId": "R04NNE1TJDUA" }, "id": "7546698758166740704805", "orderInformation": { "amountDetails": { "currency": "CHF" } }, "processorInformation": { "responseDetails": "00006", "transactionId": "519468592154", "responseCode": "00006" }, "reconciliationId": "XFZ4084S9J0F", "refundAmountDetails": { "refundAmount": "10.00" }, "status": "REFUNDED", "submitTimeUtc": "2025-08-08T16:17:57Z" }

Reference Information

This section contains helpful information that you can use when processing transactions.

Using Line Items

This section describes how to format line items in your API requests.
Some Thunes API requests require line items or allow you include line items in addition to the required request information. Line items are used to include information about the goods that customers purchase, such as product name, quantity, and price.
Line items are included in a request in the
lineItem[]
array.
Including Line Items
This example shows three valid line items in the proper syntax.

Figure:

Line Items within a API Request Message
{ "orderInformation": { "lineItems": [ { "productName": "test-product-1", "quantity": 5, "productDescription": "description-123", "unitPrice": "20", "taxAmount": "10", "totalAmount": "100", "typeOfSupply": "01" }, { "productName": "test-product-2", "quantity": 1, "productDescription": "description-456", "unitPrice": "5", "taxAmount": "1", "totalAmount": "6", "typeOfSupply": "01" }, { "productName": "test-product-3", "quantity": 2, "productDescription": "description-789", "unitPrice": "4", "taxAmount": "2", "totalAmount": "10", "typeOfSupply": "01" } ] } }

Generating Reports In the
Business Center

You can generate various types of reports for your financial and reconciliation data. For more information about how to automate your reports, see the
Reporting Developer Guide
. For more information about how to use your
Business Center
account to generate reports, see the
Reporting User Guide
.
The
Reporting User Guide
contains these relevant topics:
  • How and When Reports Are Generated
  • Downloading Available Reports
  • Subscribing to Standard Reports

Additional Resources

For additional information about how to use the
Business Center
and manage reports, see these helpful resources.
Business Center
Navigation
For an overview of the various resources available in the
Business Center
, see this YouTube video:
Getting Started with the
Business Center
For a step-by-step demonstration of how to navigate in the
Business Center
, see this YouTube video:
Managing Report Subscriptions
For an overview of how to manage report subscriptions in the Downloadable Reports section in the
Business Center
, see this YouTube video:
Downloading Reports
For an overview of how to download available reports in the Reports section of the
Business Center
, see this YouTube video:

Check a Request Status

The check status service is a follow-on service used to retrieve a status update of a pending sale or refund.
When a pending status updates, a check status response includes the transaction's new status. Thunes sometimes needs to review a service request, which causes a transaction to initially respond with a pending status. The check status request requires you to include the request ID from the pending transaction response you are checking the status of. The request ID is located in the
id
response field.
Cybersource
recommends that you send a check status request hourly until the status updates from pending.

Endpoints

Production:
POST
https://api.cybersource.com
/pts/v2/refresh-payment-status/
{id}
Test:
POST
https://apitest.cybersource.com
/pts/v2/refresh-payment-status/
{id}
Set the
{id}
to the request ID of the API service you are retrieving.

Response Statuses

Cybersource
responds to your check status request with one of these statuses in the field:
Check Status Responses for a Sale
  • ABANDONED
    : The customer did not complete the payment using the redirect URL.
  • FAILED
    : The service request failed. A failed request can be due to either Alipay+ rejecting the transaction or a technical error.
  • FUNDED
    : The settled amount is funded to the merchant bank account.
  • PENDING
    : The service request is accepted but is not completed. Request the check status service to retrieve status updates.
  • SETTLED
    : The sale request is settled for the requested amount.
Check Status Responses for a Refund
  • FAILED
    : The service request failed. A failed request can be due to either Alipay+ rejecting the transaction or a technical error.
  • REFUNDED
    : The settled amount is successfully refunded.

Process a Sale

Send a sale request to authorize and capture a payment in the same request. A successful sale response includes a redirect URL and a pending status. Redirect the customer to the URL to allow the customer to complete the checkout using Alipay+. When the customer completes the checkout, the customer is redirected to your merchant website based on the success URL you include in the
merchantInformation.successUrl
request field.

Supported Digital Wallets

This table lists the supported digital wallet types and the relevant digital wallet code, country code, and currency code for each country. When sending a sale request, set these fields to the specified values listed in the table:
Supported Digital Wallets
Country
Digital Wallet
Digital Wallet Code
Country Code
Currency Code
China
Alipay
ALO
CN
CNY
Hong Kong (CN)
Alipay+
ALP
HK
HKD
Indonesia
Akulaku PayLater
APL
ID
IDR
Indonesia
Dana
DNA
ID
IDR
Korea, Republic of (South)
KakaoPay
KPT
KR
KRW
Malaysia
Boost
BST
MY
MYR
Malaysia
Touch'n'GO
TNG
MY
MYR
Philippines
Bank of Philippines
BPI
PH
PHP
Philippines
Gcash
GCH
PH
PHP
Thailand
Rabbit Line Pay
RPL
TH
THB
Thailand
TrueMoney
TMY
TH
THB

Line Items

Line items are included in a request in the
lineItem[]
array.
For more information about how to properly format line items in your request, see Using Line Items.

Tax Amounts

You can include the tax amount for every type of purchased product in the
orderInformation.lineItems[].taxAmount
field when you request the sale service.

Calculating the Grand Total

Include the grand total in the request by using the
orderInformation.amountDetails.totalAmount
field.

Endpoints

Production:
POST
https://api.cybersource.com
/pts/v2/payments
Test:
POST
https://apitest.cybersource.com
/pts/v2/payments

Response Statuses

Cybersource
responds to your sale request with one of these statuses in the
status
field:
Sale Status
  • FAILED
    : The sale cannot be completed.
  • PENDING
    : The sale request is accepted but is not completed. Request the check status service every 60 minutes to retrieve status updates. See Check a Request Status.
When you send a check status request to retrieve an updated sale status, these are the possible responses:
Check Status for a Sale
  • ABANDONED
    : The customer did not complete the payment using the redirect URL.
  • FAILED
    : The sale cannot be completed.
  • FUNDED
    : The settled amount is funded to the merchant bank account.
  • PENDING
    : The sale request is accepted but is not complete. Continue sending the check status request every 60 minutes.
  • SETTLED
    : The sale request is settled for the requested amount. You cannot receive a settled status until the customer has completed checking out.

Check a Transaction Status

You can retrieve the current status of a pending authorization, reversal, capture, or refund by sending a check status request. The check status request requires the request ID from the corresponding transaction.
When a pending status updates, the check status request responds with the transaction's new status. Thunes sometimes needs to review a service request, which causes a transaction to initially respond with a pending status. The check status request requires you to include the request ID from the pending transaction response you are checking the status of. The request ID is located in the
id
response field.
Cybersource
recommends that you send a check status request hourly until the status updates from pending.

Endpoints

Production:
POST
https://api.cybersource.com
/pts/v2/refresh-payment-status/
{id}
Test:
POST
https://apitest.cybersource.com
/pts/v2/refresh-payment-status/
{id}
Set the
{id}
to the request ID of the API service you are retrieving.

Response Statuses

Cybersource
responds to your check status request with one of these statuses in the
status
field:
Check Status Responses for a Session
  • ABANDONED
    : The customer did not complete the payment using the redirect URL.
  • COMPLETED
    : The customer completed the checkout process.
  • PENDING
    : The service request is accepted but is not completed. Request the check status service to retrieve status updates.
Check Status Responses for an Authorization
  • AUTHORIZED
    : The customer's payment is authorized.
  • FAILED
    : The service request failed. A failed request can be due to either Oney rejecting the transaction or a technical error.
  • PENDING
    : The service request is accepted but is not completed. Request the check status service to retrieve status updates.
Check Status Responses for a Capture
  • FAILED
    : The service request failed. A failed request can be due to either Oney rejecting the transaction or a technical error.
  • FUNDED
    : The settled amount is funded to the merchant bank account.
  • PENDING
    : The service request is accepted but is not completed. Request the check status service to retrieve status updates.
  • SETTLED
    : The capture request is settled for the requested amount.
Check Status Responses for an Authorization-Reversals
  • AUTH-REVERSED
    : The authorization is successfully reversed.
  • FAILED
    : The service request failed. A failed request can be due to either Oney rejecting the transaction or a technical error.
  • PENDING
    : The service request is accepted but is not completed. Request the check status service to retrieve status updates.

Create a Session

To create a session, you must include shipping fields in your request. The shipping field values are included in the invoice Oney sends to the customer.
When the session request is complete, the response message includes a pre-approval token from Oney. Use this pre-approval token when initializing the Oney authorization service. The session response message also includes a redirection URL that remains available for the customer up to 20 minutes after the session request.

Line Items

The session service requires you to include line items in your request. Line items correspond to the fields, starting with and increasing in numerical order. For more information on how to use line items, see Using Line Items.

Tax Amounts

Include the tax amount for every type of purchased product in the field when you request the sessions service.

Calculating the Grand Total

Include the grand total in the request by using the
orderInformation.amountDetails.totalAmount
field.

Endpoints

Production:
POST
https://api.cybersource.com
/pts/v2/payment-references
Test:
POST
https://apitest.cybersource.com
/pts/v2/payment-references

Response Statuses

The session service responds with one of these statuses as the field value:
  • PENDING
    : The session is initiated and the customer may now checkout. Request the check status service to retrieve status updates. See Check a Transaction Status.
The session service also responds with a reason code as the field value.

GoPay Transaction Requests

GoPay is a payment method offered by the Thunes payment service provider (PSP) that you can offer your customers through
Cybersource
. You can process a payment by sending a sale API request message to
Cybersource
.
Cybersource
sends your request to Thunes. Thunes approves the transaction and sends the request to the processor for settlement. You can also send a refund and check status API request as follow-on services.

Requirements

You must have a merchant ID and a Thunes API key for each country in which you process transactions. Contact your
Cybersource
account manager for more information.

Supported Currency

This table lists the currency supported by GoPay.
Supported Currencies and Currency Codes
Currency
Currency Code
Indonesian rupiah
IDR

Shipping Policy

Goods can be shipped when the sale status is
SETTLED
.

GoPay by Thunes Payment Workflow

This workflow describes the sequence of events that comprises a successful GoPay payment.

Figure:

GoPay by Thunes Payment Workflow
  1. The customer begins to checkout on the merchant's website and chooses the GoPay payment method.
  2. The merchant sends a sale API request to
    Cybersource
    . For more information, see Process a Sale.
  3. Cybersource
    responds to the merchant with a
    PENDING
    status and a redirect URL.
  4. The merchant redirects the customer to the URL.
  5. The customer completes the checkout using GoPay and is redirected to the merchant website.
  6. The merchant sends a check status API request to
    Cybersource
    . For more information, see Check a Request Status.
  7. Cybersource
    responds to the merchant with a
    SETTLED
    status.
  8. The merchant displays a confirmation of the completed payment to the customer.

Transaction Statuses Workflow

This workflow shows the statuses that can occur at each stage of processing a sale and refund.

Figure:

Transaction Statuses Workflow
  1. When a customer begins to check out, you send a sale request to
    Cybersource
    and receive one of these possible statuses:
    • FAILED
      : The sale cannot be completed.
    • PENDING
      : The sale request is accepted but is not completed. Send the check status request to retrieve status updates.
  2. You send a check status request to
    Cybersource
    to verify the sale status and receive one of these statuses:
    • ABANDONED
      : The customer did not complete the payment using the redirect URL.
    • FAILED
      : The sale request failed. A failed request can be due to either a rejection or a technical error.
    • PENDING
      : The sale request is accepted but is not completed. Send the check status request as often as necessary to obtain the information that you need.
    • SETTLED
      : The sale request is settled for the requested amount. When the settled amount is deposited into the merchant's bank account, the status updates to
      FUNDED
      .
  3. If a customer returns a purchase, you send a refund request to
    Cybersource
    and receive one of these possible statuses:
    • FAILED
      : The refund request failed.
    • REFUNDED
      : The refund request is accepted but is not completed. Request the check status service to retrieve status updates.
  4. You send a check status request to
    Cybersource
    to verify the refund status and receive one of these statuses:
    • FAILED
      : The refund could not be completed.
    • REFUNDED
      : The settled amount is successfully refunded.

Process a Sale

Send a sale request to authorize and capture a payment in the same request. A successful sale response includes a redirect URL and a pending status. Redirect the customer to the URL to allow the customer to complete the checkout using GoPay. When the customer completes the checkout, the customer is redirected to the merchant website using the success-URL provided in the sale request.

Line Items

Line items are included in a request in the
lineItem[]
array.
For more information about how to properly format line items in your request, see Using Line Items.

Tax Amounts

You can include the tax amount for every type of purchased product in the
orderInformation.lineItems[].taxAmount
field when you request the sale service.

Calculating the Grand Total

Include the grand total in the request by using the
orderInformation.amountDetails.totalAmount
field.

Endpoints

Production:
POST
https://api.cybersource.com
/pts/v2/payments
Test:
POST
https://apitest.cybersource.com
/pts/v2/payments

Response Statuses

Cybersource
responds to your sale request with one of these statuses in the
status
field:
Sale Status
  • FAILED
    : The sale cannot be completed.
  • PENDING
    : The sale request is accepted but is not completed. Request the check status service every 60 minutes to retrieve status updates. See Check a Request Status.
When you send a check status request to retrieve an updated sale status, these are the possible responses:
Check Status for a Sale
  • ABANDONED
    : The customer did not complete the payment using the redirect URL.
  • FAILED
    : The sale cannot be completed.
  • FUNDED
    : The settled amount is funded to the merchant bank account.
  • PENDING
    : The sale request is accepted but is not complete. Continue sending the check status request every 60 minutes.
  • SETTLED
    : The sale request is settled for the requested amount. You cannot receive a settled status until the customer has completed checking out.

Processing a Sale

Follow these steps to successfully process sale.
  1. You can include these optional fields in the request:
  2. Redirect the customer to the returned URL in the
    processorInformation.paymentUrl
    response field.
    "successUrl": "https://www.valid.merchant.redirect.url.from.request.html?actionsuccess"
  3. When the customer completes the checkout using their GoPay credentials, the customer is redirected to the merchant website based on the URL that you included in the
    merchantInformation.successUrl
    field.
  4. Save the request ID in the
    id
    field from the sale response. Include the request ID in a check status request to confirm that the payment is complete.
    "id": "7721264899246770904806"

Example: Processing a Sale

Request
{     "clientReferenceInformation": {         "code": "123"     },     "merchantInformation": {         "cancelUrl": "https://www.valid.merchant.redirect.url.from.request.html?actioncancel",         "failureUrl": "https://www.valid.merchant.redirect.url.from.request.html?actionfailure",         "successUrl": "https://www.valid.merchant.redirect.url.from.request.html?actionsuccess"     },     "paymentInformation": {         "paymentType": {             "method": {                 "name": "GOPAY"             },             "name": "eWallet"         }     },     "orderInformation": {         "billTo": {             "country": "ID"         },         "amountDetails": {             "totalAmount": "100.00",             "currency": "IDR"         }     },     "processingInformation": {         "actionList": [             "AP_SALE"         ]     } }
Response to a Successful Request
{     "_links": {         "void": {             "method": "POST",             "href": "/pts/v2/payments/7721264899246770904806/voids"         },         "billingAgreement": {             "method": "POST",             "href": "/pts/v2/billing-agreements/7721264899246770904806"         },         "self": {             "method": "POST",             "href": "/pts/v2/payments/7721264899246770904806"         },         "refund": {             "method": "POST",             "href": "/pts/v2/payments/7721264899246770904806/refunds"         },         "status": {             "method": "POST",             "href": "/pts/v2/refresh-payment-status/7721264899246770904806"         }     },     "clientReferenceInformation": {         "code": "123"     },     "id": "7721264899246770904806",     "message": "Request was processed successfully.",     "orderInformation": {         "amountDetails": {             "totalAmount": "100.00",             "currency": "IDR"         }     },     "processorInformation": {         "responseDetails": "00001",         "paymentUrl": "https://payment.limonetikqualif.com/Boku/Order/PayPage/487218560843",         "transactionId": "487218560843",         "responseCode": "00001"     },     "reconciliationId": "XFZ40LJHKI73",     "status": "PENDING",     "submitTimeUtc": "2026-02-26T17:21:31Z" }

Check a Request Status

The check status service is a follow-on service used to retrieve a status update of a pending sale or refund.
When a pending status updates, a check status response includes the transaction's new status. Thunes sometimes needs to review a service request, which causes a transaction to initially respond with a pending status. The check status request requires you to include the request ID from the pending transaction response you are checking the status of. The request ID is located in the
id
response field.
Cybersource
recommends that you send a check status request hourly until the status updates from pending.

Endpoints

Production:
POST
https://api.cybersource.com
/pts/v2/refresh-payment-status/
{id}
Test:
POST
https://apitest.cybersource.com
/pts/v2/refresh-payment-status/
{id}
Set the
{id}
to the request ID of the API service you are retrieving.

Response Statuses

Cybersource
responds to your check status request with one of these statuses in the
status
field:
Check Status Responses for a Sale
  • ABANDONED
    : The customer did not complete the payment using the redirect URL.
  • FAILED
    : The service request failed. A failed request can be due to either GoPay rejecting the transaction or a technical error.
  • FUNDED
    : The settled amount is funded to the merchant bank account.
  • PENDING
    : The service request is accepted but is not completed. Request the check status service to retrieve status updates.
  • SETTLED
    : The sale request is settled for the requested amount.
Check Status Responses for a Refund
  • FAILED
    : The service request failed. A failed request can be due to either GoPay rejecting the transaction or a technical error.
  • REFUNDED
    : The settled amount is successfully refunded.

Example: Checking a Request Status

Request
{     "clientReferenceInformation": {         "code": "refnum-1234"     },     "paymentInformation": {         "paymentType": {             "method": {                 "name": "GOPAY"             },             "name": "eWallet"         }     },     "processingInformation": {         "actionList": "AP_STATUS"     } }
Response to a Successful Request
{     "clientReferenceInformation": {         "code": "refnum-1234"     },     "id": "7721263040306987104807",     "processorInformation": {         "responseDetails": "00004",         "token": "471566914346",         "responseCode": "00004"     },     "reconciliationId": "XFZ3ZLJHM12G",     "status": "SETTLED" }

Refund a Payment

You can refund a completed payment for the full amount or a partial amount by sending a refund request. GoPay supports multiple refund requests when the total amount of all of the refund requests is less than the captured amount.
Requesting a refund requires the request ID from the sale response. The request ID is located in the
id
response field.

Endpoints

Production:
POST
https://api.cybersource.com
/pts/v2/payments/
{id}
/refunds
Test:
POST
https://apitest.cybersource.com
/pts/v2/payments/
{id}
/refunds
The
{id}
is the request ID contained in the original transaction request.

Response Statuses

Cybersource
responds to your refund request with one of these statuses as the
status
field value:
  • FAILED
    : The refund request failed.
  • REFUNDED
    : The refund request is accepted but is not completed. Request the check status service to retrieve status updates. For more information, see Check a Request Status.
When you send a check status request to retrieve an updated refund status, these are the possible responses:
  • FAILED
    : The refund request failed.
  • REFUNDED
    : The settled payment is successfully refunded.

Example: Refunding a Payment

Request
{     "clientReferenceInformation": {         "code": "refnum-1234"     },     "paymentInformation": {         "paymentType": {             "method": {                 "name": "GOPAY"             },             "name": "eWallet"         }     },     "processingInformation": {         "actionList": "AP_REFUND"     },     "orderInformation": {         "amountDetails": {             "totalAmount": "600.00",             "currency": "IDR"         }     } }
Response to a Successful Request
{     "_links": {         "self": {             "method": "GET",             "href": "/pts/v2/refunds/7684136117536580704805"         },         "status": {             "method": "POST",             "href": "/pts/v2/refresh-payment-status/7684136117536580704805"         }     },     "clientReferenceInformation": {         "code": "refnum-1234",         "returnReconciliationId": "NISTFJ987YPM"     },     "id": "7684136117536580704805",     "orderInformation": {         "amountDetails": {             "currency": "IDR"         }     },     "processorInformation": {         "responseDetails": "00006",         "transactionId": "560121718645",         "responseCode": "00006"     },     "reconciliationId": "XFZ3ZKAU0MC3",     "refundAmountDetails": {         "refundAmount": "600.00"     },     "status": "REFUNDED",     "submitTimeUtc": "2026-01-14T18:00:13Z" }

MercadoPago Transaction Requests

MercadoPago is a payment method offered by the Thunes payment service provider (PSP) that you can offer your customers through
Cybersource
. With MercadoPago you can process payments, refund payments, and retrieve the status of a pending payment or refund.
This section describes how to process MercadoPago transactions using the
REST API
.

Requirement

You must receive a Thunes merchant ID before you can begin processing payments. Contact your
Cybersource
account manager for more information.

Supported Countries and Currencies

This table lists the countries and currencies that are supported by MercadoPago.
Supported Countries and Currencies
Supported Countries
Country Codes
Supported Currencies
Currency Codes
Argentina
AR
Argentine peso
ARS
Brazil
BR
Brazilian real
BRL
Chile
CL
Chilean peso
CLP
Mexico
MX
Mexican peso
MXN

Shipping Policy

You can ship purchased goods when the sale status is
SETTLED
.

MercadoPago by Thunes Transaction Workflow

This workflow describes the sequence of events that comprises a successful MercadoPago payment and refund.

Figure:

MercadoPago by Thunes Transaction Workflow
  1. The customer begins to checkout on your website and chooses the MercadoPago payment method.
  2. You send a sale API request to
    Cybersource
    . For more information, see Process a Sale.
  3. Cybersource
    responds to you with a
    PENDING
    status, MercadoPago redirect URL, and sale request ID.
  4. You redirect the customer to the MercadoPago URL.
  5. The customer completes the checkout using MercadoPago and is redirected to your website.
  6. You send a check status API request to
    Cybersource
    . For more information, see Check a Transaction Status.
  7. Cybersource
    responds to you with a
    SETTLED
    status.
  8. You confirm the payment to the customer.
  9. The customer returns the purchase.
  10. You send a refund API request to
    Cybersource
    with the sale request ID. For more information, see Refund a Payment.
  11. Cybersource
    responds to you with a
    REFUNDED
    status and refund request ID.
  12. You send a check status request to
    Cybersource
    to verify the refund status.
  13. Cybersource
    respond to you with a
    REFUNDED
    status.
  14. You confirm the refund to the customer.

Transaction Statuses Workflow

This workflow shows the statuses that can occur at each stage of processing a sale and refund.

Figure:

Transaction Statuses Workflow
  1. When a customer begins to check out, you send a sale request to
    Cybersource
    and receive one of these possible statuses:
    • FAILED
      : The sale cannot be completed.
    • PENDING
      : The sale request is accepted but is not completed. Send the check status request to retrieve status updates.
  2. You send a check status request to
    Cybersource
    to verify the sale status and receive one of these statuses:
    • ABANDONED
      : The customer did not complete the payment using the redirect URL.
    • FAILED
      : The sale request failed. A failed request can be due to either a rejection or a technical error.
    • PENDING
      : The sale request is accepted but is not completed. Send the check status request as often as necessary to obtain the information that you need.
    • SETTLED
      : The sale request is settled for the requested amount. When the settled amount is deposited into the merchant's bank account, the status updates to
      FUNDED
      .
  3. If a customer returns a purchase, you send a refund request to
    Cybersource
    and receive one of these possible statuses:
    • FAILED
      : The refund request failed.
    • REFUNDED
      : The refund request is accepted but is not completed. Request the check status service to retrieve status updates.
  4. You send a check status request to
    Cybersource
    to verify the refund status and receive one of these statuses:
    • FAILED
      : The refund could not be completed.
    • REFUNDED
      : The settled amount is successfully refunded.

Process a Sale

This section describes how to send a sale request to process a payment.
A sale request authorizes and captures a payment in the same request. A successful sale response includes an MercadoPago redirect URL and a
PENDING
status. Redirect the customer to the MercadoPago URL to allow the customer to complete the checkout using their MercadoPago account. When the customer completes the checkout, the customer is redirected to your website.
When you receive a successful response, save the sale request ID in the
id
response field to perform a follow-on check status request or refund request.

Calculating the Grand Total

Include the grand total in the request by using the
orderInformation.amountDetails.totalAmount
field.

Endpoints

Production:
POST
https://api.cybersource.com
/pts/v2/payments
Test:
POST
https://apitest.cybersource.com
/pts/v2/payments

Processing a Sale

Follow these steps to successfully process sale.
  1. Redirect the customer to the returned URL in the
    processorInformation.paymentUrl
    response field.
    "paymentUrl": "https://payment.limonetikqualif.com/ebanx/Order/PayPage/664069324156"
  2. When the customer completes the checkout using their MercadoPago credentials, the customer is redirected to the merchant website based on the URL that you included in the
    merchantInformation.successUrl
    request field.
  3. Save the request ID in the
    id
    field from the sale response. Include the request ID in a check status request to confirm that the payment is complete.
    "id": "7722074303166341304805"

Example: Processing a Sale

Request
{     "clientReferenceInformation": {         "code": "123"     },     "merchantInformation": {         "cancelUrl": "https://www.valid.merchant.redirect.url.from.request.html?actioncancel",         "failureUrl": "https://www.valid.merchant.redirect.url.from.request.html?actionfailure",         "successUrl": "https://www.valid.merchant.redirect.url.from.request.html?actionsuccess"     },     "paymentInformation": {         "paymentType": {             "method": {                 "name": "MERCADOPAGO"             },             "name": "eWallet"         }     },     "orderInformation": {         "billTo": {             "firstName": "John",             "lastName": "Doe",             "country": "MX"         },         "amountDetails": {             "totalAmount": "100.00",             "currency": "MXN"         }     },     "processingInformation": {         "actionList": [             "AP_SALE"         ]     } }
Response to a Successful Request
{     "_links": {         "void": {             "method": "POST",             "href": "/pts/v2/payments/7722074303166341304805/voids"         },         "billingAgreement": {             "method": "POST",             "href": "/pts/v2/billing-agreements/7722074303166341304805"         },         "self": {             "method": "POST",             "href": "/pts/v2/payments/7722074303166341304805"         },         "refund": {             "method": "POST",             "href": "/pts/v2/payments/7722074303166341304805/refunds"         },         "status": {             "method": "POST",             "href": "/pts/v2/refresh-payment-status/7722074303166341304805"         }     },     "clientReferenceInformation": {         "code": "123"     },     "id": "7722074303166341304805",     "message": "Request was processed successfully.",     "orderInformation": {         "amountDetails": {             "totalAmount": "100.00",             "currency": "MXN"         }     },     "processorInformation": {         "responseDetails": "00001",         "paymentUrl": "https://payment.limonetikqualif.com/ebanx/Order/PayPage/664069324156",         "transactionId": "664069324156",         "responseCode": "00001"     },     "reconciliationId": "XFZ55M4PH5H4",     "status": "PENDING",     "submitTimeUtc": "2026-02-27T15:50:33Z" }

Response Statuses for Processing a Sale

Cybersource
responds to your sale request with one of these statuses in the
status
field:
  • FAILED
    : The sale cannot be completed.
  • PENDING
    : The sale request is accepted but is not completed. Send a check status request as often as necessary to obtain the information you need. For more information, see Check a Transaction Status.

Check a Transaction Status

This section describes how to retrieve the current status of a sale or refund. Send a check status request to know if a pending sale is settled, or to verify that a refund request is refunded. Use the check status request as often as necessary to obtain the information that you need.
The check status request requires the request ID from the sale or refund response. The request ID is in the
id
response field.

Endpoints

Production:
POST
https://api.cybersource.com
/pts/v2/refresh-payment-status/
{id}
Test:
POST
https://apitest.cybersource.com
/pts/v2/refresh-payment-status/
{id}
Set the
{id}
to the request ID of the API service you are retrieving.

Example: Checking a Status

Request
{     "clientReferenceInformation": {         "code": "refnum-1234"     },     "paymentInformation": {         "paymentType": {             "method": {                 "name": "MERCADOPAGO"             },             "name": "eWallet"         }     },     "processingInformation": {         "actionList": ["AP_STATUS"]     } }
Response to a Successful Request
{     "clientReferenceInformation": {         "code": "refnum-1234"     },     "id": "7722074988026482804807",     "processorInformation": {         "responseDetails": "00001",         "token": "664069324156",         "responseCode": "00001"     },     "reconciliationId": "XFZ3YM4R2ZM3",     "status": "PENDING" }

Response Statuses for Checking a Status

Cybersource
responds to your check status request with one of these statuses in the
status
field:
Check Status Responses for a Sale
  • ABANDONED
    : The customer did not complete the payment using the redirect URL.
  • FAILED
    : The service request failed. A failed request can be due to either MercadoPago rejecting the transaction or a technical error.
  • FUNDED
    : The settled amount is funded to the merchant bank account.
  • PENDING
    : The service request is accepted but is not completed. Request the check status service to retrieve status updates.
  • SETTLED
    : The sale request is settled for the requested amount.
Check Status Responses for a Refund
  • FAILED
    : The service request failed. A failed request can be due to either MercadoPago rejecting the transaction or a technical error.
  • REFUNDED
    : The settled amount is successfully refunded.

Refund a Payment

This section describes how to refund a payment. You can refund a settled payment for the full amount or a partial amount by sending a refund request. Multiple partial refund requests are also supported, and the total amount of all of the refund requests must be less than the settled amount.
Requesting a refund requires the sale request ID from the sale response. The sale request ID is in the
id
response field.

Endpoints

Production:
POST
https://api.cybersource.com
/pts/v2/payments/
{id}
/refunds
Test:
POST
https://apitest.cybersource.com
/pts/v2/payments/
{id}
/refunds
The
{id}
is the request ID contained in the original transaction request.

Example: Refunding a Payment

Request
{     "clientReferenceInformation": {         "code": "refnum-1234"     },     "paymentInformation": {         "paymentType": {             "method": {                 "name": "MERCADOPAGO"             },             "name": "eWallet"         }     },     "processingInformation": {         "actionList": "AP_REFUND"     },     "orderInformation": {         "amountDetails": {             "totalAmount": "600.00",             "currency": "MXN"         }     } }
Response to a Successful Request
{     "_links": {         "self": {             "method": "GET",             "href": "/pts/v2/refunds/7684136117536580704805"         },         "status": {             "method": "POST",             "href": "/pts/v2/refresh-payment-status/7684136117536580704805"         }     },     "clientReferenceInformation": {         "code": "refnum-1234",         "returnReconciliationId": "NISTFJ987YPM"     },     "id": "7684136117536580704805",     "orderInformation": {         "amountDetails": {             "currency": "MXN"         }     },     "processorInformation": {         "responseDetails": "00006",         "transactionId": "560121718645",         "responseCode": "00006"     },     "reconciliationId": "XFZ3ZKAU0MC3",     "refundAmountDetails": {         "refundAmount": "600.00"     },     "status": "REFUNDED",     "submitTimeUtc": "2026-01-14T18:00:13Z" }

Response Statuses for Refunding a Payment

Cybersource
responds to your refund request with one of these statuses in the
status
field:
  • FAILED
    : The refund request failed.
  • REFUNDED
    : The refund request is accepted but is not completed. Send a check status request to verify that the status is refunded. For more information, see Check a Transaction Status.

Oney Transaction Requests

Oney is a Buy Now Pay Later (BNPL) payment method offered by the Thunes payment service provider (PSP) that you can offer your customers through
Cybersource
. With Oney, merchants can enable their customers to split their payments into three or four installments. These flexible payment options can help increase customer purchases and create customer retention.

Requirements

You must have a merchant ID and a Thunes API key for each country in which you process transactions. Contact your
Cybersource
account manager for more information.

Supported Countries and Currencies

This table lists the countries, country codes, and currencies supported by Oney.
Supported Countries and Currencies
Country
Country Code
Currency
Currency Code
Belgium
BE
Euro
EUR
France
FR
Euro
EUR
Italy
IT
Euro
EUR
Netherlands
NL
Euro
EUR
Portugal
PT
Euro
EUR
Spain
ES
Euro
EUR

Shipping Policy

Goods can be shipped when the authorization is status is
AUTHORIZED
.

Oney by Thunes Payment Workflow

This workflow describes the sequence of events that comprises a successful Oney payment.

Figure:

Oney by Thunes Payment Workflow
  1. The customer chooses the Oney payment method from among the available payment methods shown on the merchant's checkout page.
  2. The merchant sends the create a session API request to
    Cybersource
    . The session service creates a unique customer session. SeeCreate a Session .
  3. Cybersource
    responds with a
    PENDING
    status, a URL to redirect the customer, and a pre-approval token.
  4. The merchant sends the customer to the redirect URL page.
  5. The customer completes the checkout on the redirection page within 20 minutes.
  6. The merchant sends an authorization API request to
    Cybersource
    with the pre-approval token and any optional details. See Authorize a Payment.
  7. Cybersource
    responds to the merchant with one of these statuses:
    • AUTHORIZED
      : The payment is successfully authorized.
    • PENDING
      : Either the authorization is being audited by Oney or the customer has not completed the checkout using the redirection URL. The merchant should send a check status request to retrieve status updates. See Check a Transaction Status.
  8. The merchant sends a capture API request to
    Cybersource
    with the authorized amount, currency, and original authorization request ID. See Capture an Authorized Payment.
  9. Cybersource
    responds to the merchant with one of these statuses:
    • PENDING
      : The capture request is accepted but is not
      SETTLED
      . The merchant should send a check status request to retrieve status updates. See Check a Transaction Status.
    • SETTLED
      : The capture request is settled for the requested amount.

Oney by Thunes Authorization-Reversal Workflow

This workflow describes the sequence of events that comprises a successful Oney authorization-reversal.

Figure:

Oney by Thunes Authorization-Reversal Workflow
  1. The customer chooses the Oney payment method from among the available payment methods shown on the merchant's checkout page.
  2. The merchant sends the create a session API request to
    Cybersource
    . The session service creates a unique customer session. See Create a Session.
  3. Cybersource
    responds with
    PENDING
    status, a URL to redirect the customer, and a pre-approval token.
  4. The merchant sends the customer to the redirect URL page.
  5. The customer completes the checkout on the redirection page within 20 minutes.
  6. The merchant sends an authorization API request to
    Cybersource
    with the pre-approval token and any optional details. See Authorize a Payment.
  7. Cybersource
    responds to the merchant with one of these statuses:
    • AUTHORIZED
      : The payment is successfully authorized.
    • PENDING
      : Either the authorization is being audited by Oney or the customer has not completed the checkout using the redirection URL. The merchant should send a check status request to retrieve status updates. See Check a Transaction Status.
  8. The customer and merchant decide to cancel the payment, and the merchant sends an authorization-reversal API request to
    Cybersource
    . See Reverse an Authorized Payment.
  9. Cybersource
    responds with a successful
    AUTH-REVERSED
    status to the merchant.

Oney by Thunes Refund Workflow

This workflow describes the sequence of events that comprises a successful Oney refund.

Figure:

Oney by Thunes Refund Workflow
  1. The customer chooses the Oney payment method from among the available payment methods shown on the merchant's checkout page.
  2. The merchant sends the create a session API request to
    Cybersource
    . The session service creates a unique customer session. See Create a Session.
  3. Cybersource
    responds with
    PENDING
    status, a URL to redirect the customer, and a pre-approval token.
  4. The merchant sends the customer to the redirect URL page.
  5. The customer completes the checkout on the redirection page within 20 minutes.
  6. The merchant sends an authorization API request to
    Cybersource
    with the pre-approval token and any optional details. See Authorize a Payment.
  7. Cybersource
    responds to the merchant with one of these statuses:
    • AUTHORIZED
      : The payment is successfully authorized.
    • PENDING
      : Either the authorization is being audited by Oney or the customer has not completed the checkout using the redirection URL. The merchant should send a check status API request to retrieve status updates. See Check a Transaction Status.
  8. The merchant sends a capture API request to
    Cybersource
    with the authorized amount, currency, and original authorization request ID. See Capture an Authorized Payment.
  9. Cybersource
    responds to the merchant with a
    SETTLED
    status.
  10. The customer decides to return the purchase, and the merchant sends a refund API request to
    Cybersource
    . See Refund a Payment.
  11. Cybersource
    responds with a successful
    REFUNDED
    status to the merchant.

Create a Session

To create a session, you must include shipping fields in your request. The shipping field values are included in the invoice Oney sends to the customer.
When the session request is complete, the response message includes a pre-approval token from Oney. Use this pre-approval token when initializing the Oney authorization service. The session response message also includes a redirection URL that remains available for the customer up to 20 minutes after the session request.

Line Items

The session service requires you to include line items in your request. Line items are included in a request in the
lineItem[]
array.
For more information on how to use line items, see Using Line Items.

Tax Amounts

Include the tax amount for every type of purchased product in the
orderInformation.lineItems[].taxAmount
field when you request the sessions service.

Calculating the Grand Total

Include the grand total in the request by using the
orderInformation.amountDetails.totalAmount
field.

Endpoints

Production:
POST
https://api.cybersource.com
/pts/v2/payment-references
Test:
POST
https://apitest.cybersource.com
/pts/v2/payment-references

Response Statuses

The session service responds with one of these statuses as the
status
field value:
  • PENDING
    : The session is initiated and the customer may now checkout. Request the check status service to retrieve status updates. See Check a Transaction Status.
The session service also responds with a reason code as the field value.

Creating a Session

Follow these steps to successfully create a session.
  1. Send a
    POST
    request to the
    https://api.cybersource.com
    /pts/v2/payments
    endpoint and include these required fields:
  2. Redirect the customer to the returned URL in the
    processorInformation.paymentUrl
    response field.
    "paymentUrl": "https://payment.limonetikqualif.com/OneyInternational/Order/PayPage/430844862998?LmkData=dGhtPTN4"
  3. When the customer completes the checkout using their Oney credentials, the customer is redirected to the merchant site based on the URL that you included in the
    merchantInformation.successURL
    field.
  4. Save the returned pre-approval token contained in the
    processorInformation.token
    response field. Include the pre-approval token in the authorization request to link the authorization to the session.
    "token": "430844862998"

Example: Create a Session

Request
{     "clientReferenceInformation": {         "code": "refnum-1234"     },     "orderInformation": {         "billTo": {             "firstName": "John",             "lastName": "Doe",             "address1": "1 Market St",             "locality": "Paris",             "administrativeArea": "AR",             "postalCode": "75001",             "country": "FR",             "email": "nredhi@visa.com",             "phoneNumber": "33623456789"         },         "shipTo": {             "firstName": "John",             "lastName": "Doe",             "address1": "1 Market St",             "locality": "Paris",             "administrativeArea": "AR",             "postalCode": "75001",             "country": "FR",             "email": "nredhi@visa.com",             "phoneNumber": "33623456789"         },         "amountDetails": {             "totalAmount": "600.00",             "currency": "EUR"         },         "lineItems": [             {                 "unitPrice": "1.00",                 "quantity": "10",                 "productSKU": "testI",                 "productName": "TV",                 "productCode": "4564",                 "totalAmount": "10"             },             {                 "unitPrice": "15.00",                 "quantity": "1",                 "productSKU": "testJ",                 "productName": "TV",                 "productCode": "65432",                 "totalAmount": "15"             }         ]     },     "paymentInformation": {         "paymentType": {             "name": "BNPL",             "method": {                 "name": "ONEY"             }         }     },     "processingInformation": {         "actionList": "AP_SESSIONS"     },     "merchantInformation": {         "cancelURL": "https://www.test0.com",         "successURL": "https://www.test1.com",         "failureURL": "https://www.test1.com"     } }
Response
{     "_links": {         "self": {             "method": "POST",             "href": "/pts/v2/payment-references"         },         "updateSession": {             "method": "PATCH",             "href": "/pts/v2/payment-references/7546763020266529004807"         },         "status": {             "method": "POST",             "href": "/pts/v2/refresh-payment-status/7546763020266529004807"         },         "order": {             "method": "POST",             "href": "/pts/v2/payment-references/7546763020266529004807/intents"         }     },     "clientReferenceInformation": {         "code": "refnum-1234"     },     "id": "7546763020266529004807",     "orderInformation": {         "amountDetails": {             "totalAmount": "600.00",             "currency": "EUR"         }     },     "processorInformation": {         "responseDetails": "00001",         "paymentUrl": "https://payment.limonetikqualif.com/OneyInternational/Order/PayPage/430844862998?LmkData=dGhtPTN4",         "responseCode": "00001",         "token": "430844862998"     },     "reconciliationId": "XFZ40E1G1CCC",     "status": "PENDING",     "submitTimeUtc": "2025-08-08T180503Z" }

Authorize a Payment

The authorization service confirms a customer's account holds enough funds for the payment.
The authorization request requires the pre-approved token returned in the session response in the
processorInformation.token
field.
When a payment is authorized, it can be captured within 28 days.

Line Items

The authorization service requires you to include line items in your request. Line items are included in a request in the
lineItem[]
array.
For more information on how to use line items, see Using Line Items.

Tax Amounts

Include the tax amount for every type of purchased product in the
orderInformation.lineItems[].taxAmount
field when you request the authorization service.

Calculating the Grand Total

Include the grand total in the request by using the
orderInformation.amountDetails.totalAmount
field.

Endpoints

Production:
POST
https://api.cybersource.com
/pts/v2/payments/
Test:
POST
https://apitest.cybersource.com
/pts/v2/payments/

Response Statuses

The authorization service responds with one of these statuses as the
status
field value:
  • AUTHORIZED
    : The payment is successfully authorized.
  • FAILED
    : The authorization request failed.
  • PENDING
    : The authorization request is accepted but is not authorized. Either the authorization is being audited by Oney or the customer has not completed the checkout using the redirection URL. The merchant should send a check status request to retrieve status updates. Request the check status service to retrieve status updates. See Check a Transaction Status.
The authorization service also responds with a reason code as the
responseCode
field value.

Example: Processing an Authorization

Request
{     "clientReferenceInformation": {         "code": "refnum-1234"     },     "orderInformation": {         "billTo": {             "firstName": "John",             "lastName": "Doe",             "address1": "1 Market St",             "locality": "Paris",             "administrativeArea": "AR",             "postalCode": "75001",             "country": "FR",             "email": "nredhi@visa.com",             "phoneNumber": "33623456789"         },         "shipTo": {             "firstName": "John",             "lastName": "Doe",             "address1": "1 Market St",             "locality": "Paris",             "administrativeArea": "AR",             "postalCode": "75001",             "country": "FR",             "email": "nredhi@visa.com",             "phoneNumber": "33623456789"         },         "amountDetails": {             "totalAmount": "600.00",             "currency": "EUR"         },         "lineItems": [             {                 "unitPrice": "1.00",                 "quantity": "10",                 "productSKU": "testI",                 "productName": "TV",                 "productCode": "4564",                 "totalAmount": "10"             },             {                 "unitPrice": "15.00",                 "quantity": "1",                 "productSKU": "testJ",                 "productName": "TV",                 "productCode": "65432",                 "totalAmount": "15"             }         ]     },     "processorInformation": {         "preApprovalToken": "430844862998"     },     "paymentInformation": {         "paymentType": {             "name": "BNPL",             "method": {                 "name": "ONEY"             }         }     },     "processingInformation": {         "actionList": "AP_AUTH"     } }
Response
{     "_links": {         "authReversal": {             "method": "POST",             "href": "/pts/v2/payments/7546766970976403004805/reversals"         },         "capture": {             "method": "POST",             "href": "/pts/v2/payments/7546766970976403004805/captures"         },         "self": {             "method": "POST",             "href": "/pts/v2/payments/7546766970976403004805"         },         "status": {             "method": "POST",             "href": "/pts/v2/refresh-payment-status/7546766970976403004805"         }     },     "clientReferenceInformation": {         "code": "refnum-1234"     },     "id": "7546766970976403004805",     "orderInformation": {         "amountDetails": {             "totalAmount": "600.00",             "currency": "EUR"         }     },     "processorInformation": {         "approvalCode": "1000",         "responseDetails": "00003",         "transactionId": "430844862998",         "responseCode": "00003"     },     "reconciliationId": "XFZ3ZE1G1DHB",     "status": "AUTHORIZED",     "submitTimeUtc": "2025-08-08T18:11:38Z" }

Reverse an Authorized Payment

The authorization-reversal request enables you to reverse a transaction's authorized amount. You may need to reverse an authorized payment when either you or the customer decide to cancel a payment. Requesting an authorization-reversal requires the
id
from the authorization response.

Calculating the Grand Total

Include the grand total in the request by using the
orderInformation.amountDetails.totalAmount
field.

Endpoints

Production:
POST
https://api.cybersource.com
/pts/v2/payments/
{id}
/reversals
Test:
POST
https://apitest.cybersource.com
/pts/v2/payments/
{id}
/reversals
Set the
{id}
to the request ID returned in the authorization request.

Response Statuses

The authorization-reversal service responds with one of these statuses as the
status
field value:
  • AUTH_REVERSED
    : The authorization is successfully reversed.
  • FAILED
    : The authorization-reversal failed.
The authorization-reversal service also responds with a reason code as the
processorInformation.responseCode
field value.

Required Fields for Reversing an Authorized Payment

Example: Reversing an Authorized Payment

Request
{   "clientReferenceInformation": {     "code": "refnum-1234"   }, "paymentInformation": {         "paymentType": {             "name": "BNPL",             "method": {                 "name": "ONEY"             }         }     },   "processingInformation": {     "actionList": "AP_AUTH_REVERSAL"   } }
Response
{     "_links": {         "self": {             "method": "POST",             "href": "/pts/v2/reversals/7546772446526724804805"         },         "status": {             "method": "POST",             "href": "/pts/v2/refresh-payment-status/7546772446526724804805"         }     },     "clientReferenceInformation": {         "code": "refnum-1234"     },     "id": "7546772446526724804805",     "processorInformation": {         "responseDetails": "00007",         "responseCode": "00007"     },     "reconciliationId": "XFZ40E1G1CKL",     "reversalAmountDetails": {         "reversedAmount": "0"     },     "status": "AUTH_REVERSED",     "submitTimeUtc": "2025-08-08T18:20:49Z" }

Capture an Authorized Payment

The capture request enables you to capture an authorized payment. You can either capture the entire amount in one request or request partial-capture amounts. Oney supports multiple partial-capture requests when the total amount of all captures is less than the authorized amount. Requesting a capture requires the from the authorization response.
You can capture an authorized payment up to 28 days after the payment was authorized.

Calculating the Grand Total

Include the grand total in the request by using the
orderInformation.amountDetails.totalAmount
field.

Endpoints

Production:
POST
https://api.cybersource.com
/pts/v2/payments/
{id}
/captures
Test:
POST
https://apitest.cybersource.com
/pts/v2/payments/
{id}
/captures
Set the
{id}
to the request ID contained in the authorization response.

Response Statuses

The capture service responds with one of these statuses as the
status
response field value:
  • FAILED
    : The capture request failed.
  • PENDING
    : The capture request is accepted but is not settled. Request the check status service to retrieve status updates. See Check a Transaction Status.
  • SETTLED
    : The capture request is settled for the requested amount.
The capture service also responds with a reason code as the field value.

Example: Capturing a Payment

Request
{     "clientReferenceInformation": {         "code": "refnum-1234"     },     "orderInformation": {         "amountDetails": {             "totalAmount": "102.21",             "currency": "EUR"         }     },         "paymentInformation": {             "paymentType": {                 "name": "BNPL",                 "method": {                     "name": "ONEY"                 }             }         },     "processingInformation": {         "actionList": "AP_CAPTURE"     } }
Response
{     "_links": {         "self": {             "method": "POST",             "href": "/pts/v2/captures/7546768043406678904807"         },         "refund": {             "method": "POST",             "href": "/pts/v2/captures/7546768043406678904807/refunds"         },         "status": {             "method": "POST",             "href": "/pts/v2/refresh-payment-status/7546768043406678904807"         }     },     "clientReferenceInformation": {         "code": "refnum-1234"     },     "id": "7546768043406678904807",     "orderInformation": {         "amountDetails": {             "totalAmount": "102.21",             "currency": "EUR"         }     },     "processorInformation": {         "responseDetails": "00004",         "responseCode": "00004"     },     "reconciliationId": "XFZ3ZE1G1DID",     "status": "SETTLED",     "submitTimeUtc": "2025-08-08T18:13:28Z" }

Refund a Payment

You can refund a completed payment for the full amount or a partial amount by sending a refund request. Oney supports multiple refund requests when the total amount of all of the refund requests is less than the captured amount.
Requesting a refund requires the request ID from the capture response. The request ID is located in the
ID
response field.

Endpoints

Production:
POST
https://api.cybersource.com
/pts/v2/payments/
{id}
/refunds
Test:
POST
https://apitest.cybersource.com
/pts/v2/payments/
{id}
/refunds
The
{id}
is the request ID contained in the original transaction request.

Response Statuses

Cybersource
responds to your refund request with one of these statuses as the
status
field value:
  • FAILED
    : The refund request failed.
  • REFUNDED
    : The refund request is accepted but is not completed. Request the check status service to retrieve status updates. For more information, see Check a Transaction Status.
When you send a check status request to retrieve an updated refund status, these are the possible responses:
  • FAILED
    : The refund request failed.
  • REFUNDED
    : The captured payment is successfully refunded.

Example: Issuing a Refund

Request
{     "clientReferenceInformation": {         "code": "refnum-1234"     },     "paymentInformation": {         "paymentType": {             "name": "BNPL",             "method": {                 "name": "ONEY"             }         }     },     "processingInformation": {         "actionList": "AP_REFUND"     },     "orderInformation": {         "amountDetails": {             "totalAmount": "5.00",             "currency": "EUR"         }     } }
Response
{     "_links": {         "self": {             "method": "GET",             "href": "/pts/v2/refunds/7546768549536451204805"         },         "status": {             "method": "POST",             "href": "/pts/v2/refresh-payment-status/7546768549536451204805"         }     },     "clientReferenceInformation": {         "code": "refnum-1234",         "returnReconciliationId": "W0N56E1YK06T"     },     "id": "7546768549536451204805",     "orderInformation": {         "amountDetails": {             "currency": "EUR"         }     },     "processorInformation": {         "responseDetails": "00006",         "transactionId": "430844862998",         "responseCode": "00006"     },     "reconciliationId": "XFZ3ZE1G1DID",     "refundAmountDetails": {         "refundAmount": "5.00"     },     "status": "REFUNDED",     "submitTimeUtc": "2025-08-08T18:14:18Z" }

Check a Transaction Status

You can retrieve the current status of a pending authorization, reversal, capture, or refund by sending a check status request. The check status request requires the request ID from the corresponding transaction.
When a pending status updates, the check status request responds with the transaction's new status. Thunes sometimes needs to review a service request, which causes a transaction to initially respond with a pending status. The check status request requires you to include the request ID from the pending transaction response you are checking the status of. The request ID is located in the
id
response field.
Cybersource
recommends that you send a check status request hourly until the status updates from pending.

Endpoints

Production:
POST
https://api.cybersource.com
/pts/v2/refresh-payment-status/
{id}
Test:
POST
https://apitest.cybersource.com
/pts/v2/refresh-payment-status/
{id}
Set the
{id}
to the request ID of the API service you are retrieving.

Response Statuses

Cybersource
responds to your check status request with one of these statuses in the
status
field:
Check Status Responses for a Session
  • ABANDONED
    : The customer did not complete the payment using the redirect URL.
  • COMPLETED
    : The customer completed the checkout process.
  • PENDING
    : The service request is accepted but is not completed. Request the check status service to retrieve status updates.
Check Status Responses for an Authorization
  • AUTHORIZED
    : The customer's payment is authorized.
  • FAILED
    : The service request failed. A failed request can be due to either Oney rejecting the transaction or a technical error.
  • PENDING
    : The service request is accepted but is not completed. Request the check status service to retrieve status updates.
Check Status Responses for a Capture
  • FAILED
    : The service request failed. A failed request can be due to either Oney rejecting the transaction or a technical error.
  • FUNDED
    : The settled amount is funded to the merchant bank account.
  • PENDING
    : The service request is accepted but is not completed. Request the check status service to retrieve status updates.
  • SETTLED
    : The capture request is settled for the requested amount.
Check Status Responses for an Authorization-Reversals
  • AUTH-REVERSED
    : The authorization is successfully reversed.
  • FAILED
    : The service request failed. A failed request can be due to either Oney rejecting the transaction or a technical error.
  • PENDING
    : The service request is accepted but is not completed. Request the check status service to retrieve status updates.

Example: Checking a Transaction Status

Request
{   "clientReferenceInformation": {     "code": "refnum-1234"   }, "paymentInformation": {         "paymentType": {             "name": "BNPL",             "method": {                 "name": "ONEY"             }         }     },   "processingInformation": {     "actionList": "AP_STATUS"   } }
Response
{     "clientReferenceInformation": {         "code": "refnum-1234"     },     "id": "7546767627776419804805",     "processorInformation": {         "responseCode": "00003"     },     "reconciliationId": "XFZ3ZE1G1DHB",     "status": "AUTHORIZED" }

PromptPay Transaction Requests

PromptPay is a payment method offered by the Thunes payment service provider (PSP) that you can offer your customers through
Cybersource
. You can process a payment by sending a sale API request to
Cybersource
.
Cybersource
sends your request to Thunes. Thunes approves the transaction and sends the request to the processor for settlement. You can also send a check status API request to retrieve status updates of the processing sale. PromptPay does not support refunds. To issue a refund to the customer, you must provide an alternative method of reimbursement, such as cash or in-store credit.

Requirements

You must have a merchant ID and a Thunes API key for each country in which you process transactions. Contact your
Cybersource
account manager for more information.

Supported Country and Currency

This table lists the country and currency supported by PromptPay.
Supported Currencies and Currency Codes
Country
Country Code
Currency
Currency Code
Thailand
TH
Thai Baht
THB

Shipping Policy

Goods can be shipped when the sale status is
SETTLED
.

Testing Information

IMPORTANT
PromptPay does not support a test endpoint. Send all test transactions to the production endpoint.

PromptPay by Thunes Payment Workflow

This workflow describes the sequence of events that comprises a successful PromptPay payment.

Figure:

Payment Workflow
  1. The customer begins to checkout on the merchant's website and chooses the PromptPay payment method.
  2. The merchant sends a sale API request to
    Cybersource
    . For more information, see Process a Sale.
  3. Cybersource
    responds to the merchant with a
    PENDING
    status and a redirect URL.
  4. The merchant displays a QR code to the customer that redirects the customer to a PromptPay checkout page.
  5. The customer completes the checkout using PromptPay and is redirected to the merchant website.
  6. The merchant sends a check status API request to
    Cybersource
    . For more information, see Check a Request Status.
  7. Cybersource
    responds to the merchant with a
    SETTLED
    status.
  8. The merchant displays a confirmation of the completed payment to the customer.

Transaction Statuses Workflow

This workflow describes the sequence of possible statuses you can receive when processing a sale.
  1. The merchant sends a sale API request to
    Cybersource
    and receives one of these possible statuses:
    • FAILED
      : The sale cannot be completed.
    • PENDING
      : The sale request is accepted but is not completed. Request the check status service to retrieve status updates.
  2. The merchant sends a check status API request to
    Cybersource
    to verify the status of the sale and receives one of these statuses:
    • ABANDONED
      : The customer did not complete the payment using the redirect URL.
    • FAILED
      : The service request failed. A failed request can be due to either a rejected transaction or a technical error.
    • PENDING
      : The sale request is accepted but is not completed. Request the check status service again after 60 minutes to retrieve a status update.
    • SETTLED
      : The sale request is settled for the requested amount. When the settled amount is deposited into the merchant's bank account, the status updates to
      FUNDED
      .

Process a Sale

Send a sale request to authorize and capture a payment in the same request. A successful sale response includes a redirect URL and a pending status. Redirect the customer to the URL to allow the customer to complete the checkout using PromptPay. When the customer completes the checkout, the customer is redirected to the merchant website using the success-URL provided in the sale request.

Line Items

Line items are included in a request in the
lineItem[]
array.
For more information about how to properly format line items in your request, see Using Line Items.

Tax Amounts

You can include the tax amount for every type of purchased product in the
orderInformation.lineItems[].taxAmount
field when you request the sale service.

Calculating the Grand Total

Include the grand total in the request by using the
orderInformation.amountDetails.totalAmount
field.

Endpoints

Production:
POST
https://api.cybersource.com
/pts/v2/payments
Test:
POST
https://apitest.cybersource.com
/pts/v2/payments
IMPORTANT
PromptPay does not support a test endpoint. Send all test transactions to the production endpoint.

Response Statuses

Cybersource
responds to your sale request with one of these statuses in the
status
field:
Sale Status
  • FAILED
    : The sale cannot be completed.
  • PENDING
    : The sale request is accepted but is not completed. Request the check status service every 60 minutes to retrieve status updates. See Check a Request Status.
When you send a check status request to retrieve an updated sale status, these are the possible responses:
Check Status for a Sale
  • ABANDONED
    : The customer did not complete the payment using the redirect URL.
  • FAILED
    : The sale cannot be completed.
  • FUNDED
    : The settled amount is funded to the merchant bank account.
  • PENDING
    : The sale request is accepted but is not complete. Continue sending the check status request every 60 minutes.
  • SETTLED
    : The sale request is settled for the requested amount. You cannot receive a settled status until the customer has completed checking out.

Processing a Sale

Follow these steps to successfully process sale.
IMPORTANT
You must include all of the listed required fields in your sale request to guarantee the redirect URL will display properly to the customer.
  1. Redirect the customer to the returned URL in the
    processorInformation.paymentUrl
    response field.
    "paymentUrl": "https://lmk.limonetik.com/Kgp/PayPage/731327025546"
  2. When the customer completes the checkout using their P24 credentials, the customer is redirected to the merchant website based on the URL that you included in the
    merchantInformation.successUrl
    field.
  3. Save the request ID in the
    id
    field from the sale response. Include the request ID in a check status request to confirm that the payment is complete.
    "id": "7721282851566013804895"

Example: Processing a Sale

Request
{     "clientReferenceInformation": {         "code": "123"     },     "merchantInformation": {         "cancelUrl": "https://www.valid.merchant.redirect.url.from.request.html?actioncancel",         "failureUrl": "https://www.valid.merchant.redirect.url.from.request.html?actionfailure",         "successUrl": "https://www.valid.merchant.redirect.url.from.request.html?actionsuccess"     },     "paymentInformation": {         "paymentType": {             "method": {                 "name": "PROMPTPAYQR"             },             "name": "eWallet"         }     },     "orderInformation": {         "billTo": {             "firstName": "John",             "lastName": "Doe",             "country": "TH"         },         "amountDetails": {             "totalAmount": "1.00",             "currency": "THB"         }     },     "processingInformation": {         "actionList": [             "AP_SALE"         ]     } }
Response to a Successful Request
{     "_links": {         "void": {             "method": "POST",             "href": "/pts/v2/payments/7721282851566013804895/voids"         },         "billingAgreement": {             "method": "POST",             "href": "/pts/v2/billing-agreements/7721282851566013804895"         },         "self": {             "method": "POST",             "href": "/pts/v2/payments/7721282851566013804895"         },         "refund": {             "method": "POST",             "href": "/pts/v2/payments/7721282851566013804895/refunds"         },         "status": {             "method": "POST",             "href": "/pts/v2/refresh-payment-status/7721282851566013804895"         }     },     "clientReferenceInformation": {         "code": "123"     },     "id": "7721282851566013804895",     "message": "Request was processed successfully.",     "orderInformation": {         "amountDetails": {             "totalAmount": "1.00",             "currency": "THB"         }     },     "processorInformation": {         "responseDetails": "00001",         "paymentUrl": "https://lmk.limonetik.com/Kgp/PayPage/731327025546",         "transactionId": "731327025546",         "responseCode": "00001"     },     "reconciliationId": "XETXNLNDR6QV",     "status": "PENDING",     "submitTimeUtc": "2026-02-26T17:51:26Z" }

Check a Request Status

You can retrieve the status of a pending sale or refund by sending a check status request.
The check status service is a follow-on service used to retrieve status updates of a pending sale.
When a pending status updates, a check status response includes the transaction's new status. Thunes sometimes needs to review a service request, which causes a transaction to initially respond with a pending status. The check status request requires you to include the request ID from the pending transaction response you are checking the status of. The request ID is located in the
id
response field.
Cybersource
recommends that you send a check status request hourly until the status updates from pending.

Endpoints

Production:
POST
https://api.cybersource.com
/pts/v2/refresh-payment-status/
{id}
Test:
POST
https://apitest.cybersource.com
/pts/v2/refresh-payment-status/
{id}
Set the
{id}
to the request ID of the API service you are retrieving.
IMPORTANT
PromptPay does not support a test endpoint. Send all test transactions to the production endpoint.

Response Statuses

Cybersource
responds to your check status request with one of these statuses in the
status
field:
Check Status Responses for a Sale
  • ABANDONED
    : The customer did not complete the payment using the redirect URL.
  • FAILED
    : The service request failed. A failed request can be due to either PromptPay rejecting the transaction or a technical error.
  • FUNDED
    : The settled amount is funded to the merchant bank account.
  • PENDING
    : The service request is accepted but is not completed. Request the check status service to retrieve status updates.
  • SETTLED
    : The sale request is settled for the requested amount.
Check Status Responses for a Refund
  • FAILED
    : The service request failed. A failed request can be due to either PromptPay rejecting the transaction or a technical error.
  • REFUNDED
    : The settled amount is successfully refunded.

Example: Checking a Request Status

Request
{     "clientReferenceInformation": {         "code": "refnum-1234"     },     "paymentInformation": {         "paymentType": {             "method": {                 "name": "PROMPTPAYQR"             },             "name": "eWallet"         }     },     "processingInformation": {         "actionList": "AP_STATUS"     } }
Response to a Successful Request
{     "clientReferenceInformation": {         "code": "refnum-1234"     },     "id": "7721283486886559204881",     "processorInformation": {         "responseDetails": "00001",         "token": "731327025546",         "responseCode": "00001"     },     "reconciliationId": "XEKVNLN9GZIU",     "status": "PENDING" }

SPEI Transaction Requests

SPEI is a bank transfer payment method offered by the Thunes payment service provider (PSP) that you can offer your customers through
Cybersource
. With SPEI you can process payments, refund payments, and retrieve the status of a pending payment or refund.
This section describes how to process SPEI transactions using the
REST API
.

Requirement

You must receive a Thunes merchant ID before you can begin processing payments. Contact your
Cybersource
account manager for more information.

Supported Country and Currency

This table lists the country and currency that is supported by SPEI.
Supported Country and Currency
Supported Country
Country Code
Supported Currency
Currency Code
Mexico
MX
Mexican peso
MXN

Shipping Policy

You can ship purchased goods when the sale status is
SETTLED
.

SPEI by Thunes Transaction Workflow

This workflow describes the sequence of events that comprises a successful SPEI payment and refund.

Figure:

SPEI Transaction Workflow
  1. The customer begins to checkout on your website and chooses the SPEI payment method.
  2. You send a sale API request to
    Cybersource
    . For more information, see Process a Sale.
  3. Cybersource
    responds to you with a
    PENDING
    status, SPEI redirect URL, and sale request ID.
  4. You redirect the customer to the SPEI URL.
  5. The customer completes the checkout using SPEI and is redirected to your website.
  6. You send a check status API request to
    Cybersource
    . For more information, see Check a Status.
  7. Cybersource
    responds to you with a
    SETTLED
    status.
  8. You confirm the payment to the customer.
  9. The customer returns the purchase.
  10. You send a refund API request to
    Cybersource
    with the sale request ID. For more information, see Refund a Payment.
  11. Cybersource
    responds to you with a
    REFUNDED
    status and refund request ID.
  12. You send a check status request to
    Cybersource
    to verify the refund status.
  13. Cybersource
    respond to you with a
    REFUNDED
    status.
  14. You confirm the refund to the customer.

Transaction Statuses Workflow

This workflow shows the statuses that can occur at each stage of processing a sale and refund.

Figure:

Transaction Statuses Workflow
  1. When a customer begins to check out, you send a sale request to
    Cybersource
    and receive one of these possible statuses:
    • FAILED
      : The sale cannot be completed.
    • PENDING
      : The sale request is accepted but is not completed. Send the check status request to retrieve status updates.
  2. You send a check status request to
    Cybersource
    to verify the sale status and receive one of these statuses:
    • ABANDONED
      : The customer did not complete the payment using the redirect URL.
    • FAILED
      : The sale request failed. A failed request can be due to either a rejection or a technical error.
    • PENDING
      : The sale request is accepted but is not completed. Send the check status request as often as necessary to obtain the information that you need.
    • SETTLED
      : The sale request is settled for the requested amount. When the settled amount is deposited into the merchant's bank account, the status updates to
      FUNDED
      .
  3. If a customer returns a purchase, you send a refund request to
    Cybersource
    and receive one of these possible statuses:
    • FAILED
      : The refund request failed.
    • REFUNDED
      : The refund request is accepted but is not completed. Request the check status service to retrieve status updates.
  4. You send a check status request to
    Cybersource
    to verify the refund status and receive one of these statuses:
    • FAILED
      : The refund could not be completed.
    • REFUNDED
      : The settled amount is successfully refunded.

Process a Sale

This section describes how to send a sale request to process a payment.
A sale request authorizes and captures a payment in the same request. A successful sale response includes an SPEI redirect URL and a
PENDING
status. Redirect the customer to the SPEI URL to allow the customer to complete the checkout using their SPEI account. When the customer completes the checkout, the customer is redirected to your website.
When you receive a successful response, save the sale request ID in the
id
response field to perform a follow-on check status request or refund request.

Calculating the Grand Total

Include the grand total in the request by using the
orderInformation.amountDetails.totalAmount
field.

Endpoints

Production:
POST
https://api.cybersource.com
/pts/v2/payments
Test:
POST
https://apitest.cybersource.com
/pts/v2/payments

Processing a Sale

Follow these steps to successfully process sale.
  1. Redirect the customer to the returned URL in the
    processorInformation.paymentUrl
    response field.
    "paymentUrl": "https://payment.limonetikqualif.com/ebanx/Order/PayPage/664069324156"
  2. When the customer completes the checkout using their MercadoPago credentials, the customer is redirected to the merchant website based on the URL that you included in the
    merchantInformation.successUrl
    request field.
  3. Save the request ID in the
    id
    field from the sale response. Include the request ID in a check status request to confirm that the payment is complete.
    "id": "7722074303166341304805"

Example: Processing a Sale

Request
{     "clientReferenceInformation": {         "code": "123"     },     "merchantInformation": {         "cancelUrl": "https://www.valid.merchant.redirect.url.from.request.html?actioncancel",         "failureUrl": "https://www.valid.merchant.redirect.url.from.request.html?actionfailure",         "successUrl": "https://www.valid.merchant.redirect.url.from.request.html?actionsuccess"     },     "paymentInformation": {         "paymentType": {             "method": {                 "name": "SPEI"             },             "name": "bankTransfer"         }     },     "orderInformation": {         "billTo": {             "firstName": "John",             "lastName": "Doe",             "country": "MX"         },         "amountDetails": {             "totalAmount": "100.00",             "currency": "MXN"         }     },     "processingInformation": {         "actionList": [             "AP_SALE"         ]     } }
Response to a Successful Request
{     "_links": {         "void": {             "method": "POST",             "href": "/pts/v2/payments/7722074303166341304805/voids"         },         "billingAgreement": {             "method": "POST",             "href": "/pts/v2/billing-agreements/7722074303166341304805"         },         "self": {             "method": "POST",             "href": "/pts/v2/payments/7722074303166341304805"         },         "refund": {             "method": "POST",             "href": "/pts/v2/payments/7722074303166341304805/refunds"         },         "status": {             "method": "POST",             "href": "/pts/v2/refresh-payment-status/7722074303166341304805"         }     },     "clientReferenceInformation": {         "code": "123"     },     "id": "7722074303166341304805",     "message": "Request was processed successfully.",     "orderInformation": {         "amountDetails": {             "totalAmount": "100.00",             "currency": "MXN"         }     },     "processorInformation": {         "responseDetails": "00001",         "paymentUrl": "https://payment.limonetikqualif.com/ebanx/Order/PayPage/664069324156",         "transactionId": "664069324156",         "responseCode": "00001"     },     "reconciliationId": "XFZ55M4PH5H4",     "status": "PENDING",     "submitTimeUtc": "2026-02-27T15:50:33Z" }

Response Statuses for Processing a Sale

Cybersource
responds to your sale request with one of these statuses in the
status
field:
  • FAILED
    : The sale cannot be completed.
  • PENDING
    : The sale request is accepted but is not completed. Send a check status request as often as necessary to obtain the information that you need. For more information, see Check a Status.

Check a Status

This section describes how to retrieve the current status of a sale or refund. Send a check status request to know if a pending sale is settled, or to verify that a refund request is refunded. Use the check status request as often as necessary to obtain the information that you need.
The check status request requires the request ID from the sale or refund response. The request ID is in the
id
response field.

Endpoints

Production:
POST
https://api.cybersource.com
/pts/v2/refresh-payment-status/
{id}
Test:
POST
https://apitest.cybersource.com
/pts/v2/refresh-payment-status/
{id}
Set the
{id}
to the request ID of the API service you are retrieving.

Example: Checking a Status

Request
{     "clientReferenceInformation": {         "code": "refnum-1234"     },     "paymentInformation": {         "paymentType": {             "method": {                 "name": "SPEI"             },             "name": "bankTransfer"         }     },     "processingInformation": {         "actionList": ["AP_STATUS"]     } }
Response to a Successful Request
{     "clientReferenceInformation": {         "code": "refnum-1234"     },     "id": "7722074988026482804807",     "processorInformation": {         "responseDetails": "00001",         "token": "664069324156",         "responseCode": "00001"     },     "reconciliationId": "XFZ3YM4R2ZM3",     "status": "PENDING" }

Response Statuses for Checking a Status

Cybersource
responds to your check status request with one of these statuses in the
status
field:
Check Status Responses for a Sale
  • ABANDONED
    : The customer did not complete the payment using the redirect URL.
  • FAILED
    : The service request failed. A failed request can be due to either SPEI rejecting the transaction or a technical error.
  • FUNDED
    : The settled amount is funded to the merchant bank account.
  • PENDING
    : The service request is accepted but is not completed. Request the check status service to retrieve status updates.
  • SETTLED
    : The sale request is settled for the requested amount.
Check Status Responses for a Refund
  • FAILED
    : The service request failed. A failed request can be due to either SPEI rejecting the transaction or a technical error.
  • REFUNDED
    : The settled amount is successfully refunded.

Refund a Payment

This section describes how to refund a payment. You can refund a settled payment for the full amount or a partial amount by sending a refund request. Multiple partial refund requests are also supported, and the total amount of all of the refund requests must be less than the settled amount.
Requesting a refund requires the sale request ID from the sale response. The sale request ID is in the
id
response field.

Endpoints

Production:
POST
https://api.cybersource.com
/pts/v2/payments/
{id}
/refunds
Test:
POST
https://apitest.cybersource.com
/pts/v2/payments/
{id}
/refunds
The
{id}
is the request ID contained in the original transaction request.

Example: Refunding a Payment

Request
{     "clientReferenceInformation": {         "code": "refnum-1234"     },     "paymentInformation": {         "paymentType": {             "method": {                 "name": "SPEI"             },             "name": "bankTransfer"         }     },     "processingInformation": {         "actionList": "AP_REFUND"     },     "orderInformation": {         "amountDetails": {             "totalAmount": "600.00",             "currency": "MXN"         }     } }
Response to a Successful Request
{     "_links": {         "self": {             "method": "GET",             "href": "/pts/v2/refunds/7684136117536580704805"         },         "status": {             "method": "POST",             "href": "/pts/v2/refresh-payment-status/7684136117536580704805"         }     },     "clientReferenceInformation": {         "code": "refnum-1234",         "returnReconciliationId": "NISTFJ987YPM"     },     "id": "7684136117536580704805",     "orderInformation": {         "amountDetails": {             "currency": "MXN"         }     },     "processorInformation": {         "responseDetails": "00006",         "transactionId": "560121718645",         "responseCode": "00006"     },     "reconciliationId": "XFZ3ZKAU0MC3",     "refundAmountDetails": {         "refundAmount": "600.00"     },     "status": "REFUNDED",     "submitTimeUtc": "2026-01-14T18:00:13Z" }

Response Statuses for Refunding a Payment

Cybersource
responds to your refund request with one of these statuses in the
status
field:
  • FAILED
    : The refund request failed.
  • REFUNDED
    : The refund request is accepted but is not completed. Send a check status request to verify that the status is refunded. For more information, see Check a Status.

Token Transaction Requests

Token is a payment method offered by the Thunes payment service provider (PSP) that you can offer your customers through
Cybersource
. You can process a payment by sending a sale API request to
Cybersource
.
Cybersource
sends your request to Thunes. Thunes approves the transaction and sends the request to the processor for settlement. You can also send a check status API request to retrieve status updates of the processing sale. Token does not support refunds. To issue a refund to the customer, you must provide an alternative method of reimbursement, such as cash or in-store credit.

Requirements

You must have a merchant ID and a Thunes API key for each country in which you process transactions. Contact your
Cybersource
account manager for more information.

Supported Currencies

This table lists the currencies supported by Token.
Supported Currencies and Currency Codes
Currency
Currency Code
IDR
Indonesian rupiah
MYR
Malaysian ringgit
PHP
Philippine peso

Shipping Policy

You can ship purchased goods when the sale status is
SETTLED
.

Token by Thunes Payment Workflow

This workflow describes the sequence of events that comprises a successful Token payment.

Figure:

Token by Thunes Payment Workflow
  1. The customer begins to checkout on the merchant's website and chooses the Token payment method.
  2. The merchant sends a sale API request to
    Cybersource
    . For more information, see Process a Sale.
  3. Cybersource
    responds to the merchant with the
    PENDING
    status, a redirect URL, and a request ID.
  4. The merchant redirects the customer to the URL.
  5. The customer completes the checkout using Token and is redirected to the merchant website.
  6. The merchant sends periodic check status API requests to
    Cybersource
    with the request ID. For more information, see Check a Request Status.
  7. Cybersource
    responds to the merchant with the
    SETTLED
    status when the payment is complete.
  8. The merchant displays a payment confirmation to the customer.

Transaction Statuses Workflow

This workflow describes the sequence of possible statuses you can receive when processing a Token transaction.
  1. The merchant sends a sale API request to
    Cybersource
    and receives one of these possible statuses:
    • FAILED
      : The sale cannot be completed.
    • PENDING
      : The sale request is accepted but is not completed. Request the check status service to retrieve status updates.
  2. The merchant sends a check status API request to
    Cybersource
    to verify the status of the sale and receives one of these statuses:
    • ABANDONED
      : The customer did not complete the payment using the redirect URL.
    • FAILED
      : The service request failed. A failed request can be due to either Token rejecting the transaction or a technical error.
    • PENDING
      : The sale request is accepted but is not completed. Request the check status service again after 60 minutes to retrieve a status update.
    • SETTLED
      : The sale request is settled for the requested amount. When the settled amount is deposited into the merchant's bank account, the status updates to
      FUNDED
      .

Process a Sale

Send a sale request to authorize and capture a payment in the same request. A successful sale response includes a redirect URL and a pending status. Redirect the customer to the URL to allow the customer to complete the checkout using Token. When the customer completes the checkout, the customer is redirected to the merchant website using the success-URL provided in the sale request.

Line Items

Line items are included in a request in the
lineItem[]
array.
For more information about how to properly format line items in your request, see Using Line Items.

Tax Amounts

You can include the tax amount for every type of purchased product in the
orderInformation.lineItems[].taxAmount
field when you request the sale service.

Calculating the Grand Total

Include the grand total in the request by using the
orderInformation.amountDetails.totalAmount
field.

Endpoints

Production:
POST
https://api.cybersource.com
/pts/v2/payments
Test:
POST
https://apitest.cybersource.com
/pts/v2/payments

Response Statuses

Cybersource
responds to your sale request with one of these statuses in the
status
field:
Sale Status
  • FAILED
    : The sale cannot be completed.
  • PENDING
    : The sale request is accepted but is not completed. Request the check status service every 60 minutes to retrieve status updates. See Check a Request Status.
When you send a check status request to retrieve an updated sale status, these are the possible responses:
Check Status for a Sale
  • ABANDONED
    : The customer did not complete the payment using the redirect URL.
  • FAILED
    : The sale cannot be completed.
  • FUNDED
    : The settled amount is funded to the merchant bank account.
  • PENDING
    : The sale request is accepted but is not complete. Continue sending the check status request every 60 minutes.
  • SETTLED
    : The sale request is settled for the requested amount. You cannot receive a settled status until the customer has completed checking out.

Processing a Sale

Follow these steps to successfully process sale.
  1. Redirect the customer to the returned URL in the
    paymentUrl
    response field.
    "paymentUrl": "https://payment.limonetikqualif.com/Token/Order/PayPage/182812121973"
  2. When the customer completes the checkout using their Token credentials, the customer is redirected to the merchant website based on the URL that you included in the
    merchantInformation.successUrl
    field.
  3. Save the request ID in the
    id
    field from the sale response. Include the request ID in a check status request to confirm that the payment is complete.
    "id": "7721273045556004704806"

Example: Processing a Sale

Request
{     "clientReferenceInformation": {         "code": "123"     },     "merchantInformation": {         "cancelUrl": "https://www.valid.merchant.redirect.url.from.request.html?actioncancel",         "failureUrl": "https://www.valid.merchant.redirect.url.from.request.html?actionfailure",         "successUrl": "https://www.valid.merchant.redirect.url.from.request.html?actionsuccess"     },     "paymentInformation": {         "paymentType": {             "method": {                 "name": "TOKEN"             },             "name": "bankTransfer"         }     },     "orderInformation": {         "billTo": {             "firstName": "John",             "lastName": "Doe",             "country": "FR"         },         "amountDetails": {             "totalAmount": "100.00",             "currency": "EUR"         }     },     "processingInformation": {         "actionList": [             "AP_SALE"         ]     } }
Response to a Successful Request
{     "_links": {         "void": {             "method": "POST",             "href": "/pts/v2/payments/7721273045556004704806/voids"         },         "billingAgreement": {             "method": "POST",             "href": "/pts/v2/billing-agreements/7721273045556004704806"         },         "self": {             "method": "POST",             "href": "/pts/v2/payments/7721273045556004704806"         },         "refund": {             "method": "POST",             "href": "/pts/v2/payments/7721273045556004704806/refunds"         },         "status": {             "method": "POST",             "href": "/pts/v2/refresh-payment-status/7721273045556004704806"         }     },     "clientReferenceInformation": {         "code": "123"     },     "id": "7721273045556004704806",     "message": "Request was processed successfully.",     "orderInformation": {         "amountDetails": {             "totalAmount": "100.00",             "currency": "EUR"         }     },     "processorInformation": {         "responseDetails": "00001",         "paymentUrl": "https://payment.limonetikqualif.com/Token/Order/PayPage/182812121973",         "transactionId": "182812121973",         "responseCode": "00001"     },     "reconciliationId": "XFZ3YLJFB34Y",     "status": "PENDING",     "submitTimeUtc": "2026-02-26T17:35:05Z" }

Check a Request Status

You can retrieve the status of a pending sale or refund by sending a check status request.
The check status service is a follow-on service used to retrieve status updates of a pending sale.
When a pending status updates, a check status response includes the transaction's new status. Thunes sometimes needs to review a service request, which causes a transaction to initially respond with a pending status. The check status request requires you to include the request ID from the pending transaction response you are checking the status of. The request ID is located in the
id
response field.
Cybersource
recommends that you send a check status request hourly until the status updates from pending.

Endpoints

Production:
POST
https://api.cybersource.com
/pts/v2/refresh-payment-status/
{id}
Test:
POST
https://apitest.cybersource.com
/pts/v2/refresh-payment-status/
{id}
Set the
{id}
to the request ID of the API service you are retrieving.

Response Statuses

Cybersource
responds to your check status request with one of these statuses in the
status
field:
Check Status Responses for a Sale
  • ABANDONED
    : The customer did not complete the payment using the redirect URL.
  • FAILED
    : The service request failed. A failed request can be due to either Token rejecting the transaction or a technical error.
  • FUNDED
    : The settled amount is funded to the merchant bank account.
  • PENDING
    : The service request is accepted but is not completed. Request the check status service to retrieve status updates.
  • SETTLED
    : The sale request is settled for the requested amount.
Check Status Responses for a Refund
  • FAILED
    : The service request failed. A failed request can be due to either Token rejecting the transaction or a technical error.
  • REFUNDED
    : The settled amount is successfully refunded.

Example: Checking a Request Status

Request
{     "clientReferenceInformation": {         "code": "refnum-1234"     },     "paymentInformation": {         "paymentType": {             "method": {                 "name": "TOKEN"             },             "name": "bankTransfer"         }     },     "processingInformation": {         "actionList": "AP_STATUS"     } }
Response to a Successful Request
{     "clientReferenceInformation": {         "code": "refnum-1234"     },     "id": "7721275080676061504806",     "processorInformation": {         "responseDetails": "00001",         "token": "182812121973",         "responseCode": "00001"     },     "reconciliationId": "XFZ3YLJFB351",     "status": "PENDING" }

TrueLayer Transaction Requests

TrueLayer is a payment method offered by the Thunes payment service provider (PSP) that you can offer your customers through
Cybersource
. You can process a payment by sending a sale API request to
Cybersource
.
Cybersource
sends your request to Thunes. Thunes approves the transaction and sends the request to the processor for settlement. You can also send a check status API request to retrieve status updates of the processing sale. TrueLayer does not support refunds. To issue a refund to the customer, you must provide an alternative method of reimbursement, such as cash or in-store credit.

Requirements

You must have a merchant ID and a Thunes API key for each country in which you process transactions. Contact your
Cybersource
account manager for more information.

Shipping Policy

Goods can be shipped when the sale status is
SETTLED
.

TrueLayer by Thunes Payment Workflow

This workflow describes the sequence of events that comprises a successful TrueLayer payment.

Figure:

TrueLayer by Thunes Payment Workflow
  1. The customer begins to checkout on the merchant's website and chooses the TrueLayer payment method.
  2. The merchant sends a sale API request to
    Cybersource
    . For more information, see Process a Sale.
  3. Cybersource
    responds to the merchant with the
    PENDING
    status, a redirect URL, and a request ID.
  4. The merchant redirects the customer to the URL.
  5. The customer completes the checkout using TrueLayer and is redirected to the merchant website.
  6. The merchant sends periodic check status API requests to
    Cybersource
    with the request ID. For more information, see Check a Request Status.
  7. Cybersource
    responds to the merchant with the
    SETTLED
    status when the payment is complete.
  8. The merchant displays a payment confirmation to the customer.

Transaction Statuses Workflow

This workflow describes the sequence of possible statuses you can receive when processing a sale.
  1. The merchant sends a sale API request to
    Cybersource
    and receives one of these possible statuses:
    • FAILED
      : The sale cannot be completed.
    • PENDING
      : The sale request is accepted but is not completed. Request the check status service to retrieve status updates.
  2. The merchant sends a check status API request to
    Cybersource
    to verify the status of the sale and receives one of these statuses:
    • ABANDONED
      : The customer did not complete the payment using the redirect URL.
    • FAILED
      : The service request failed. A failed request can be due to either a rejected transaction or a technical error.
    • PENDING
      : The sale request is accepted but is not completed. Request the check status service again after 60 minutes to retrieve a status update.
    • SETTLED
      : The sale request is settled for the requested amount. When the settled amount is deposited into the merchant's bank account, the status updates to
      FUNDED
      .

Process a Sale

Send a sale request to authorize and capture a payment in the same request. A successful sale response includes a redirect URL and a pending status. Redirect the customer to the URL to allow the customer to complete the checkout using TrueLayer. When the customer completes the checkout, the customer is redirected to the merchant website using the success-URL provided in the sale request.

Line Items

Line items are included in a request in the
lineItem[]
array.
For more information about how to properly format line items in your request, see Using Line Items.

Tax Amounts

You can include the tax amount for every type of purchased product in the
orderInformation.lineItems[].taxAmount
field when you request the sale service.

Calculating the Grand Total

Include the grand total in the request by using the
orderInformation.amountDetails.totalAmount
field.

Endpoints

Production:
POST
https://api.cybersource.com
/pts/v2/payments
Test:
POST
https://apitest.cybersource.com
/pts/v2/payments

Response Statuses

Cybersource
responds to your sale request with one of these statuses in the
status
field:
Sale Status
  • FAILED
    : The sale cannot be completed.
  • PENDING
    : The sale request is accepted but is not completed. Request the check status service every 60 minutes to retrieve status updates. See Check a Request Status.
When you send a check status request to retrieve an updated sale status, these are the possible responses:
Check Status for a Sale
  • ABANDONED
    : The customer did not complete the payment using the redirect URL.
  • FAILED
    : The sale cannot be completed.
  • FUNDED
    : The settled amount is funded to the merchant bank account.
  • PENDING
    : The sale request is accepted but is not complete. Continue sending the check status request every 60 minutes.
  • SETTLED
    : The sale request is settled for the requested amount. You cannot receive a settled status until the customer has completed checking out.

Processing a Sale

Follow these steps to successfully process sale.
  1. Redirect the customer to the returned URL in the
    processorInformation.paymentUrl
    response field.
    "paymentUrl": "https://payment.limonetikqualif.com/TrueLayer/Order/PayPage/245940211854"
  2. When the customer completes the checkout using their TrueLayer credentials, the customer is redirected to the merchant website based on the URL that you included in the
    merchantInformation.successUrl
    field.
  3. Save the request ID in the
    id
    field from the sale response. Include the request ID in a check status request to confirm that the payment is complete.
    "id": "7721275656246071704806"

Example: Processing a Sale

Request
{     "clientReferenceInformation": {         "code": "123"     },     "merchantInformation": {         "cancelUrl": "https://www.valid.merchant.redirect.url.from.request.html?actioncancel",         "failureUrl": "https://www.valid.merchant.redirect.url.from.request.html?actionfailure",         "successUrl": "https://www.valid.merchant.redirect.url.from.request.html?actionsuccess"     },     "paymentInformation": {         "paymentType": {             "method": {                 "name": "TRUELAYER"             },             "name": "bankTransfer"         }     },     "orderInformation": {         "billTo": {             "firstName": "John",             "lastName": "Doe",             "country": "FR"         },         "amountDetails": {             "totalAmount": "100.00",             "currency": "EUR"         }     },     "processingInformation": {         "actionList": [             "AP_SALE"         ]     } }
Response to a Successful Request
{     "_links": {         "void": {             "method": "POST",             "href": "/pts/v2/payments/7721275656246071704806/voids"         },         "billingAgreement": {             "method": "POST",             "href": "/pts/v2/billing-agreements/7721275656246071704806"         },         "self": {             "method": "POST",             "href": "/pts/v2/payments/7721275656246071704806"         },         "refund": {             "method": "POST",             "href": "/pts/v2/payments/7721275656246071704806/refunds"         },         "status": {             "method": "POST",             "href": "/pts/v2/refresh-payment-status/7721275656246071704806"         }     },     "clientReferenceInformation": {         "code": "123"     },     "id": "7721275656246071704806",     "message": "Request was processed successfully.",     "orderInformation": {         "amountDetails": {             "totalAmount": "100.00",             "currency": "EUR"         }     },     "processorInformation": {         "responseDetails": "00001",         "paymentUrl": "https://payment.limonetikqualif.com/TrueLayer/Order/PayPage/245940211854",         "transactionId": "245940211854",         "responseCode": "00001"     },     "reconciliationId": "XFZ3YLJFB353",     "status": "PENDING",     "submitTimeUtc": "2026-02-26T17:39:27Z" }

Check a Request Status

You can retrieve the status of a pending sale or refund by sending a check status request.
The check status service is a follow-on service used to retrieve status updates of a pending sale.
When a pending status updates, a check status response includes the transaction's new status. Thunes sometimes needs to review a service request, which causes a transaction to initially respond with a pending status. The check status request requires you to include the request ID from the pending transaction response you are checking the status of. The request ID is located in the
id
response field.
Cybersource
recommends that you send a check status request hourly until the status updates from pending.

Endpoints

Production:
POST
https://api.cybersource.com
/pts/v2/refresh-payment-status/
{id}
Test:
POST
https://apitest.cybersource.com
/pts/v2/refresh-payment-status/
{id}
Set the
{id}
to the request ID of the API service you are retrieving.

Response Statuses

Cybersource
responds to your check status request with one of these statuses in the
status
field:
Check Status Responses for a Sale
  • ABANDONED
    : The customer did not complete the payment using the redirect URL.
  • FAILED
    : The service request failed. A failed request can be due to either TrueLayer rejecting the transaction or a technical error.
  • FUNDED
    : The settled amount is funded to the merchant bank account.
  • PENDING
    : The service request is accepted but is not completed. Request the check status service to retrieve status updates.
  • SETTLED
    : The sale request is settled for the requested amount.
Check Status Responses for a Refund
  • FAILED
    : The service request failed. A failed request can be due to either TrueLayer rejecting the transaction or a technical error.
  • REFUNDED
    : The settled amount is successfully refunded.

Example: Checking a Request Status

Request
{     "clientReferenceInformation": {         "code": "refnum-1234"     },     "paymentInformation": {         "paymentType": {             "method": {                 "name": "TRUELAYER"             },             "name": "bankTransfer"         }     },     "processingInformation": {         "actionList": "AP_STATUS"     } }
Response to a Successful Request
{     "clientReferenceInformation": {         "code": "refnum-1234"     },     "id": "7684131705196499004805",     "processorInformation": {         "responseDetails": "00001",         "token": "392627898570",         "responseCode": "00001"     },     "reconciliationId": "XFZ55KASM0Y4",     "status": "PENDING" }

Refund a Payment

You can refund a completed payment for the full amount or a partial amount by sending a refund request. Oney supports multiple refund requests when the total amount of all of the refund requests is less than the captured amount.
Requesting a refund requires the request ID from the capture response. The request ID is located in the response field.

Endpoints

Production:
POST
https://api.cybersource.com
/pts/v2/payments/
{id}
/refunds
Test:
POST
https://apitest.cybersource.com
/pts/v2/payments/
{id}
/refunds
The
{id}
is the request ID contained in the original transaction request.

Response Statuses

Cybersource
responds to your refund request with one of these statuses as the
status
field value:
  • FAILED
    : The refund request failed.
  • REFUNDED
    : The refund request is accepted but is not completed. Request the check status service to retrieve status updates. For more information, see Check a Transaction Status.
When you send a check status request to retrieve an updated refund status, these are the possible responses:
  • FAILED
    : The refund request failed.
  • REFUNDED
    : The captured payment is successfully refunded.

Creating a Session

Follow these steps to successfully create a session.
  1. Send a
    POST
    request to the
    https://api.cybersource.com
    /pts/v2/payments
    endpoint and include these required fields:
  2. Include any of these optional fields in the request:
  3. Redirect the customer to the returned URL in the
    processorInformation.paymentUrl
    response field.
  4. When the customer completes the checkout using their Oney credentials, the customer is redirected to the merchant site based on the URL that you included in the
    merchantInformation.successURL
    field.
  5. Save the returned pre-approval token contained in the
    processorInformation.token
    response field. Include the pre-approval token in the authorization request to link the authorization to the session.

Capture an Authorized Payment

The capture request enables you to capture an authorized payment. You can either capture the entire amount in one request or request partial-capture amounts. Oney supports multiple partial-capture requests when the total amount of all captures is less than the authorized amount. Requesting a capture requires the from the authorization response.
You can capture an authorized payment up to 28 days after the payment was authorized.

Calculating the Grand Total

Include the grand total in the request by using the
orderInformation.amountDetails.totalAmount
field.

Endpoints

Production:
POST
https://api.cybersource.com
/pts/v2/payments/
{id}
/captures
Test:
POST
https://apitest.cybersource.com
/pts/v2/payments/
{id}
/captures
Set the
{id}
to the request ID contained in the authorization response.

Response Statuses

The capture service responds with one of these statuses as the response field value:
  • FAILED
    : The capture request failed.
  • PENDING
    : The capture request is accepted but is not settled. Request the check status service to retrieve status updates. See Check a Transaction Status.
  • SETTLED
    : The capture request is settled for the requested amount.
The capture service also responds with a reason code as the field value. For more information on reason codes, see the .

Authorize a Payment

The authorization service confirms a customer's account holds enough funds for the payment.
The authorization request requires the pre-approved token returned in the session response in the
processorInformation.token
field.
When a payment is authorized, it can be captured within 28 days.

Line Items

The authorization service requires you to include line items in your request. Line items are included in a request in the
lineItem[]
array.
For more information on how to use line items, see Using Line Items.

Tax Amounts

Include the tax amount for every type of purchased product in the
orderInformation.lineItems[].taxAmount
field when you request the authorization service.

Calculating the Grand Total

Include the grand total in the request by using the
orderInformation.amountDetails.totalAmount
field.

Endpoints

Production:
POST
https://api.cybersource.com
/pts/v2/payments/
Test:
POST
https://apitest.cybersource.com
/pts/v2/payments/

Response Statuses

The authorization service responds with one of these statuses as the
status
field value:
  • AUTHORIZED
    : The payment is successfully authorized.
  • FAILED
    : The authorization request failed.
  • PENDING
    : The authorization request is accepted but is not authorized. Either the authorization is being audited by Oney or the customer has not completed the checkout using the redirection URL. The merchant should send a check status request to retrieve status updates. Request the check status service to retrieve status updates. See Check a Transaction Status.
The authorization service also responds with a reason code as the
responseCode
field value.