- Manage transactions – Create, monitor, and manage transactions
- Raw signing – Sign custom transaction payloads
- Cross-chain transactions – Transfer assets across EVM chains
- Estimating transaction fees – Understand and estimate gas fees
- External IDs – Ensure idempotent requests for vaults, wallets, and transactions
A transaction of digital assets refers to the transfer of ownership of digital assets from one party to another. Assets may be transferred between decentralized applications (dApps), individuals or organizations.
After transactions are made, they are verified and recorded as entries on a blockchain network, which is essentially a digital public ledger with no central authority (such as a bank). These entries can be viewed by anyone and cannot be altered.
Digital asset transactions are secured through cryptography. See our Wallets guide for more information on cryptographic keys and how they are used to authenticate transactions.
When you create a transaction in Wallet-as-a-Service, it flows through several stages from initial request to final confirmation on the blockchain. Understanding these stages helps you track transaction progress, handle delays, and troubleshoot issues.
Every transaction follows a predictable path through these stages:
REQUESTED → POLICY CHECK → APPROVAL (legacy path only) → COMPILATION → SIGNATURE → PUBLISHING → CONFIRMATION → CONFIRMEDRipple is rolling out Policy Engine v2, which collects approvals inside the policy check stage. After Ripple enables it in your environment, new transactions no longer emit APPROVAL_CHECK_PENDING or APPROVAL_CHECK_PASSED, and POLICY_CHECK_PASSED means the transaction passed policy checks and all required approvals. Rollout is per environment. See Policy Engine v2: transaction status changes for what to update in your integration.
| Stage | Description | What Happens |
|---|---|---|
| REQUESTED | Transaction created | Your transaction request is received and queued for processing |
| POLICY_CHECK_PENDING | Policy validation in progress | Wallet-as-a-Service verifies the transaction against your configured policies (wallet limits, daily limits, etc.). With Policy Engine v2, the transaction also waits here while it collects any required approvals, so this stage can last for the full approval window. |
| POLICY_CHECK_PASSED | Policy validation passed | Transaction cleared policy checks and is eligible to proceed. With Policy Engine v2, this also means the transaction passed all required approvals. |
| APPROVAL_CHECK_PENDING | Awaiting approvals (legacy) | Legacy path only. If your transaction requires approvals, it waits here for authorized users to approve it. Wallet-as-a-Service doesn't emit this status after Ripple enables Policy Engine v2 in your environment. |
| APPROVAL_CHECK_PASSED | All approvals obtained (legacy) | Legacy path only. Approvers granted all required approvals. Wallet-as-a-Service doesn't emit this status after Ripple enables Policy Engine v2 in your environment. |
| COMPILATION_PENDING | Preparing for blockchain | Transaction is being prepared and encoded for the target blockchain |
| COMPILED | Blockchain-ready | Transaction is now in blockchain format and ready for signing |
| SIGNATURE_PENDING | Waiting for signature | Transaction is waiting to be cryptographically signed by your wallet |
| SIGNED | Signature complete | Transaction has been signed and is ready to submit to the blockchain |
| PUBLISH_PENDING | Submitting to blockchain | Transaction is being submitted to the blockchain network |
| PUBLISHED | On the blockchain | Transaction has been received by the blockchain network |
| CONFIRMATION_PENDING | Waiting for finality | Blockchain is processing the transaction; awaiting block confirmation |
| CONFIRMED | Transaction complete | Transaction is finalized on the blockchain (terminal state) |
Linear Progression: Transactions always move forward through these stages—they never go backward. Once a stage is passed, the transaction continues forward.
Approvals Are Optional: If your wallet doesn't require approvals, the transaction skips the approval stages entirely. On the legacy path, this means the transaction skips APPROVAL_CHECK_PENDING and APPROVAL_CHECK_PASSED. With Policy Engine v2, the transaction collects approvals during POLICY_CHECK_PENDING, and Wallet-as-a-Service never emits the APPROVAL_CHECK_* statuses, whether or not the wallet requires approvals.
Asynchronous Processing: Status updates happen automatically as Wallet-as-a-Service and the blockchain process your transaction. You don't need to take action between stages.
Failure States: At any stage, a transaction may be rejected or fail:
- REJECTED: The transaction was denied (e.g., policy rejection, approval denial)
- FAILED: A technical error occurred during processing
You can check transaction status through:
- Dashboard: View status in the Transactions tab of your wallet
- API: Use the transactions API to programmatically fetch current status
- Webhooks: Get real-time notifications when transactions change status (see Webhooks)