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

# Funding sessions

> How funding sessions collect money from a payer through a hosted checkout, a mobile money prompt or an Interac email, and how they reach settled.

A funding session collects a payment from a payer and credits a Nuvion account when it settles. Your server creates the session and receives a webhook when the money arrives. Use it when the payer pays through a flow Nuvion hosts. When the payer sends money to account details you share, use [account details](https://docs.nuvion.co/core-concepts/account-details.md) instead.

## Choose a funding type

| Funding type | Payer experience | What you receive on create |
| - | - | - |
| `open-banking` | Redirected to a hosted bank transfer checkout. | `checkout_url` |
| `momo` | Approves a USSD prompt on their phone. No redirect. | No `checkout_url` |
| `crypto` | Redirected to a hosted crypto checkout. | `checkout_url` and `checkout_id` |
| `interac` | Completes payment from an email sent by Interac. | A security question when authentication is required |

See [Funding sessions](https://docs.nuvion.co/guides/funding-session.md) for a request per type.

## Lifecycle

| Status | Final | Meaning |
| - | - | - |
| `awaiting_user` | No | Created, the payer has not started. |
| `processing` | No | The payer started the transfer. |
| `pending_settlement` | No | Accepted, waiting to settle. |
| `settled` | Yes | Funds are credited to the account. |
| `failed` | Yes | Rejected or could not complete. `failure.code` gives the reason. |
| `expired` | Yes | The payer did not finish before the session expired. |
| `cancelled` | Yes | The session was cancelled. |

Subscribe to `funding_sessions.updated` to follow a session. Credit your own records only when you have retrieved the session and seen `status: "settled"`. See [Confirm state before acting](https://docs.nuvion.co/webhooks/overview.md#confirm-state-before-acting).

## Rules that affect your integration

* **The account must exist in the session currency.** A session for a currency the entity has no account in returns `404 error_resource_not_found` for the account.
* **Checkout URLs come back on create.** `checkout_url` is returned on create for `open-banking` and `crypto`. A retrieve returns it for `open-banking` only, so store it when you create the session.
* **Idempotency.** `unique_reference` is the idempotency key for the session.
* **Failure codes are not exhaustive.** Codes come from the payment provider and can use either letter case, for example `SESSION_EXPIRED`.
* **Sandbox funding.** Only `GBP` and `EUR` Open Banking sessions credit an account in the sandbox. See [Sandbox and testing](https://docs.nuvion.co/sandbox.md).

## Next steps

* [Funding sessions guide](https://docs.nuvion.co/guides/funding-session.md)
* [Funding sessions API reference](https://docs.nuvion.co/api-reference/funding-session.md)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.