# Payment Lifecycle

Most transactions in Finix follow a similar pattern and lifecyle. The diagram below models out the Payment Lifecycle for Finix:

![Payments Lifecycle](/assets/payment-lifecycle.8ef60ba63110208b23d3dc32cec8b2610910ffebbcd1ca62507773b5a2912b2e.28b10c14.png)

1. Buyer requests to [make a payment](/guides/online-payments/online-payments-quickstart#making-payments-via-api/) with seller.
2. The platform collects the buyers information and creates an `Identity` to represent the buyer in Finix.
3. The platform collects the buyer's payment information and creates a `Payment Instrument` to represent the payment method used by the buyer to complete the payment. Once created, Finix notifies the seller with:
>   - A webhook which only gets sent when a `Payment Instrument` gets created from a [bank account](/additional-resources/developers/webhooks/webhook-events#payment-instrument-created-bank-account), [debit or credit card](/additional-resources/developers/webhooks/webhook-events#payment-instrument-created-card).
  - A payment instrument entry on the `Payment Instruments` tab of the [Finix Dashboard](/guides/managing-operations/finix-dashboard).
4. The platform creates an `Authorization` to reserve the funds on the `Payment Instrument` to be captured (i.e. debited) at a later date, usually within seven days.
>   - An authorization entry also gets added on the `Authorizations` tab of the [Finix Dashboard](/guides/managing-operations/finix-dashboard).
5. If the `Authorization` is successful, `Authorization#state` gets updated to `SUCCEEDED` and `Authorization#expires_at` gets updated with a timestamp. The `Authorization` entry on the `Authorizations` tab of the [Finix Dashboard](/guides/managing-operations/finix-dashboard) also gets updated.
>   - If the `Authorization` fails, `Authorization#state` gets updated to `FAILED.` The `Authorization` entry on the `Authorizations` tab of the [Finix Dashboard](/guides/managing-operations/finix-dashboard) also gets updated. To proceed, the platform needs to submit the `Authorization` again.
6. The platform captures the `Authorization`.
>   - A webhooks gets sent when the [`Authorization` gets captured](/additional-resources/developers/webhooks/webhook-events#authorization-captured).
  - The authorization entry gets updated on the `Authorizations` tab of the [Finix Dashboard](/guides/managing-operations/finix-dashboard).
7. Finix creates a `Transfer` to debit and move funds.
>   - The `id` of the `Transfer` is available in the `Authorization` captured webhook.
  - A `transaction` entry gets added on the `Transactions` tab of the [Finix Dashboard](/guides/managing-operations/finix-dashboard).
8. When funds get debited, the `Transfer` gets updated with a timestamp in `Transfer#ready_to_settle_at`.
>   - A webhooks gets sent when the [`Transfer` is `ready_to_settle`](/additional-resources/developers/webhooks/webhook-events#transfer-ready-to-settle-5).
  - The transaction entry gets updated on the `Transactions` tab of the [Finix Dashboard](/guides/managing-operations/finix-dashboard).
9. Once the timestamp in `Transfer#ready_to_settle_at` passes, the `Transfer` will appear in the next `Settlement` that closes and requires approval.
>   - A webhooks gets sent when a [`Settlement` is ready and waiting for your approval](/additional-resources/developers/webhooks/webhook-events#authorization-created).
  - An settlement entry also gets added on the `Settlements` tab of the [Finix Dashboard](/guides/managing-operations/finix-dashboard).
10. Once the `Settlement` is approved, a funding `Transfer` gets created to credit funds to the seller.
>   - The settlement entry also gets updated on the `Settlements` tab of the [Finix Dashboard](/guides/managing-operations/finix-dashboard).
11. When the funding `Transfer` gets updated to `SUCCEEDED`, the seller can expect funds to hit their bank account in 5-7 business days (depending on their bank).
>   - See [Managing Failed Payouts](/guides/platform-payments/seller-payouts/managing-failed-payouts) for details on how to handle a funding `Transfer` that gets updated to `FAILED.`
  - A webhooks gets sent when the [`Transfer` gets updated](/additional-resources/developers/webhooks/webhook-events#transfer-updated-9).