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

# List Charges

> Every charge of a subscription — the first payment, each renewal and each retry — newest first.

Returns the charges of one subscription, newest first. A charge is a regular payment: its `payment_id` works with [Verify Payment](/api-reference/verify-transaction), and it appears in [Transaction History](/api-reference/transaction-history) with the same `subscription_id` and `billing_reason`.

<RequestExample>
  ```bash cURL theme={null}
  curl -X GET 'https://developers.flouci.com/api/v2/subscriptions/s7Qm3kLpTq2e9hZx0bYw1A/charges?page=1&page_size=10' \
    -H 'Authorization: Bearer <PUBLIC_KEY>:<PRIVATE_KEY>'
  ```
</RequestExample>

### Path Parameters

<ParamField path="subscription_id" type="string" required>
  The subscription whose charges to list.
</ParamField>

### Query Parameters

<ParamField query="page" type="integer" default="1">
  Page number.
</ParamField>

<ParamField query="page_size" type="integer" default="10">
  Items per page, maximum `100`.
</ParamField>

<ResponseExample>
  ```json Success theme={null}
  {
    "success": true,
    "count": 3,
    "next": null,
    "previous": null,
    "results": [
      {
        "payment_id": "Xk29PqRtS8mL4vBn7cDw2Q",
        "status": "SUCCESS",
        "type": "flouci",
        "billing_reason": "subscription_retry",
        "attempt": 1,
        "period_start": "2026-10-30",
        "period_end": "2026-11-30",
        "amount": 15000,
        "fee": 150,
        "tva": 28,
        "created_at": "2026-10-31T09:00:03+01:00",
        "paid_at": "2026-10-31T09:00:05+01:00"
      },
      {
        "payment_id": "Zr41TyUvW3nM8kCq5eFx9B",
        "status": "FAILURE",
        "type": "flouci",
        "billing_reason": "subscription_cycle",
        "attempt": 0,
        "period_start": "2026-10-30",
        "period_end": "2026-11-30",
        "amount": 15000,
        "fee": "",
        "tva": "",
        "created_at": "2026-10-30T09:00:02+01:00",
        "paid_at": "2026-10-30T09:00:02+01:00"
      },
      {
        "payment_id": "AgCKuBm0S5uLPghBo571MQ",
        "status": "SUCCESS",
        "type": "flouci",
        "billing_reason": "subscription_create",
        "attempt": 0,
        "period_start": "2026-09-30",
        "period_end": null,
        "amount": 15000,
        "fee": 150,
        "tva": 28,
        "created_at": "2026-09-30T14:02:11+01:00",
        "paid_at": "2026-09-30T14:05:48+01:00"
      }
    ],
    "name": "developers",
    "code": 0,
    "version": "v2"
  }
  ```
</ResponseExample>

### Charge fields

<ResponseField name="payment_id" type="string" required>
  Identifier of the payment. Use it with [Verify Payment](/api-reference/verify-transaction).
</ResponseField>

<ResponseField name="status" type="string" required>
  Same vocabulary as Verify Payment: `PENDING`, `SUCCESS`, `FAILURE` or `EXPIRED`.
</ResponseField>

<ResponseField name="type" type="string" required>
  Payment method used: `flouci` (wallet), `card`, or `NA` while pending.
</ResponseField>

<ResponseField name="billing_reason" type="string" required>
  Why the charge exists: `subscription_create` (the first, on-session payment), `subscription_cycle` (a scheduled renewal) or `subscription_retry` (a dunning retry after a failed renewal).
</ResponseField>

<ResponseField name="attempt" type="integer" required>
  `0` for the first attempt of a period, then `1`, `2`, `3` for the retries.
</ResponseField>

<ResponseField name="period_start" type="date | null">
  First day of the period this charge pays for. For the first charge it is the creation day.
</ResponseField>

<ResponseField name="period_end" type="date | null">
  Last day (exclusive) of the period this charge pays for. `null` on the first charge.
</ResponseField>

<ResponseField name="amount" type="integer" required>
  Amount in millimes.
</ResponseField>

<ResponseField name="fee" type="integer">
  Your fee in millimes; empty string `""` until computed.
</ResponseField>

<ResponseField name="tva" type="integer">
  VAT on the fee in millimes; empty string `""` until computed.
</ResponseField>

<ResponseField name="created_at" type="timestamp">
  When the charge was created.
</ResponseField>

<ResponseField name="paid_at" type="timestamp | null">
  When the wallet was debited (or the debit failed).
</ResponseField>

<Note>
  Several charges can share the same `period_start`: a failed renewal (`attempt: 0`) followed by its retries (`attempt: 1`, `2`, `3`). At most one of them is `SUCCESS`.
</Note>


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