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

# Collect payments with dedicated Account Numbers

> Assign each customer or order its own Fintoc Account Number to identify inbound transfers automatically through metadata, without matching amounts or names.

## What you'll build

Give each customer or order a dedicated Account Number to identify incoming payments. In Mexico, an Account Number is a standardized Mexican bank account number (CLABE). When money reaches the Account Number, Fintoc sends you a webhook with the `metadata` you attached when you created the Account Number. Use the `metadata` to identify the customer or order without parsing bank statements or matching amounts.

## When to use it

Use dedicated Account Numbers for these flows:

* Lending installments, insurance premiums, and software-as-a-service subscriptions.
* Flows with identifiable customers who pay you repeatedly.
* Marketplaces where each buyer deposits funds to a stable Account Number.

## How it works

```text theme={null}
1. Your backend creates an Account Number with metadata.customer_id.
2. Fintoc returns an Account Number.
3. Your customer sends a Transfer to that Account Number.
4. Fintoc fires transfer.inbound.succeeded with your metadata attached.
5. Your backend marks the invoice paid.
```

The sequence includes Mexico's Sistema de Pagos Electrónicos Interbancarios (SPEI) and Chile's Transferencias Electrónicas de Fondos (TEF).

```mermaid theme={null}
sequenceDiagram
    autonumber
    participant You as Your backend
    participant Fintoc
    participant Customer

    You->>Fintoc: Create Account Number (with metadata.customer_id)
    Fintoc-->>You: Account Number 738969…
    You-->>Customer: Show this Account Number on the invoice
    Customer->>Fintoc: SPEI/TEF to that Account Number
    Fintoc->>You: transfer.inbound.succeeded (includes your metadata)
    You->>You: Mark invoice paid
```

## One Account Number per customer, or one per order?

Both patterns work; the right choice depends on how you reconcile payments:

| Consideration          | One per customer                | One per order                 |
| ---------------------- | ------------------------------- | ----------------------------- |
| Account Numbers needed | Number of customers             | Number of open orders         |
| Reconciliation         | Match by customer, then amount  | Match directly to order       |
| Cleanup                | Delete when the customer leaves | Delete when the order is paid |

One Account Number per order lets you match each transfer directly to an order. Disable or delete the Account Number after you receive payment for the order to prevent additional payments.

## Implementation checklist

Follow these steps to implement dedicated Account Numbers:

1. **Create the Account Number** with `metadata`. See [Receive transfers → Create an Account Number](/guides/transfers/inbound-transfers).
2. **Handle the webhook.** Subscribe to `transfer.inbound.succeeded`; read `data.account_number.metadata`. See [Receive transfers → Webhook payload](/guides/transfers/inbound-transfers) for the payload reference.
3. **Enforce business rules.** Set `options.min_amount` and `options.max_amount` to reject incorrect amounts automatically. Disable the Account Number after receiving payment. See [Add logic to Account Numbers](/guides/transfers/inbound-transfers/add-logic-to-clabes).
4. **Clean up unused Account Numbers** when customers leave or orders close. See [Manage your Account Numbers](/guides/transfers/inbound-transfers/manage-your-clabes). You can have up to 1,000,000 Account Numbers. Unused Account Numbers continue accepting transfers. These transfers can add unrelated entries to your reconciliation and statements.
