In some cases you want to reserve funds before confirming the debit — for example, holding funds while an order is being shipped, then confirming once it's delivered.
Create a hold#
Issue a debit with pending: true to create a hold. The funds are reserved but not yet spent:
fctl wallets debit <WALLET_ID> <amount> <asset>The response includes a hold field with the hold ID. Use this ID to confirm or void the hold.
Confirm the hold#
Once the event is confirmed (e.g. order shipped), confirm the hold to finalize the debit:
fctl wallets holds confirm <HOLD_ID>Void the hold#
If the event doesn't happen (e.g. order cancelled), void the hold to release the funds back to the wallet:
fctl wallets holds void <HOLD_ID>Partial confirmation#
You can confirm only part of a hold. For example, if you held 0.75:
fctl wallets holds confirm <HOLD_ID>The remaining $0.25 is automatically released back to the wallet when final: true is set.
Without final: true, partial confirmations leave the hold open — you can confirm additional amounts later until you finalize it.