What Is a Transfer Offer?
On Canton, asset transfers are modeled as transfer offers rather than immediate, unilateral transactions like those found on most public blockchains. A transfer offer represents a two-step, consent-based transfer:- The sender creates an offer specifying the recipient and amount.
- The recipient explicitly accepts or rejects the offer.
Transfer Offer Lifecycle
Sender creates a transfer offer
The sender creates a transfer offer specifying the recipient Canton wallet, token, and amount. The specified amount of the asset is locked and cannot be used while the offer is pending.
Offer is received by destination wallet
The transfer offer becomes visible to the recipient’s Canton wallet
Create Transfer Offer
A transfer offer is created by the sender to propose transferring a specified amount of token to a Canton wallet. The offer remains pending until the recipient takes action. Creating a transfer offer utilizes the existing on-chain transfer functionality. For more details please checkout Creating Single TransfersThe transaction remains in a PENDING state until the recipient accepts or rejects the transfer offer.
Retrieving Transfer Offers
HIFI provides endpoints to retrieve transfer offers for a wallet, including all incoming offers or a specific offer.Get All Incoming Transfer Offers
Retrieve all transfer offers for a specific wallet using wallet id. RequestGet a Specific Transfer Offer
Retrieve details for a single transfer offer by ID. RequestAction Transfer Offer
Once a transfer offer has been received, the recipient can accept or reject the offer. The choice determines whether the asset will be credited into recipient’s wallet or not.A transfer offer must be accepted or rejected by the recipient before it expires. Once the expiration time passes, the offer is no longer valid.
Accept a Transfer Offer
Accepting a transfer offer executes the asset transfer and finalizes the transaction.- The transfer moves the locked asset to the recipient’s wallet.
- The offer status will terminiate at
ACCEPTED.
Response
Response
- Transaction status changes from
PENDING→ACCEPTED executionTransactionHashis set once the transfer is executed- Your system can listen to the
WALLET.OFFER.ACCEPTEDwebhook to trigger downstream actions
Reject a Transfer Offer
Rejecting a transfer offer declines the proposed transfer.- The locked asset is released back to the sender.
- The offer status updates to
REJECTED.
Request
Response
Response
Behavior
- Transaction status changes from
PENDING→REJECTED executionTransactionHashis set once the rejection is recorded- Your system can listen to the
WALLET.OFFER.REJECTEDwebhook to trigger downstream actions
Offer Statuses
Each Canton transfer offer has astatus that reflects its current state:
| Status | Description |
|---|---|
RECEIVED | The offer has been received by the destination wallet and is ready to be acted upon. |
PENDING | The offer is currently in the process of being accepted or rejected. |
ACCEPTED | The recipient has accepted the offer. The transfer has been executed and the asset has been moved. |
REJECTED | The recipient has rejected the offer. No transfer occurred, and the locked asset has been released back to the sender. |
Webhook Notifications
HIFI sends webhook events to notify your system of transfer offer state changes.| Webhook Event | Description |
|---|---|
WALLET.OFFER.RECEIVED | A new transfer offer has been received by the destination wallet and is ready to be acted upon. |
WALLET.OFFER.PENDING | The transfer offer is currently being accepted or rejected. |
WALLET.OFFER.ACCEPTED | The recipient has accepted the offer. The transfer has been executed and the asset moved. |
WALLET.OFFER.REJECTED | The recipient has rejected the offer. No transfer occurred, and the locked asset is released. |
Listen to the
WALLET.OFFER.RECEIVED webhook events to be notified whenever a new incoming transfer offer is available for action.Getting Help
- 📧 Email: [email protected]
- 💬 Slack: Message us in our shared Slack channel
Related Resources
- Wallet Transfers - Single wallet transfers
- Bridging - Cross-chain transfers
- Webhooks - Real-time approval notifications
- API Reference - Complete endpoint documentation