Skip to main content

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:
  1. The sender creates an offer specifying the recipient and amount.
  2. The recipient explicitly accepts or rejects the offer.
This design enables privacy-preserving, compliant, and deterministic settlement between known parties—an important distinction from public blockchains where transactions are typically broadcast and finalized immediately.

Transfer Offer Lifecycle

1

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.
2

Offer is received by destination wallet

The transfer offer becomes visible to the recipient’s Canton wallet
3

Accept or reject the offer

The recipient explicitly accepts or rejects the offer. Accepting executes the transfer, while rejecting declines it with no asset movement.

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 Transfers

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. Request
Response

Get a Specific Transfer Offer

Retrieve details for a single transfer offer by ID. Request
Response

Action 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.
Request
Behavior
  • Transaction status changes from PENDINGACCEPTED
  • executionTransactionHash is set once the transfer is executed
  • Your system can listen to the WALLET.OFFER.ACCEPTED webhook 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

Behavior

  • Transaction status changes from PENDINGREJECTED
  • executionTransactionHash is set once the rejection is recorded
  • Your system can listen to the WALLET.OFFER.REJECTED webhook to trigger downstream actions

Withdraw a Transfer Offer

The sender (i.e., the creator of the transfer offer) may withdraw or cancel the transfer offer at any time before it is accepted or rejected. If a transfer offer is not explicitly withdrawn, it will be locked by the protocol and cannot be used for future transfers. To withdraw a transfer offer, you must provide the original on-chain transaction ID. Request
Behavior
  • The transaction cancellation is broadcast synchronously.
  • Once the offer withdrawal is confirmed, the original on-chain transaction will transition to a CANCELLED state.
  • Your system can listen to the WALLET.OFFER.WITHDRAWN webhook to trigger downstream actions

Offer Statuses

Each Canton transfer offer has a status that reflects its current state:

Webhook Notifications

HIFI sends webhook events to notify your system of transfer offer state changes.
Listen to the WALLET.OFFER.RECEIVED webhook events to be notified whenever a new incoming transfer offer is available for action.

Getting Help

  • 📧 Email: support@hifi.com
  • 💬 Slack: Message us in our shared Slack channel