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

# Send payouts to users or suppliers

## What you'll build

From your Fintoc `Account`, you send money to any third-party bank account. In Mexico, payouts use the Sistema de Pagos Electrónicos Interbancarios (SPEI) rail. In Chile, payouts use the Transferencia Electrónica de Fondos (TEF) rail. Each rail sets its own settlement timing. You track every status change through webhooks.

## When to use it

* Loan disbursements and refunds.
* Marketplace payouts to sellers.
* Wallet withdrawals.
* Vendor and supplier payments.

## How it works

```
1. Your backend POSTs /v2/transfers.
2. Fintoc submits to SPEI (MX) or TEF (CL).
3. Webhook fires: transfer.outbound.succeeded / .rejected / .failed.
4. Your backend updates the user or order.
```

```mermaid theme={null}
sequenceDiagram
    autonumber
    participant You as Your backend
    participant Fintoc
    participant Rail as SPEI / TEF

    You->>Fintoc: POST /v2/transfers
    Fintoc-->>You: Transfer pending
    Fintoc->>Rail: Submit
    Rail-->>Fintoc: Settled / rejected
    Fintoc->>You: transfer.outbound.succeeded · .rejected · .failed
```

## Implementation checklist

1. **Fund the source Account.** Send money from your company's external bank account to the `root_account_number` of your Fintoc Account.
2. **Create the transfer.** Full request format, MX and CL examples, counterparty fields: [Send transfers → Create a transfer](/docs/transfers/outbound-transfers).
3. **Handle the webhooks.** Event catalog and status semantics: [Send transfers → Monitor status](/docs/transfers/outbound-transfers).
4. **(Optional) Verify the destination first** if a user typed in the standardized Mexican bank account number (CLABE). See [Verify a CLABE before payout](/docs/transfers/transfers-use-cases/verify-a-clabe-before-paying-out).

## A common pitfall

Webhooks can arrive out of order. Always branch on `data.status`, not on which event arrived first. See [Send transfers → Monitor status](/docs/transfers/outbound-transfers) for details.
