## Overview

Match Reservepay's records against your own: payments and payouts through the API, fees and totals through daily statements, and held funds through balance history. For backfills and month-end reporting, export CSV files.

## Payments and payouts

Use `merchants/filter-payments` for ongoing payment reconciliation:

* **Status and timestamps:** filter by status and `created_at`, `authorized_at`, or `captured_at`.
* **Payment details:** filter by payment method, currency, amount, contact, or fraud finding.
* **Search:** pass full-text terms when you do not have an exact identifier.
* **Dates:** pass one day (`YYYY-MM-DD`), an ISO8601 datetime, a range (`YYYY-MM-DD..YYYY-MM-DD`), or a keyword such as `today`, `yesterday`, `this_month`, or `last_month`.
* **Amounts:** pass an exact value, a range (`1000..5000`), or an open bound (`1000..` or `..5000`).
* **Pagination:** request up to 100 records per page and follow `next` until it is `null`. See [Calling the API](/guides/calling-api-endpoints#pagination).

Use `merchants/filter-payouts` for payouts. It supports status, `created_at`, `paid_at`, `sent_at`, method, currency, amount, bank code, and contact.

For cursor listings without filters, use `merchants/list-payments` or `merchants/list-payouts`.

## Recovering missed updates

If your webhook endpoint was down, or you want a safety net for missed events, compare Reservepay's records with yours for the affected period:

1. Call `merchants/filter-payments` and `merchants/filter-payouts` for the period and compare each status with your records.
2. Check every payment and payout you still have open from before the period with `merchants/find-payment` or `merchants/find-payout`. A filter on `created_at` alone misses older payments that were captured, refunded, or disputed during the period.
3. Check refunds with `merchants/list-refunds-by-payment` and disputes with `merchants/list-disputes`. Neither sends webhooks. See [Disputes](/guides/disputes).

To see whether a specific event reached your endpoint, see [Checking delivery history](/guides/real-time-notifications#checking-delivery-history).

## CSV exports

* **Payments:** call `merchants/request-payment-export` with `start_at` and `end_at` as ISO8601 datetimes. The range applies to `captured_at`.
* **Payouts:** call `merchants/request-payout-export` with `start_at` and `end_at`. The range applies to `paid_at`.
* **Download:** retrieve the result with `merchants/find-export` or `merchants/list-exports`.

Each export can cover up to one month. A user can run one export at a time; another request returns `RATE_LIMIT_EXCEEDED` until the first finishes.

Exports require a signed-in user context. The download URL is returned only to the requesting user and expires one hour after it is issued. Use filtered API results for a background integration authenticated with a merchant API key.

## Balance and holds

`merchants/get-balance` returns your available balance: the `amount` you can pay out right now, in `currency`. Pending debits, such as payouts in progress, are already subtracted.

To see money that isn't available yet, read `merchants/balance-history`. Each entry has a `direction`, a `type`, an `amount`, and a `status` of `ON_HOLD`, `EFFECTIVE`, or `CANCELED`. It also links to the payout, topup, dispute, invoice, or statement it came from.

* **Incoming funds on hold:** Add up the `ON_HOLD` entries with `direction` set to `CREDIT`.
* **Pending debits:** `ON_HOLD` entries with `direction` set to `DEBIT`. These are already subtracted from your available balance, so don't add them to the held total.

Results run from newest to oldest. Follow every page.

## Fees

Payment and payout objects include a `fees` array in find, list, and filter responses. Fee amounts are in subunits.

| Field | Meaning |
| :--- | :--- |
| `fee_id` | Unique fee identifier. |
| `kind` | Fee type. |
| `billing_code` | Billing classification. |
| `unit_amount` | Fixed fee amount. |
| `percentage_amount` | Percentage-based fee amount. |
| `discount_applied` | Discount applied to the fee. |
| `statement_id` | Statement that assigned the fee. |

* **Timing:** fees appear after the daily statement runs, usually on T+1 rather than at capture time.
* **Total:** add `unit_amount` and `percentage_amount`; the fee object has no total field.
* **VAT:** read VAT from the invoice or statement rather than the fee object.
* **CSV:** payment exports include calculated fee and net columns.

## Statements

Call `merchants/list-statements` with a month (`YYYY-MM`) to retrieve one statement per day. Statements are generated overnight for the previous day.

Each statement includes:

* Payment, refund, dispute, and payout amounts and counts
* Fees, net volume, and balance change
* Invoice status
* Download URLs for the statement CSV and PDF
* An invoice PDF URL when an invoice has been issued
