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

# Deposit Flow

> How to collect payments from customers via mobile money, bank checkout, or card

A deposit is a collection — money moves from your customer into your Kotani Pay deposit balance. There are three collection methods: mobile money, bank checkout, and card.

***

## Before You Start

* An API key — see [API Keys](/v3/getting-started/api-keys)
* A fiat wallet for the currency you're collecting in
* A customer record for the person paying — see [Create Customer](/v3/api-reference/customers/mobile-money/create)
* A publicly reachable `callbackUrl` on your server

***

## Mobile Money Deposit

The most common collection method across Kenya, Uganda, Tanzania, Ghana, and other markets.

**1. Create the customer** if you haven't already. The customer record holds the phone number and network details needed to trigger the collection.

**2. Initiate the deposit** — call [POST /api/v3/deposit/mobile-money](/v3/api-reference/deposits/mobile-money) with your `callbackUrl`. The API responds immediately with a `PENDING` transaction. The customer has not paid yet.

**3. The customer confirms.** Depending on the network:

* M-PESA / Airtel — STK push, customer enters PIN to approve
* MTN / others — USSD prompt or SMS confirmation

**4. Kotani Pay notifies you** via your `callbackUrl` when the transaction settles:

* `SUCCESSFUL` — funds collected, your deposit balance will be credited
* `FAILED` — collection failed (declined, insufficient funds, timeout)

<Note>
  If you have a webhook secret configured, the callback arrives in a signed envelope with `X-Kotani-Signature`, `X-Kotani-Event`, and `X-Kotani-Integrator` headers. Without a secret, the transaction fields are posted directly to your `callbackUrl`. See [Webhooks](/v3/essentials/webhooks).
</Note>

**5. Poll for status** if needed — [GET /api/v3/deposit/mobile-money/status/:reference\_id](/v3/api-reference/deposits/mobile-money-status).

***

## Bank Checkout Deposit

Kotani Pay generates a checkout URL and the customer completes payment on the bank's hosted page.

**1. Initiate the checkout** — call [POST /api/v3/deposit/bank-checkout](/v3/api-reference/deposits/bank-checkout) with your `callbackUrl` and a `redirectUrl` (where to send the customer after they finish on the bank page).

**2. Redirect the customer** to the `checkoutUrl` in the response. They complete payment there.

**3. Kotani Pay notifies you** via your `callbackUrl` when the bank confirms — same event structure as mobile money.

**4. Poll for status** if needed — [GET /api/v3/deposit/bank-checkout/status/:reference\_id](/v3/api-reference/deposits/bank-checkout-status).

***

## Card Deposit

**1. Initiate the charge** — call [POST /api/v3/deposit/card](/v3/api-reference/deposits/card) with your `callbackUrl`.

**2. Handle 3DS if required.** If the response includes a redirect URL, send the customer there to complete 3D Secure authentication before the charge can settle.

**3. Kotani Pay notifies you** via your `callbackUrl` when the charge settles.

**4. Poll for status** if needed — [GET /api/v3/deposit/card/status/:reference\_id](/v3/api-reference/deposits/card-status).

***

## Monitoring from the Dashboard

1. Log in to [integrator.kotanipay.com](https://integrator.kotanipay.com/)
2. Use the **country and currency selector** to filter by market
3. Navigate to **Collections** in the left sidebar

Each row shows the reference, amount, status, customer, and timestamp. Click any row for the full detail including provider reference and callback history.

<img src="https://mintcdn.com/kotanipay/7Gy1fy1pBwVd38oC/images/dashboard/deposits-list.png?fit=max&auto=format&n=7Gy1fy1pBwVd38oC&q=85&s=61c59ac2cf9657a5e1e777e5d53ee9d3" alt="Collections list in the dashboard" width="1919" height="947" data-path="images/dashboard/deposits-list.png" />

***

<Note>
  Successful deposits land in your **deposit balance**, not your payout balance. To use collected funds for withdrawals, transfer them to your payout balance first — see [Balances & Settlement](/v3/essentials/balances-and-settlement).
</Note>
