Retry Failed Transaction
Retry a previously failed VAS transaction that belongs to the currently authenticated merchant or sub-merchant.
This is method 2 for failed transaction reprocessing. The main API method is to call POST /purchase with reprocess: true when the caller already has the original purchase details.
Path: POST /transactions/{transactionItemCode}/retry
Authentication Required: Yes
Who Can Call This Endpoint
Only merchant and sub-merchant users can call this endpoint.
The API also verifies ownership of the original transaction. A merchant or sub-merchant can retry only their own failed transactions.
What This Endpoint Does
- Loads the original failed transaction
- Rebuilds the original purchase request from stored transaction data
- Applies any allowed overrides from the request body
- Submits a new purchase attempt as an explicit reprocess
- Preserves the original failed record and returns the new transaction response
Path Parameter
| Parameter | Required | Description |
|---|---|---|
transactionItemCode | Yes | The transactionId of the failed transaction returned by POST /transactions. |
Headers
Authorization: Bearer <YOUR_BEARER_TOKEN>
Content-Type: application/json
Request Body
The request body is optional. If omitted, the API retries the failed transaction with the same values as the original request.
{
"amount": 30.00,
"merchantReference": "INV-2026-04-000123"
}
| Field | Required | Description |
|---|---|---|
amount | No | New amount for the retry. Must be greater than 0. If omitted, the original amount is reused. |
merchantReference | No | Original merchant reference for the failed transaction. If omitted, the original reference is reused automatically. |
Request Rules
- The original transaction must exist.
- The original transaction must have status
FAILED. - The authenticated merchant or sub-merchant must own the original transaction.
- The same original failed transaction cannot be retried twice.
- If a retry creates a new failed transaction, use that latest failed transaction for any further retry.
Success Response
On success, the endpoint returns the same purchase-style response used by POST /purchase, representing the newly created retry attempt.
{
"transactionId": "9f7ac1fe-1d88-4b55-b7ea-4c55ac8f5f29",
"responseCode": "0",
"responseMessage": "Purchase successful",
"responseDateTime": "2026-06-24T11:23:14.102",
"successful": true,
"receipt": {
"amount": 30.0,
"reference": "9f7ac1fe-1d88-4b55-b7ea-4c55ac8f5f29",
"pin": "1234567890"
}
}
Error Responses
Original transaction not found or invalid input:
{
"responseCode": "1001",
"responseMessage": "Transaction not found"
}
Original transaction is not failed:
{
"responseCode": "1001",
"responseMessage": "Only FAILED transactions can be retried"
}
Transaction already retried:
{
"responseCode": "1006",
"responseMessage": "This transaction has already been retried. Please refresh and retry the latest attempt if needed."
}
Transaction does not belong to the current merchant or sub-merchant:
{
"responseCode": "1102",
"responseMessage": "You are not allowed to retry this transaction"
}
For more error codes, see the Error Code Reference.
Best Practices
- Always fetch the latest transaction state before retrying.
- Retry only after confirming the customer did not already receive value.
- Reuse the original
merchantReferencefor the failed transaction when submitting the retry. - Prefer
POST /purchasewithreprocess: trueas the main direct API method when the original purchase payload is available. - Use this endpoint when you want the platform to rebuild the failed purchase from transaction history.
Related Methods
- Main API method:
POST /purchasewithreprocess: true - Secondary API method:
POST /transactions/{transactionItemCode}/retry - Portal method:
Retry Transactionfrom the failed transaction detail panel
Last updated: June 2026