Transfer approvals apply to on-chain stablecoin transfers (Onchain Transfer, including batch transfers), Bridge, 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. A corresponding TransferApproval record is created with status PENDING.3
Admin notification
Admins who have opted in to transfer approval emails receive a notification about the pending approval.
4
Approve or reject
Authorized admins review and either approve or reject the transfer via
POST /v3/transfer-approvals/{id}/approve or /reject.5
Execution or cancellation
If approved, transfer proceeds (bridge and offramp move to quoting; onchain and batch transfers execute directly). If rejected, the 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, whether the transfer requires approval depends only on the initiating profile’s organization role - not on transfer type:- Member-initiated transfers (wallet transfer, batch transfer, bridge, or offramp) always require Admin approval before execution.
- Admin-initiated transfers execute without approval, regardless of type.
API Approvals
When using the API:- Include
requireApproval: truewhen creating transfers. - Transfers enter the approval workflow until approved or rejected.
- Supported on Onchain Transfer (single and batch), Bridge, and Offramp.
- Transactions enter the transfer approval flow only if
requireApproval: trueis set in the request body - the dashboard role logic above does not apply to API-initiated transfers. - Can be integrated into your application’s approval logic.
Creating Transfers with Approval
Add therequireApproval parameter to any supported transaction endpoint.
Request
The transfer response itself does not embed the approval object - look up the approval separately via
GET /v3/transfer-approvals?status=PENDING or GET /v3/transfer-approvals/{id}.Supported Endpoints
TherequireApproval parameter works with:
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. Cursor-paginated (limit, startingAfter, endingBefore); filter with status.
Request
transferType is one of CRYPTO_TRANSFER, BATCH_CRYPTO_TRANSFER, BRIDGE, OFFRAMP. fromDashboard and initiatorProfileId identify dashboard-initiated approvals; both are absent (false / null) for API-initiated ones. Use this endpoint to build approval dashboards or automate approval workflows.
Getting a Transfer Approval
RequestApproving Transfers
Requestcomment is optional. After approval, onchain and batch transfers execute immediately; bridge and offramp transfers move to quoting (see the quote-timing note above) before executing.
Rejecting Transfers
RequestBoth approve and reject require the calling profile to have the
ADMIN organization role, and the approval must belong to your organization - approvals scoped to other organizations return a 404.Approval Status
Once
APPROVED, the underlying transfer moves into its normal status progression (e.g. CREATED → INITIATED → … → COMPLETED).
Webhooks
Getting Help
- 📧 Email: support@hifi.com
- 💬 Slack: Message us in our shared Slack channel
Related Resources
- Onchain Transfer - Single and batch wallet transfers
- Bridge - Cross-chain transfers
- Offramps - Stablecoin to fiat transfers
- Transactions Overview - Transactions resources