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

# Payments and revenue

> Check payment status, record a cash sale, and reconcile against your payment provider.

Go to **Payments** to see every payment across your business. Payments go straight to your own Paystack, Monnify, or Flutterwave account — WifiPadi never holds your money.

## Payment status

Each payment carries one status. Only **Successful** payments count toward your revenue.

| Status     | Meaning                                                                            |
| ---------- | ---------------------------------------------------------------------------------- |
| Successful | Your provider confirmed the money. This is the only status that counts as revenue. |
| Pending    | The customer started paying but has not finished. It may still succeed.            |
| Failed     | The payment did not go through. The customer was not charged, and got no access.   |
| Reversed   | The payment was confirmed and later refunded or charged back.                      |

Use the tabs above the table to filter by status. Select **Failed** to see attempts that never became money — this is the fastest way to reconcile the WifiPadi total against the transaction list in your provider dashboard.

<Note>
  A high number of failed payments at one location usually means a payment problem, not a customer problem. Check that your provider webhook URL is set — see [Set up your account](/account-setup).
</Note>

## Reconciling with your provider

Your provider dashboard shows **every attempt**. WifiPadi shows **confirmed money**. To compare them:

1. Go to **Payments** and select the **Successful** tab.
2. Compare the total against the settled or successful figure in your provider dashboard — not against the total number of transactions.
3. If the figures still differ, check the **Pending** tab. A payment stuck on pending usually means the webhook URL is missing or wrong.

## Gross, fees and what actually lands

Your provider takes a fee out of every online payment before it settles to your bank. WifiPadi shows you both numbers.

* The **Payments** list has a gross / net toggle. Gross is what the customer paid; net is what reaches you after the provider's fee.
* Selecting a payment shows its fee and settlement breakdown.
* The monthly statement carries both, so your figures agree with your bank rather than with the price list.

<Note>
  The fee shown is the one **your provider reported for that specific payment**, not a percentage we assumed. Where a provider never reported one — an offline sale, or an older payment — WifiPadi estimates it from that market's published rates and rounds the estimate against itself, so the payout it shows you is never flattering.
</Note>

Cash, POS and bank-transfer sales you record by hand carry no fee, because no provider touched them.

## Record a cash or transfer sale

When a customer pays you in cash, by POS, or by bank transfer, record it so your reporting stays accurate and the customer gets access.

1. Go to **Payments**.
2. Fill in the activation form: customer, plan, gateway, and device.
3. Select the method: **Cash**, **POS**, **Transfer**, or **Other**.
4. Enter an amount only if it differs from the plan price. Leave it blank to charge the plan price.
5. Select **Activate access**.

This creates a successful payment and turns on the customer's access immediately.

<Note>
  Recording a manual sale needs the **Operator** role or higher. See [Team and security](/team).
</Note>

## Give access without taking payment

To grant access without recording money — a guest, a staff member, a replacement for a failed payment — go to **Customers**, select the customer, and select **Give access**.

There are two ways to describe what they get:

| Mode              | Use it when                                                                                                          |
| ----------------- | -------------------------------------------------------------------------------------------------------------------- |
| **Existing plan** | The grant matches something on your price list.                                                                      |
| **Custom amount** | It does not. Set the data, the time, the devices, or unlimited, without creating a plan you would then have to hide. |

Either way this **replaces** any active plan immediately and records no payment, so your revenue figures are untouched.

### Top up instead, to add rather than replace

**Give access** starts the customer over. When you want to add to what they already have, use **Top up** on the same page.

A top-up adds data or time to the plan they are on. Data they have already used stays used, and their devices stay attached — nothing restarts. It is the right action for a customer who ran out early, or one whose plan you want to extend without them losing the devices they have already connected.

<Note>
  A top-up also works on a plan that has already expired, which is exactly the situation it usually gets used in.
</Note>

For an allowance that should repeat on its own — staff who get 10 GB every month — set up a [recurring data grant](/automations) rather than doing this by hand.

## Customer wallets

A customer can top up a balance and spend it on plans later. The top-up is the moment money reaches you, so that is when it counts as revenue. A later plan purchase from that balance gives the customer access but adds no new money — it is already yours.

This is why the **What sells here** card on a location page can show more than **Cash collected**. Both numbers are correct; they answer different questions. See [Read your dashboard](/dashboard).
