Transaction States
Transactions progress through several states from creation to completion:Status Descriptions
Outgoing Transaction Flow
Your customer/platform sends funds to an external recipient.Step-by-Step
1
Create Quote
Lock in exchange rate and fees:Response:
- Quote ID
- Locked exchange rate
- Expiration time (1-5 minutes)
2
Execute Quote
Initiate the payment:Result:
- Transaction created with status
PENDING - Source account debited immediately
OUTGOING_PAYMENTwebhook sent
3
Processing
Grid handles:
- Currency conversion (if applicable)
- Routing to appropriate payment rail
- Settlement with destination bank/wallet
PROCESSINGWebhook: OUTGOING_PAYMENT with updated status4
Completion or Failure
Success Path:
- Funds delivered to recipient
- Status:
COMPLETED settledAttimestamp populated- Final
OUTGOING_PAYMENTwebhook sent
- Delivery failed (invalid account, etc.)
- Status:
FAILED failureReasonpopulated- Funds automatically refunded to source account
- Final
OUTGOING_PAYMENTwebhook sent
Webhook Payloads
On Creation (PENDING):Same-Currency Transfers
For same-currency transfers without quotes:Transfer-Out (Internal → External)
Transfer-In (External → Internal)
Monitoring Transactions
Via Webhooks (Recommended)
Subscribe to transaction webhooks for real-time updates:Via Polling (Backup)
Query transaction status periodically:Listing Transactions
Query all transactions for a customer or date range:Failure Handling
Common Failure Reasons
Best Practices
Always use webhooks for status updates
Always use webhooks for status updates
Don’t rely solely on polling:
Store transaction IDs for reconciliation
Store transaction IDs for reconciliation
Save transaction IDs to your database:
Handle idempotency
Handle idempotency
Use idempotency keys for safe retries:
Provide clear status messages to users
Provide clear status messages to users
Translate technical statuses to user-friendly messages: