Prerequisites
Which modality applies to you
The transfer modality depends on whether the beneficiary was created withsettlement_config.auto_settlement set to true or false.
settlement_config is optional at Create Beneficiary. Skip it and auto_settlement is set to true automatically, so a beneficiary created without it settles automatically. The value is returned on the beneficiary record, so check it there if you are unsure which method a given beneficiary uses.
One exception overrides the field. If you maintain prefunded balances with Fin.com, you must always trigger payouts programmatically, regardless of the beneficiary’s
auto_settlement value. Use the without auto-settlement flow below.- With auto-settlement
- Without auto-settlement
auto_settlement: true. Fin.com initiates the fiat payout automatically when crypto is received in the beneficiary’s liquidation address. There is no payout endpoint to call: funding the address is the instruction to pay.How it works
1
Read the liquidation address
Fetch the beneficiary and take
deposit_instruction.liquidation_address, along with the currency and rail it was configured for.2
Send USDC to it
Send the payout amount to that address on the rail the beneficiary was created with.
3
Fin.com confirms the deposit
The
beneficiary.liquidation.deposit webhook fires when funds hit the liquidation address, carrying the amount, the liquidation_address, and the on-chain txn_hash. See Beneficiary Liquidation Deposit.4
The payout settles on its own
Fin.com converts the deposit and pays the beneficiary. Nothing further is required from you.
This method only applies when you are funding each payout with crypto. If you hold a prefunded balance with Fin.com, payouts must be triggered programmatically even for a beneficiary created with
auto_settlement: true.Tracking the payout
All webhook payloads carry HMAC signatures. See Verifying webhooks and Transaction Status.
If a payout fails, funds are returned to the
refund_instruction wallet you set on the beneficiary.