Skip to main content
A payout pays a beneficiary in their local currency. Fin.com offers two settlement methods, and the one that applies is decided when the beneficiary is created rather than when you send the money. This guide covers what you need in place first, how each method works, and how to follow a payout through to completion. Everything here follows on from Beneficiary onboarding. If you have not created a beneficiary yet, start there.

Prerequisites

A newly created beneficiary starts in PROCESSING with active = true. It cannot receive a payout until Fin.com moves it to ACTIVE. Listen for the Beneficiary Status webhook rather than sending funds and hoping. A REJECTED beneficiary cannot transact at all: create a new one.
Preview what the payout will cost before you send it with Calculate Exchange Rates. Pass beneficiary_id to get a developer-fee-aware calculation. Your developer_fee on the beneficiary applies as fixed plus (percentage × payout amount).

Which modality applies to you

The transfer modality depends on whether the beneficiary was created with settlement_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.
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.