Transaction Initial Status
Retrieve the initial status of transactions submitted for a merchant.
This API helps resolve the "two generals" problem: when a request times out, or you get an unexpected error, you can't tell whether VeriCheck received it. Call this API to check whether the transaction was received.
You don't need to call it after every request. A successful response already includes the transaction ID and the same initial status this API returns. Use it only when you don't get a response or get an unexpected error.
Get transactions
Two forms of the endpoint are available.
| Method | Path | Description |
|---|---|---|
| GET | /{merchant_uuid} | Returns the 250 most recent transactions for the merchant. |
| GET | /{merchant_uuid}/{pointer} | Returns all transactions created after the given pointer. |
Path parameters
| Name | Type | Description |
|---|---|---|
merchant_uuid | string | The merchant's UUID. The merchant must be active. |
pointer | integer | Optional. The new_pointer value from a previous response. Only transactions newer than this are returned. |
Example request
curl -u YOUR_API_KEY: \
https://txn-initial-status.vericheck.com/MERCHANT_UUIDPoll for new transactions using the pointer from the last response:
curl -u YOUR_API_KEY: \
https://txn-initial-status.vericheck.com/MERCHANT_UUID/12345Example response
{
"success": true,
"new_pointer": 12345,
"transactions": [
{
"id":"txn_jsruCj",
"created_date":"2026-10-08 12:04:00",
"amount":1234,
"type":"credit",
"sec_code":"WEB",
"description":"Noodels",
"check_number":"",
"customer_name":"Bobby tab",
"routing_number":"123456789",
"account_number":"1234",
"account_type":"savings",
"status":"A",
"status_reason":"This transaction has been accepted"}
]
}Response fields
| Field | Type | Description |
|---|---|---|
| success | boolean | true if the request succeeded. |
| new_pointer | integer | Pass this value as pointer on your next request to get only newer transactions. If there are no new transactions, the pointer you sent is returned unchanged. |
| transactions | array | Transactions, newest first. Empty if there is nothing new. |
Transaction object
| Field | Type | Description |
|---|---|---|
| id | string | Transaction ID (txn_...). This is the same ID returned when the transaction or reversal was created. |
| created_date | string | Date and time the transaction was created (YYYY-MM-DD HH:MM:SS). |
| amount | number | Transaction amount. |
| type | string | debit or credit. Reversals appear as credit transactions. |
| sec_code | string | Standard Entry Class (SEC) code. |
| description | string | Transaction description. |
| check_number | string | Check number, if provided. |
| customer_name | string | Customer name on the account. |
| routing_number | string | Routing number. |
| account_number | string | Last 4 digits of the account number only. |
| account_type | string | Account type. |
| status | string | Initial status. See below. |
| status_reason | string | Reason for the status. |
Status values
| Status | Meaning |
|---|---|
| A | Accepted. The transaction was received and accepted for processing. |
| D | Declined. status_reason explains why. |
| E | Errored. status_reason explains why. |
📘 A is the initial status only
A transaction that later settles, returns, or is voided still shows A here.
Confirming a reversal after a timeout
If a reversal request (PUT /transactions/{txn_id}/reverse) times out and you don’t know whether it was received:
Do not resend immediately.
Call this API and look for a new credit transaction that matches the original account (routing number and last 4 of the account number), the reversal amount, and a recent created_date.
Interpret the result:
status: "A": the reversal was received. Do not resend.
status: "D" or "E": the reversal failed. See status_reason. You can correct the problem and resend.
No matching credit: the reversal was not processed. It is safe to resend.
🚧 Reversal credits are not linked to the original transaction
The response does not include the original transaction’s ID. Match on account, amount, and dateErrors
Errors return HTTP 200 with success: false. Check the success field rather than the HTTP status.
{"success": false, "error": "AUTH_ERROR", "msg": ["Authorization Failed"]}
error msg Cause
AUTH_ERROR Authorization Required No API key was sent.
AUTH_ERROR Authorization Failed The API key was not recognized.
AUTH_ERROR Invalid Merchant UUID The merchant doesn’t exist or isn’t active.
AUTH_ERROR Invalid API Key for Merchant The API key belongs to a different group than the merchant.
SYSTEM_ERROR System Error Unexpected server error. Retry later.
Updated about 4 hours ago
