Skip to main content

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

ParameterRequiredDescription
transactionItemCodeYesThe 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"
}
FieldRequiredDescription
amountNoNew amount for the retry. Must be greater than 0. If omitted, the original amount is reused.
merchantReferenceNoOriginal 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

  1. Always fetch the latest transaction state before retrying.
  2. Retry only after confirming the customer did not already receive value.
  3. Reuse the original merchantReference for the failed transaction when submitting the retry.
  4. Prefer POST /purchase with reprocess: true as the main direct API method when the original purchase payload is available.
  5. Use this endpoint when you want the platform to rebuild the failed purchase from transaction history.
  • Main API method: POST /purchase with reprocess: true
  • Secondary API method: POST /transactions/{transactionItemCode}/retry
  • Portal method: Retry Transaction from the failed transaction detail panel

Last updated: June 2026