# The reporting model

How deposits, settled transaction lines, and fee charges relate - and why amounts and fees are two views of the same money.

> **Warning:**
>
> **Beta.** Settlement reporting requires access to be enabled. A valid merchant API key without this access receives `403 Forbidden`. To ask for access, contact <support@doura.ca>.
>
> The contract can still change during the beta. Breaking changes are announced with a deprecation period, as `netAmount` was - see [Deprecated: netAmount](#deprecated-netamount).

The API reports what a payment processor has settled and deposited to a merchant's bank account, at both the settlement (deposit) and individual-transaction level, plus every fee charged to the merchant - per-transaction settlement fees, daily discount fees, and standalone fees like monthly service, equipment, or one-time setup.

## Access and data availability

Access applies to all settlement and fee-charge endpoints, including `GET /fee-charges/{feeChargeId}/components`. Requests still use the merchant's API key and return only that merchant's records.

| Response                    | Meaning and next step                                                                                                                              |
| --------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- |
| `401 Unauthorized`          | The API key is missing or invalid, or the request names a merchant that the key does not authorize. Correct the credentials or merchant selection. |
| `403 Forbidden`             | Settlement reporting access is not enabled. Contact support for access.                                                                            |
| `200 OK` with an empty list | Access is enabled, but no records match the request. Data availability also depends on the merchant's reporting setup and the reports received.    |

An access refusal uses the normal [error envelope](https://doura.ca/docs/get-started/errors-and-rate-limits.md), with `code: 1001`, `status: Rejected`, and `message: "Settlement reporting API access is not enabled for this merchant."`.

## Three resources

| Resource                                                                    | ID prefix | Definition                                                                                                                                                                                              |
| --------------------------------------------------------------------------- | --------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [Settlement](https://doura.ca/docs/glossary/settlement-and-fees.md#settlement)                   | `stl_`    | A record of a processor-reported transfer of payment proceeds to the merchant's bank account. It groups the activity included in one deposit and reports the resulting total.                           |
| [Settled transaction](https://doura.ca/docs/glossary/settlement-and-fees.md#settled-transaction) | -         | A processor-reported line showing how payment or dispute activity contributes to a merchant deposit. It connects the deposit to the original payment activity when a matching transaction is available. |
| [Fee charge](https://doura.ca/docs/glossary/settlement-and-fees.md#fee-charge)                   | `mfc_`    | A record of a merchant cost, a pending monthly total, or one of that total's component fees. Its status states whether it has been billed.                                                              |

```mermaid
flowchart LR
    S["Settlement (stl_)<br/>deposit amount and funding type"] -->|"contains"| ST["Settled transaction<br/>one line per transaction"]
    S -.->|"settlementId, when linked"| F["Fee charge (mfc_)<br/>per transaction, daily, or standalone"]
    ST -->|"transactionId"| T["Transaction (trx_)<br/>GET /transactions"]
```

### Settlements

A settlement is the deposit-level record used to reconcile payment proceeds with the merchant's bank account. Its `amount` is the processor-reported deposit total after the deductions or adjustments applicable to its funding arrangement. Its date, currency, rail, funding type, and transaction lines explain which activity the deposit represents. Both card and ACH settlements can use `Net` or `Gross` funding.

A single deposit can span several processor batches - for example transactions that queued over a weekend or bank holiday and settled together - so the processor batch number is recorded per line item, not on the settlement.

Listed with `GET /settlements` and retrieved individually with `GET /settlements/{settlementId}`.

### Settled transactions

A settled transaction is the deposit-side record of payment activity. Its `transactionType` identifies the activity: `Sale`, `Refund`, `Capture`, `Return`, or `Chargeback`. See [Transaction type](https://doura.ca/docs/settlement-reporting/settlements.md#transaction-type) for each value's meaning.

Each line states the amount attributed to that activity and carries the processor identifiers used for reconciliation. For Card Net and Card Gross, the line's `amount` is the full settled transaction amount; deposit-level card fees and reserve adjustments are not allocated to individual lines. For ACH, the line's `amount` reflects any fees withheld from that line.

Where possible it is matched to a transaction (`trx_` id) - look up the `transactionId` via `GET /transactions` (for example `?filters=id==trx_...`) for full transaction detail.

Listed by settlement date with `GET /settlements/transactions`.

### Fee charges

A fee charge records a cost the merchant owes for processing payments or using related services, such as a transaction processing fee, monthly account service, or equipment charge. It supplies the category, amount, currency, charge date, and description needed to account for that cost. Fees associated with a settlement link to the relevant deposit through `settlementId`, and per-transaction fees can also identify the settled line through `settledTransaction`.

`GET /fee-charges` returns `Billed` fees by charge date. Add `includeInformational=true` to also see `Pending` monthly totals by charge date and `Informational` component fees by assessment date. Only billed fees belong in a billed total. Statement, invoice, and rollup charges are returned only once their billing month is published, on the 10th of the following month; daily fees are returned as they are assessed. See [Fee charges](https://doura.ca/docs/settlement-reporting/fee-charges.md) for the date rules, the publication rule, and the components endpoint.

A monthly card statement's charges are reported as printed and include the fees already withheld from the month's daily deposits. The API does not subtract them; you deduct the period's daily card fees from the statement charges yourself. See [Card statement charges include the daily fees](https://doura.ca/docs/settlement-reporting/fee-charges.md#card-statement-charges-include-the-daily-fees).

See the [Settlement and fees glossary](https://doura.ca/docs/glossary/settlement-and-fees.md) for standalone definitions of funding types, reserves, returns, matching, and the other reporting terms.

## Amounts

All amounts are expressed in the smallest denomination of the currency - cents for USD and CAD.

A settlement's `amount` is the deposit total. Read `type` and `fundingType` together to determine how fees affect it:

| Settlement model | API fields                         | Deposit amount                                                                        |
| ---------------- | ---------------------------------- | ------------------------------------------------------------------------------------- |
| Card Net         | `type: Card`, `fundingType: Net`   | Total deposit of card sales after withheld fees (e.g. Interchange and Discount Fees). |
| Card Gross       | `type: Card`, `fundingType: Gross` | Total deposit of card sales.                                                          |
| ACH Net          | `type: Ach`, `fundingType: Net`    | Total deposit of ACH sales after withheld fees (e.g. ACH transaction fee).            |
| ACH Gross        | `type: Ach`, `fundingType: Gross`  | Total deposit of ACH sales.                                                           |

Card Net and Card Gross are combinations of these two fields, not additional `type` values. A merchant can have different funding terms for card and ACH settlements. See [Settlements](https://doura.ca/docs/settlement-reporting/settlements.md#how-far-the-lines-reconcile-to-the-deposit-total) for the reconciliation rules and examples.

Funding type describes fee withholding. Fee billing dates are separate terms: use each fee charge's `source` and `chargeDate` rather than assuming every gross-funded fee is billed monthly. See [Fee charges](https://doura.ca/docs/settlement-reporting/fee-charges.md#card-net-and-card-gross-fees).

> **Warning:**
>
> Every fee withheld from a deposit is **also** itemized as a fee charge. Do not subtract it from the settlement's `amount` again: the deposit already reflects that deduction. For Card Net, the card line amounts remain before these fees even though the settlement total is after them. The monthly card statement restates the withheld card fees in its own charges, so do not add the daily fees to the statement charges either.

### Signed amounts

Amounts are signed. They are normally positive, but negative when:

* Returns or adjustments in a deposit exceed sales, or
* A single line's own withheld fees exceed what it disbursed

Your reconciliation has to handle negative deposits and negative lines. Treating amounts as unsigned, or filtering out negatives, produces totals that do not match the bank.

### Zero-movement lines

Some settled lines move no money at all - most often a payout the provider could not complete, which leaves a line carrying only the fee the attempt cost, reported as a `Return`.

> **Note:**
>
> These are always returned. They are part of the deposit, and the sum of a deposit's lines is only meaningful with them present. Do not filter them out.

## Deprecated: netAmount

> **Important:**
>
> `netAmount` is the former name of `amount` and is deprecated. It mirrors `amount` for one month from 2026-08-21 and is then removed. Migrate to `amount`.

## Reconciling to a transaction

Settlement reporting tells you what the processor moved; the transaction endpoints tell you what you asked for. To join them, take a settled transaction's `transactionId` and look it up:

```http
GET /transactions?filters=id==trx_01JVGD0BD3D6SRW6A941CPWCJ5
```

See [Retrieving transactions](https://doura.ca/docs/payments/transaction-retrieval.md).
