Simulate Issuing transactions
Last updated: June 18, 2025
You can simulate different transaction flows for an issued card in the sandbox environment before going live. This enables you to test transactions without making a real purchase to check the merchant and card scheme experience.
Your sandbox Issuing balance is updated to demonstrate the impact on your total sandbox balance.
- You need a Checkout.com test account with Issuing enabled.
- You must set up OAuth 2.0 authentication to authenticate your API requests.
- Configure your webhook receiver to receive webhooks for the various Issuing events.
- Create a test cardholder in the sandbox.
- Issue a test card to the cardholder and make note of the card ID. This must be a single-use, virtual card that is activated on creation.
You can test successful and declined transactions and the webhooks for different events.
In the Dashboard, you can simulate transactions and add events.
Using the API, you can simulate:
- An authorization or pre-authorization
- An incremental authorization
- A clearing
- A reversal
- A refund
- Sign in to the Dashboard.
- If simulating a transaction:
- Using a card, go to Issuing > Cards, and then select the card you want to test with.
- From the transactions list, go to Issuing > Transactions. For this, you require a card ID.
- Select Simulate transaction.
- In the Simulate transaction window > Authorization type dropdown, if the final transaction amount is:
- Estimated – Select
Pre_authorization
. - Known – Select
Authorization
.
- Estimated – Select
- In the Amount box, provide the pre-authorization or authorization amount.
- Optionally, provide the merchant category code.
- Select Simulate.
Next, you can add events in the transaction journey:
- Go to Issuing > Transactions, and select the transaction you want to add events to.
- On the Transaction details page, select Simulate event.
- Select the event type. This can be one of:
Incremental authorization
Reversal
Clearing
Refund
- Provide the amount for the event type.
- Select Simulate.
Call the Simulate authorization endpoint:
card.id
field – Provide the card ID from theCreate a card
response, and optionally the expiry information.transaction
object:type
field – Set topurchase
.- Optionally, provide the
amount
,currency
, andmerchant.category_code
.
authorization_type
field – If the final transaction amount is:- Estimated – Set to
pre_authorization
. - Known – Set to
authorization
, or do not include this field.
- Estimated – Set to
post
https://api.sandbox.checkout.com/issuing/simulate/authorizations
1{2"card": {3"id": "crd_fa6psq242dcd6fdn5gifcq1491",4"expiry_month": 5,5"expiry_year": 20256},7"transaction": {8"type": "purchase",9"amount": 2500,10"currency": "GBP",11"authorization_type": "pre_authorization"12}13}
If you’ve configured the authorization relay service, you receive an authorization request to approve or decline. When the authorization request is processed, you receive an Authorization approved or Authorization declined webhook.
1{2"id": "trx_3vs4p7sagwlu3ejw7gkrssj2s4",3"status": "Authorized"4}
A successful response returns the transaction id
. You need this to simulate clearing the authorization.
The status
can be one of the following:
Authorized
– The authorization was successful.Declined
– The authorization was not successful – For example, due to insufficient funds in your Issuing balance, or spending controls configured in your account.
Information
Single-use cards are automatically revoked after a single successful authorization.
To simulate an incremental authorization:
Call the Simulate incrementing an authorization endpoint, and provide the transaction ID received in the pre-authorization response as the
{id}
path parameter.
In the request body, optionally provide the amount
to increase the pre-authorization by in the minor unit of the transaction currency.
post
https://api.sandbox.checkout.com/issuing/simulate/authorizations/{id}/authorizations
1{2"amount": 35003}
If you’ve configured the authorization relay service, you receive an authorization request to approve or decline. When the authorization request is processed, you receive an Authorization approved or Authorization declined webhook.
1{2"status": "Authorized"3}
A successful response returns the transaction status
. This can be one of the following:
Authorized
– The authorization was successful.Declined
– The authorization was not successful – For example, because the card is invalid or expired, or the cardholder has exceeded the spending limit.
To simulate clearing a successful authorization, call the Simulate clearing endpoint, and provide the transaction ID as the {id}
path parameter.
Optionally, provide the amount
to clear in the minor unit of the transaction currency.
If the presentment amount is lower than the previously authorized amount, only the specified part of the authorized amount is cleared.
If not provided, the full authorization amount is cleared.
post
https://api.sandbox.checkout.com/issuing/simulate/authorizations/{id}/presentments
1{2"amount": 25003}
If successful, you receive a 202
response code.
When an authorization is cleared, you receive a Presentment received webhook containing a clearing_type
field.
This field indicates if your Issuing balance will be credited or debited.
The transaction status is updated in the Dashboard. To view the transaction timeline:
- Sign in to the Dashboard.
- Go to Issuing > Transactions, and select the transaction to view the Transaction details page.
Information
Clearing times in the sandbox environment are different to the live environment due to acquirer and card scheme cut-off times.
To simulate reversing a previous authorization, call the Simulate reversal endpoint:
- Provide the transaction ID as the
{id}
path parameter. - Optionally, provide the
amount
to reverse in the minor unit of the transaction currency.
If the reversal amount is lower than the previously authorized amount, only the specified part of the authorized amount is reversed. If not provided, the full authorization amount is reversed.
post
https://api.sandbox.checkout.com/issuing/simulate/authorizations/{id}/reversals
1{2"amount": 25003}
1{2"status": "Reversed"3}
A successful response returns the transaction status
. This can be one of the following:
Reversed
– The reversal was successful.Declined
– The reversal was not successful – For example, because the reversal amount is greater than the previously authorized amount, or if the authorization has already been cleared.
To simulate a refund of a previous authorization:
- Simulate an authorization request.
- Simulate clearing the authorization.
- Call the Simulate refund endpoint:
- Provide the transaction ID as the
{id}
path parameter. - Optionally, provide the
amount
to refund in the minor unit of the transaction currency.
If the refund amount is lower than the previously cleared amount, only the specified part of the cleared amount is refunded. If not provided, the full cleared amount is refunded.
post
https://api.sandbox.checkout.com/issuing/simulate/authorizations/{id}/refunds
1{2"amount": 25003}
If successful, you receive a 202
response code.