> ## Documentation Index
> Fetch the complete documentation index at: https://developer.fin.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Sending Your First Payout

> Understand the payout modalities Fin.com supports, how each one works, and which one applies to the beneficiary you onboarded.

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](/guides/beneficiaries/beneficiary-onboarding). If you have not created a beneficiary yet, start there.

## Prerequisites

| Requirement                             | Detail                                                                                                                                                                                                                                      |
| :-------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| Approved customer                       | The sender's `customer_status` must be `APPROVED`. See [Onboarding individuals](/guides/customers-and-compliance/onboarding-individuals) or [Onboarding businesses](/guides/customers-and-compliance/onboarding-businesses).                |
| An eligible beneficiary                 | Both conditions must hold: `active` is `true` (your switch, via `PATCH /v1/beneficiaries`) and `status` is `ACTIVE` (set by Fin.com). See [Beneficiary onboarding](/guides/beneficiaries/beneficiary-onboarding).                           |
| The liquidation address                 | `deposit_instruction.liquidation_address` on the beneficiary record. System-assigned. This is where you send USDC to trigger a payout. Read it with [Fetch Beneficiary Details](/api-reference/beneficiaries/fetch-beneficiary-details-v2). |
| A prefunded balance, for local currency | Pre-funding is required for all local currency payouts, for example BDT, INR, and EUR. See [Funding your balance](/guides/move-money/funding-your-balance).                                                                                 |

<Warning>
  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](/api-reference/webhooks/beneficiary-status) webhook rather than sending funds and hoping. A `REJECTED` beneficiary cannot transact at all: create a new one.
</Warning>

<Tip>
  Preview what the payout will cost before you send it with [Calculate Exchange Rates](/api-reference/fees-and-fx-rates/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).
</Tip>

## 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`.

```json theme={null}
{
  "settlement_config": {
    "auto_settlement": true
  }
}
```

`settlement_config` is optional at [Create Beneficiary](/api-reference/beneficiaries/create-beneficiary-v3). 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.

<Note>
  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.
</Note>

<Tabs>
  <Tab title="With 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

    <Steps>
      <Step title="Read the liquidation address">
        Fetch the beneficiary and take `deposit_instruction.liquidation_address`, along with the currency and rail it was configured for.

        ```json theme={null}
        {
          "deposit_instruction": {
            "currency": "USDC",
            "rail": "POLYGON",
            "liquidation_address": "0xc0470baa27e383a570226298f598fac0612f1143"
          }
        }
        ```
      </Step>

      <Step title="Send USDC to it">
        Send the payout amount to that address on the rail the beneficiary was created with.
      </Step>

      <Step title="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](/api-reference/webhooks/beneficiary-liquidation-deposit).

        ```json theme={null}
        {
          "data": {
            "beneficiary_id": "5b4ea7ee-9d40-44b3-b857-dd5a890b9313",
            "customer_id": "bea5a6c1-0611-44c6-8c29-a6608e76916c",
            "amount": 3,
            "liquidation_address": "0xade8141fd1aef58dc0a5365a32a6cfe95904c08f",
            "txn_hash": "0x7808238a69057600f0c8e291ffbfde87a74fb81b32fc583231352147770e2751",
            "type": "INDIVIDUAL",
            "active": true
          }
        }
        ```
      </Step>

      <Step title="The payout settles on its own">
        Fin.com converts the deposit and pays the beneficiary. Nothing further is required from you.
      </Step>
    </Steps>

    <Note>
      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`.
    </Note>
  </Tab>

  <Tab title="Without auto-settlement">
    `auto_settlement: false`. Fin.com holds the crypto in the liquidation address until you trigger the payout. Use this when you need control over timing, when you are paying many beneficiaries at once, or whenever you are drawing on a prefunded balance.

    ### Single payout

    <Steps>
      <Step title="Create the transfer">
        Call [Create a Transfer V2](/api-reference/transactions/create-a-transfer-v2) with the `beneficiary_id`, your own `reference_id`, the amount, `source_currency`, `deduct_from`, and `remarks`. Send exactly one of `source_amount` or `destination_amount`, never both. Amounts are integers in cents, and `source_amount` has a minimum of 500 cents. Documents you uploaded against the beneficiary can be carried through here in the `attachments` array.

        ```json theme={null}
        {
          "beneficiary_id": "e710eb60-f1cd-4e70-94df-6b99a7fcf58d",
          "reference_id": "REF-12345-ABC",
          "source_amount": 850,
          "source_currency": "USD",
          "deduct_from": "PREFUNDED_BALANCE",
          "remarks": "Monthly payment for services"
        }
        ```

        Nothing moves at this point. The response returns a `transfer_id` and a `quotation` showing what the beneficiary receives.
      </Step>

      <Step title="Settle it">
        Call [Settle a Transfer V2](/api-reference/transactions/settle-a-transfer-v2) with the `transfer_id`. This is the call that releases the payout, and it returns the `transaction_id` the payout is tracked under.

        ```json theme={null}
        {
          "transfer_id": "0df4252a-7328-4ba3-8b73-6deacdfc623a"
        }
        ```
      </Step>
    </Steps>

    ### Choosing where the funds come from

    You decide which source each payout draws on with the `deduct_from` field on [Create a Transfer V2](/api-reference/transactions/create-a-transfer-v2).

    | Value                 | Funds come from                                                                                             |
    | :-------------------- | :---------------------------------------------------------------------------------------------------------- |
    | `PREFUNDED_BALANCE`   | The USD balance you hold with Fin.com. See [Funding your balance](/guides/move-money/funding-your-balance). |
    | `LIQUIDATION_ADDRESS` | The crypto sent to the beneficiary's liquidation address.                                                   |

    <Warning>
      Only `PREFUNDED_BALANCE` transfers are eligible for refunds if they fail. Weigh that when choosing the source.
    </Warning>

    ### Many payouts at once

    Use [Execute Batch Transfer](/api-reference/transactions/execute-batch-transfer) in place of the create and settle pair. Each item reports separately on `batch.transaction.item.status`, so the outcome of one item tells you nothing about the rest. Check progress with [Fetch Batch Details](/api-reference/transactions/fetch-batch-details).

    <Note>
      V1 remains available at [Create a Transfer](/api-reference/transactions/create-a-transfer) and [Settle a Transfer](/api-reference/transactions/settle-a-transfer) for integrations already built on it. V1 takes a single `amount` and offers no `source_currency` or `deduct_from`, so the choice of funding source is V2 only. A transfer created on V2 must be settled on V2.
    </Note>
  </Tab>
</Tabs>

## Tracking the payout

| Event                             | Fires when                                                  |
| :-------------------------------- | :---------------------------------------------------------- |
| `beneficiary.liquidation.deposit` | USDC hits the beneficiary's liquidation address             |
| `transaction.status`              | The payout changes state, ending at `COMPLETED` or `FAILED` |

All webhook payloads carry HMAC signatures. See [Verifying webhooks](/guides/webhooks/verifying-webhooks) and [Transaction Status](/api-reference/webhooks/transaction-status).

If a payout fails, funds are returned to the `refund_instruction` wallet you set on the beneficiary.
