Skip to main content
This feature introduces a maker–checker workflow (“Four Eyes Principle”) to on-chain transfers, ensuring that any transfer initiated by one User must be explicitly approved by another authorized User before it is executed.
This release applies only to on-chain stablecoin transfers (wallet transfers, batch transfers, and bridging).

How Transfer Approvals work

Approvals on Dashboard

  • Members can initiate wallet transfers (onramp/offramp restricted to Admins)
  • Member transfers require Admin approval before execution
  • Email notifications sent for approvals/rejections
  • Admin transfers execute without approval

Approvals on API

A new parameter requireApproval can be included when creating transfers. If set to true, the transfer will enter the approval workflow until it is approved or rejected.

Create Transfer with Approval

curl --request POST \
     --url https://production.hifibridge.com/v2/wallets/transfers \
     --header 'accept: application/json' \
     --header 'content-type: application/json' \
     --data '{
  "currency": "usdc",
  "amount": 100,
  "chain": "POLYGON",
  "source": {
    "userId": "user-id"
  },
  "destination": {
    "userId": "user-id"
  },
  "requireApproval": true
}'
The parameter defaults to false, so existing integrations are unaffected. This gives you the flexibility to define your own rules for when Admin approval is required.

Endpoints

  • POST /wallets/transfers – stablecoin to stablecoin
  • POST /wallets/transfers/batches – stablecoin batch
  • POST /wallets/bridges – stablecoin bridging
Because bridging is quote based, quotes are only generated after approval. This ensures that they do not expire while waiting for review.

Notifications

  • Admins receive email notifications when a transfer is pending approval.
  • Members receive email notifications when their transfer request is approved or rejected.

Webhooks

If your organization has enabled webhooks, you can also listen for transfer approval events:
  • TRANSFER.APPROVAL.PENDING - Request for approval
  • TRANSFER.APPROVAL.APPROVED - Transfer was approved
  • TRANSFER.APPROVAL.REJECTED - Transfer was rejected
I