Transfer approvals apply to on-chain stablecoin transfers (wallet transfers,
batch transfers, and bridging) and offramps. Onramps do not support approval
workflows.
How Transfer Approvals Work
1
Create transfer with approval
Include
requireApproval: true when creating a transfer via API.2
Transfer enters pending state
Transfer status becomes
PENDING_APPROVAL and does not execute.3
Admin notification
Dashboard admins receive email notifications about the pending approval.
4
Approve or reject
Authorized admins review and either approve or reject the transfer.
5
Execution or cancellation
If approved, transfer executes normally. If rejected, transfer is cancelled.
Implementation Options
Transfer approvals work differently depending on where transactions are initiated:Dashboard Approvals
When transfers are created in the HIFI Dashboard:- Members can initiate wallet transfers
- Member-initiated transfers require Admin approval before execution
- Admin-initiated transfers execute without approval
- Members can initiate offramp transactions, and these will always enter the transfer approval flow (require Admin approval)
- Email notifications sent for approvals and rejections
API Approvals
When using the API:- Include
requireApproval: truewhen creating transfers - Transfers enter approval workflow until approved or rejected
- Supported on wallet transfers, batch transfers, bridging, and offramps
- Offramp transactions will enter the transfer approval flow only if
requireApproval: trueis set in the request body - Can be integrated into your application’s approval logic
Creating Transfers with Approval
Add therequireApproval parameter to any supported transaction endpoint.
Request:
Supported Endpoints
TherequireApproval parameter works with:
| Endpoint | Transfer Type |
|---|---|
POST /v2/wallets/transfers | Single wallet transfers |
POST /v2/wallets/transfers/batches | Batch transfers (up to 50 recipients) |
POST /v2/wallets/bridges | Cross-chain bridging transfers |
POST /v2/offramps | Offramp transfers (stablecoin to fiat) |
Bridging and Offramp Note: For bridging transfers and offramps, quotes are
generated after approval. This prevents quotes from expiring while
awaiting review.
Listing Pending Approvals
Retrieve all transactions awaiting approval using the List Transaction Approvals endpoint. Request:- limit (optional): Number of approvals to return (default: 20, max: 100)
- offset (optional): Number of approvals to skip for pagination (default: 0)
Approving Transfers
Approve pending transfers using the Approve Transfer endpoint. Request:- approvalId (required, path): ID of the approval to approve
- comment (optional): Explanation for the approval decision (max 1000 characters)
Rejecting Transfers
Reject pending transfers using the Reject Transfer endpoint. Request:- approvalId (required, path): ID of the approval to reject
- comment (optional): Reason for rejection (max 1000 characters)
Approval Status Flow
Transactions withrequireApproval: true follow this status progression:
| Status | Description |
|---|---|
| PENDING_APPROVAL | Transaction awaiting admin approval |
| APPROVED | Transaction approved and proceeding to execution |
| REJECTED | Transaction rejected and cancelled |
CREATED, INITIATED, PENDING, COMPLETED).
Status Updates: Subscribe to
TRANSFER.APPROVAL.PENDING,
TRANSFER.APPROVAL.APPROVED, and TRANSFER.APPROVAL.REJECTED webhook events
to receive real-time approval notifications. See Webhooks
for setup instructions.Notifications
Email Notifications
Admins receive notifications when:- A transaction requires approval (Member-initiated)
- A transaction needs their review
- Their transaction request is approved
- Their transaction request is rejected (with reason if provided)
Webhook Events
Subscribe to approval events for automated workflows:| Event Type | Description |
|---|---|
| TRANSFER.APPROVAL.PENDING | Transaction created, awaiting approval |
| TRANSFER.APPROVAL.APPROVED | Transaction approved, proceeding to execution |
| TRANSFER.APPROVAL.REJECTED | Transaction rejected and cancelled |
Sample Code
Here’s a complete approval workflow implementation:1
Create a High-Value Transaction That Requires Approval
To trigger an approval workflow for transactions over a certain threshold (e.g., $10k), include If the transaction is flagged for approval, notify approvers (e.g., by email or internal notification).
requireApproval: true in your request:2
List Pending Approvals (for Admin Review)
Fetch all pending transaction approvals to display in an admin dashboard:
3
Approve a Pending Transaction
Admins can approve a pending transaction by submitting an approval action:
4
React to Approval Webhook Events
Use webhook events to automatically notify stakeholders and update your application’s state:Subscribe to webhook endpoints to handle
TRANSFER.APPROVAL.* events.Getting Help
- 📧 Email: [email protected]
- 💬 Slack: Message us in our shared Slack channel
Related Resources
- Wallet Transfers - Single wallet transfers
- Batch Transfers - Multiple recipient transfers
- Bridging - Cross-chain transfers
- Webhooks - Real-time approval notifications
- API Reference - Complete endpoint documentation