Transfer approvals apply to on-chain stablecoin transfers (wallet transfers, batch transfers, and bridging) only. Onramps and offramps 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 transfers 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
- 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, and bridging
- Can be integrated into your application’s approval logic
Creating Transfers with Approval
Add therequireApproval parameter to any supported transfer 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 |
Bridging Note: For bridging transfers, quotes are generated after approval. This prevents quotes from expiring while awaiting review.
Listing Pending Approvals
Retrieve all transfers awaiting approval using the List Transfer 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
Transfers withrequireApproval: true follow this status progression:
| Status | Description |
|---|---|
| PENDING_APPROVAL | Transfer awaiting admin approval |
| APPROVED | Transfer approved and proceeding to execution |
| REJECTED | Transfer 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 transfer requires approval (Member-initiated)
- A transfer needs their review
- Their transfer request is approved
- Their transfer request is rejected (with reason if provided)
Webhook Events
Subscribe to approval events for automated workflows:| Event Type | Description |
|---|---|
| TRANSFER.APPROVAL.PENDING | Transfer created, awaiting approval |
| TRANSFER.APPROVAL.APPROVED | Transfer approved, proceeding to execution |
| TRANSFER.APPROVAL.REJECTED | Transfer rejected and cancelled |
Sample Code
Here’s a complete approval workflow implementation:1
Create a High-Value Transfer That Requires Approval
To trigger an approval workflow for transfers over a certain threshold (e.g., $10k), include If the transfer 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 transfer approvals to display in an admin dashboard:
3
Approve a Pending Transfer
Admins can approve a pending transfer 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: support@hifi.com
- 💬 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