Refresh transaction status
Re-checks the payment status with the bank and updates the transaction
record if it has changed. Only applicable to
transactions in PENDING or PROCESSING status — others return 400.
Rate-limited per transaction (a short cooldown); calling again too soon
returns 429.
The response's updated field tells you whether anything actually
changed; updated: false can mean the provider status matches what we
already have, the reported status transition isn't allowed and was
ignored, the provider returned an unrecognized status, or the
transaction's session/state changed concurrently during the refresh (a
webhook or the background worker got there first) — check message for
which. If the transaction has no upstream payment id yet and is awaiting
provider confirmation (an uncertain payment-initiation outcome), this
returns 202 Accepted with updated: false instead of calling the
provider. Returns 400 if there is no upstream payment id and the
transaction was never in that reconciliation flow, and 404 if the
transaction does not exist or belongs to a different client.
| Time | Status | User Agent | |
|---|---|---|---|
Retrieving recent requests… | |||
Fetches the latest payment status for a transaction directly from the bank and updates the stored transaction record if the status has advanced. Only transactions still in a non-terminal state (pending or processing) can be refreshed. Returns the updated transaction along with what changed.
Authentication & access
- Requires a client API token:
Authorization: Bearer <token>. - The caller must hold the
transactions.refresh_statuspermission and have the OWNER or OPERATIONS role.
Path parameter
transaction_id(string, required) — the transaction ID to refresh. It must belong to your client.
State preconditions
- The transaction must be in
pendingorprocessingstatus. A transaction already in a terminal state (success,failed,expired,canceled) cannot be refreshed and returns400. - A short per-transaction cooldown is enforced between refreshes. Calling again before the cooldown elapses returns
429with the number of seconds to wait. - If the transaction has not yet produced an upstream payment session and is not in a reconciliation flow, it has nothing to query upstream and the request returns
400.
Behavior
When the transaction has an upstream payment session, the bank is queried for the current payment status and the result is mapped to one of our statuses:
- If the bank reports a newer status and the transition is allowed, the transaction is updated,
updatedistrue, and a status-change event is emitted. Reaching a terminal status also clears any reconciliation flag. - If the reported status matches the current status, or the transition is not allowed, or an unrecognized status is returned, the transaction is left unchanged (
updatedisfalse) andmessageexplains why. - If the transaction advanced to a terminal state or its session changed concurrently (e.g. via an inbound webhook) while the check was in progress, the stale response is not applied; the latest stored state is returned with
updatedset tofalse.
Response
200 OK with a TransactionRefreshStatusResponse:
transaction— the updatedTransactionDetailResponse.provider_status— the raw status string reported by the bank (may benull).previous_status— the transaction status before this refresh.updated— whether this refresh changed the transaction status.message— a human-readable description of the outcome.
A 202 Accepted is returned instead when the transaction has no upstream payment session yet but is in a reconciliation flow (awaiting an inbound confirmation or manual reconciliation). The bank is not queried; the response records the refresh attempt with updated set to false.
Error responses
| Status | When |
|---|---|
400 | Transaction is in a terminal status that cannot be refreshed; transaction has no upstream payment session and is not in a reconciliation flow; the bank rejected the status query |
404 | Transaction not found under this client, or the payment was not found with the bank |
502 | An upstream error occurred while fetching the status from the bank |
503 | The bank is unreachable |
Standard 401 (authentication), 403 (insufficient permission or role), and 429 (rate limit) responses apply to every endpoint and are documented in the Error reference.