Some financial operations are asynchronous. A request can be received, pending, delayed, timed out, or ambiguous before the final outcome is known.
Use Transaction Status Query (TSQ) before retrying any uncertain money movement request.
Why TSQ matters
TSQ helps you avoid:
duplicate transfers
duplicate bill purchases
incorrect customer fulfillment
false failure states
manual reconciliation delays
Always store the original requestRef when submitting a money movement request.
Which TSQ service to use
Original flow | Original service | Status-query service |
Single transfer |
|
|
Bulk payment |
|
|
Bill payment |
|
|
Dynamic account collection |
|
|
Single transfer TSQ
Use the original transfer requestRef as transactionRequestReference.
{
"serviceType": "TRANSACTION_STATUS_QUERY",
"requestRef": "TSQ20260603001",
"data": {
"isThirdPartyBankTransfer": false,
"transactionRequestReference": "TRF20260603001"
}
}
If the original transfer timed out, wait 30 to 60 seconds before checking.
Bulk payment TSQ
For BULK_PAYMENT_TSQ, use the original bulk payment requestRef as the top-level requestRef. You can omit data.
{
"serviceType": "BULK_PAYMENT_TSQ",
"requestRef": "BULK20260603001"
}
Use the response to inspect each beneficiary status.
Bill payment TSQ
Use both references when available.
{
"serviceType": "BILL_TSQ",
"requestRef": "BTSQ20260603001",
"data": {
"billResponseReference": "BMfoobar",
"BillRequestRef": "BILL20260603001"
}
}
For bills, K00 or k00 can mean the request was received. It does not always mean final biller fulfillment. Use BILL_TSQ when final status matters.
Dynamic account TSQ
Use the account creation reference, account number, or both.
{
"serviceType": "DYNAMIC_COLLECTION_ACCOUNT_TSQ",
"requestRef": "DYTSQ20260603001",
"data": {
"accountCreationRequestRef": "DVA20260603001",
"accountNumber": "3020000000"
}
}
Sending both fields makes reconciliation easier.
Recovery workflow
When a request is uncertain:
Do not submit a replacement request immediately.
Look up the original
requestRef.Run the matching TSQ service.
Store the TSQ response.
Classify the outcome as successful, pending, failed, reversed, or unresolved.
Retry only when the original request is confirmed failed or not accepted.
Escalate with the original request, response, and TSQ result when still unclear.
Common status meanings
Code or status | Meaning | Action |
| Successful or accepted as successful | Store response; confirm with TSQ when final settlement matters. |
| Pending | Wait and check again. |
| Timeout | Run TSQ with the original reference. |
| Request received | Use |
| Aggregator pending | Use |
| Record not found | Confirm identifiers and timing; for recent attempts, wait and check again. |
| Duplicate reference | Check the original request outcome before retrying. |
What to log
For every money movement request, log:
environment
serviceTyperequestRefrequest payload
response payload
user or business context
timestamps
TSQ response
final internal status
Avoid logging full access tokens or API keys.
When to contact support
Contact support when:
TSQ remains pending beyond the expected window
TSQ responses are inconsistent
a customer was debited but fulfillment is unclear
a reversal is expected but not visible
you cannot reconcile a transaction with stored references
Include the original requestRef, timestamps, service type, environment, and TSQ response.