Skip to main content
Every transaction you submit through the Finrock API moves through a lifecycle tracked by a status field. Understanding each status value — and whether it represents a final outcome or a transitional state — lets you build reliable polling logic, surface accurate information to your end users, and react correctly when a transfer requires intervention.

Status Values

The table below lists every status value the API can return, along with its meaning and whether it is a terminal (no further changes expected) or non-terminal (may still transition) state.

Terminal vs. Non-Terminal Statuses

Statuses fall into two categories that determine how your application should respond. Non-terminal statuses mean the transaction is still in flight. Continue polling the transaction detail endpoint until the status transitions to a terminal value. Implement exponential backoff on your polling loop to avoid hitting rate limits — for example, start at a 5-second interval and double it up to a maximum of 60 seconds. Terminal statuses mean the transaction has reached its final state and will not change. Once you observe a terminal status, you can stop polling and take the appropriate action in your application:

Success

The on-chain transaction is confirmed. Update your internal records, credit the recipient, and send any confirmation notifications.

Failed

The transaction did not complete. Log the failure, surface an error to the user, and allow them to resubmit if appropriate.

Rejected / Blocked / UserCancelled

A policy or human decision stopped the transfer. Notify the requester and log the reason for audit purposes.

AML_Blocked

The transfer was flagged by AML screening. Follow your compliance escalation process before taking any further action.

Handling Specific Statuses

When a transaction enters NeedsApproval, it is awaiting a manual decision from an authorized approver as configured in your Spending Rules. Your application should notify the relevant approvers and avoid submitting a duplicate transfer. Once approved, the status will advance to Processing; if rejected, it will move to Rejected.
AML_Pending is a transient state — the platform is running an automated risk-score lookup. Do not resubmit the transfer at this point. If the lookup completes with an acceptable score, the transfer proceeds automatically. If the score breaches your configured threshold, the status transitions to AML_Blocked. At that point, engage your compliance team before taking any further action. See the AML reference for details on managing blocked transfers.
SweepPending occurs when a transfer is correctly formed and queued but must wait for a prior transfer (often a gas or fee prefund sweep) to settle first. No action is required — the platform will advance the transfer automatically once the dependency resolves.
Signing indicates the transaction payload has been constructed and is awaiting an MPC signing ceremony via the signer service. This state is typically very brief under normal operating conditions. If a transaction remains in Signing for an extended period, contact support@finrock.io.
Poll the GET /dac/v1/transaction/{id} endpoint to retrieve the current status of a specific transaction. Always rely on the API-returned status as the source of truth — do not infer status from on-chain lookups alone, as the platform applies additional policy checks beyond raw blockchain confirmation.