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

# billingCharges

> Page through the merchant's individual signed charge rows across all bills, optionally filtered by bill ID.

**Required scopes:** [`invoices_read`](/docs/api-reference/v3/reference/scopes#scope-invoices_read)

## Arguments

<ResponseField name="after" type="String">
  Opaque cursor from the preceding page.
</ResponseField>

<ResponseField name="before" type="String">
  Opaque cursor from the following page.
</ResponseField>

<ResponseField name="billId" type="String">
  Optional numeric bill ID; omit for the full billing report.
</ResponseField>

<ResponseField name="first" type="Int">
  Charges to return, 1 to 100; defaults to 25.
</ResponseField>

<ResponseField name="last" type="Int">
  Charges to return before a cursor, 1 to 100.
</ResponseField>

## Returns

<ResponseField name="billingCharges" type={<a href="/docs/api-reference/v3/pagination">BillingBillChargeConnection!</a>} required>
  A paginated list of BillingBillCharge items.

  <Expandable title="fields" lazyRender>
    <ResponseField name="edges" type={<a href="/docs/api-reference/v3/pagination">[BillingBillChargeEdge!]!</a>} required>
      The list of edges (each a node plus its pagination `cursor`).

      <Expandable title="fields" lazyRender>
        <ResponseField name="cursor" type="String!" required>
          Opaque cursor for this item; pass to `after`/`before` to page from here.
        </ResponseField>

        <ResponseField name="node" type={<a href="/docs/api-reference/v3/reference/billing/billing-bill-charge">BillingBillCharge!</a>} required>
          The item at this edge.

          <Expandable title="fields" lazyRender>
            <ResponseField name="amount" type={<a href="/docs/api-reference/v3/reference/common/money">Money!</a>} required>
              Signed source charge amount; revenue-share deductions are separate negative rows.
            </ResponseField>

            <ResponseField name="billCurrency" type="String">
              Currency of the owning bill.
            </ResponseField>

            <ResponseField name="billCurrencyAmount" type={<a href="/docs/api-reference/v3/reference/common/money">Money</a>}>
              Amount in bill currency at its frozen rate, or null if no strike exists.
            </ResponseField>

            <ResponseField name="billId" type="String!" required>
              Owning bill ID.
            </ResponseField>

            <ResponseField name="campaignId" type="String">
              Related campaign ID.
            </ResponseField>

            <ResponseField name="carrierFeesMicros" type="String!" required>
              Carrier fees in millionths of the charge currency.
            </ResponseField>

            <ResponseField name="createdAt" type={<a href="/docs/api-reference/v3/reference/common/date-time">DateTime!</a>} required>
              Charge creation time.
            </ResponseField>

            <ResponseField name="customerEmail" type="String">
              Related customer email.
            </ResponseField>

            <ResponseField name="customerFirstName" type="String">
              Related customer first name.
            </ResponseField>

            <ResponseField name="customerLastName" type="String">
              Related customer last name.
            </ResponseField>

            <ResponseField name="fulfillmentGroupId" type="String">
              Related fulfillment group ID.
            </ResponseField>

            <ResponseField name="id" type="String!" required>
              Stable charge ID.
            </ResponseField>

            <ResponseField name="idempotencyKey" type="String!" required>
              Stable source charge key.
            </ResponseField>

            <ResponseField name="includedCount" type="String!" required>
              Included units on this charge.
            </ResponseField>

            <ResponseField name="mmsCount" type="String!" required>
              MMS messages counted by this charge.
            </ResponseField>

            <ResponseField name="note" type="String">
              Charge note in the Billing report.
            </ResponseField>

            <ResponseField name="orderCount" type="String!" required>
              Orders counted by this charge.
            </ResponseField>

            <ResponseField name="orderDate" type={<a href="/docs/api-reference/v3/reference/common/date-time">DateTime</a>}>
              Related order or fulfillment date used by the Billing CSV.
            </ResponseField>

            <ResponseField name="orderId" type="String">
              Related order ID.
            </ResponseField>

            <ResponseField name="orderName" type="String">
              Related order name.
            </ResponseField>

            <ResponseField name="orderNumber" type="String">
              Related order number.
            </ResponseField>

            <ResponseField name="overageCount" type="String!" required>
              Overage units on this charge.
            </ResponseField>

            <ResponseField name="periodEnd" type={<a href="/docs/api-reference/v3/reference/common/date-time">DateTime!</a>} required>
              End of the period this charge covers.
            </ResponseField>

            <ResponseField name="periodStart" type={<a href="/docs/api-reference/v3/reference/common/date-time">DateTime!</a>} required>
              Start of the period this charge covers.
            </ResponseField>

            <ResponseField name="product" type="String">
              Redo product.
            </ResponseField>

            <ResponseField name="recoveredRevenue" type={<a href="/docs/api-reference/v3/reference/common/money">Money</a>}>
              Recovered revenue attributed to this charge.
            </ResponseField>

            <ResponseField name="returnId" type="String">
              Related return ID.
            </ResponseField>

            <ResponseField name="revenueSharePercentage" type={<a href="/docs/api-reference/v3/reference/common/decimal">Decimal</a>}>
              Recorded merchant revenue-share rate, when present.
            </ResponseField>

            <ResponseField name="reversesChargeId" type="String">
              Charge ID reversed by this row.
            </ResponseField>

            <ResponseField name="shipmentId" type="String">
              Related shipment ID.
            </ResponseField>

            <ResponseField name="shopifyOrderId" type="String">
              Related Shopify order ID.
            </ResponseField>

            <ResponseField name="smsCount" type="String!" required>
              SMS messages counted by this charge.
            </ResponseField>

            <ResponseField name="subtype" type="String">
              Charge subtype.
            </ResponseField>

            <ResponseField name="type" type="String!" required>
              Charge type.
            </ResponseField>
          </Expandable>
        </ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="nodes" type={<a href="/docs/api-reference/v3/reference/billing/billing-bill-charge">[BillingBillCharge!]!</a>} required>
      The nodes in this page, without the edge/cursor wrapper — a convenience over `edges`.

      <Expandable title="fields" lazyRender>
        <ResponseField name="amount" type={<a href="/docs/api-reference/v3/reference/common/money">Money!</a>} required>
          Signed source charge amount; revenue-share deductions are separate negative rows.

          <Expandable title="fields" lazyRender>
            <ResponseField name="amount" type={<a href="/docs/api-reference/v3/reference/common/decimal">Decimal!</a>} required>
              The exact amount as a decimal string (e.g. "19.99").
            </ResponseField>

            <ResponseField name="currency" type="String!" required>
              ISO 4217 currency code (e.g. USD).
            </ResponseField>
          </Expandable>
        </ResponseField>

        <ResponseField name="billCurrency" type="String">
          Currency of the owning bill.
        </ResponseField>

        <ResponseField name="billCurrencyAmount" type={<a href="/docs/api-reference/v3/reference/common/money">Money</a>}>
          Amount in bill currency at its frozen rate, or null if no strike exists.

          <Expandable title="fields" lazyRender>
            <ResponseField name="amount" type={<a href="/docs/api-reference/v3/reference/common/decimal">Decimal!</a>} required>
              The exact amount as a decimal string (e.g. "19.99").
            </ResponseField>

            <ResponseField name="currency" type="String!" required>
              ISO 4217 currency code (e.g. USD).
            </ResponseField>
          </Expandable>
        </ResponseField>

        <ResponseField name="billId" type="String!" required>
          Owning bill ID.
        </ResponseField>

        <ResponseField name="campaignId" type="String">
          Related campaign ID.
        </ResponseField>

        <ResponseField name="carrierFeesMicros" type="String!" required>
          Carrier fees in millionths of the charge currency.
        </ResponseField>

        <ResponseField name="createdAt" type={<a href="/docs/api-reference/v3/reference/common/date-time">DateTime!</a>} required>
          Charge creation time.
        </ResponseField>

        <ResponseField name="customerEmail" type="String">
          Related customer email.
        </ResponseField>

        <ResponseField name="customerFirstName" type="String">
          Related customer first name.
        </ResponseField>

        <ResponseField name="customerLastName" type="String">
          Related customer last name.
        </ResponseField>

        <ResponseField name="fulfillmentGroupId" type="String">
          Related fulfillment group ID.
        </ResponseField>

        <ResponseField name="id" type="String!" required>
          Stable charge ID.
        </ResponseField>

        <ResponseField name="idempotencyKey" type="String!" required>
          Stable source charge key.
        </ResponseField>

        <ResponseField name="includedCount" type="String!" required>
          Included units on this charge.
        </ResponseField>

        <ResponseField name="mmsCount" type="String!" required>
          MMS messages counted by this charge.
        </ResponseField>

        <ResponseField name="note" type="String">
          Charge note in the Billing report.
        </ResponseField>

        <ResponseField name="orderCount" type="String!" required>
          Orders counted by this charge.
        </ResponseField>

        <ResponseField name="orderDate" type={<a href="/docs/api-reference/v3/reference/common/date-time">DateTime</a>}>
          Related order or fulfillment date used by the Billing CSV.
        </ResponseField>

        <ResponseField name="orderId" type="String">
          Related order ID.
        </ResponseField>

        <ResponseField name="orderName" type="String">
          Related order name.
        </ResponseField>

        <ResponseField name="orderNumber" type="String">
          Related order number.
        </ResponseField>

        <ResponseField name="overageCount" type="String!" required>
          Overage units on this charge.
        </ResponseField>

        <ResponseField name="periodEnd" type={<a href="/docs/api-reference/v3/reference/common/date-time">DateTime!</a>} required>
          End of the period this charge covers.
        </ResponseField>

        <ResponseField name="periodStart" type={<a href="/docs/api-reference/v3/reference/common/date-time">DateTime!</a>} required>
          Start of the period this charge covers.
        </ResponseField>

        <ResponseField name="product" type="String">
          Redo product.
        </ResponseField>

        <ResponseField name="recoveredRevenue" type={<a href="/docs/api-reference/v3/reference/common/money">Money</a>}>
          Recovered revenue attributed to this charge.

          <Expandable title="fields" lazyRender>
            <ResponseField name="amount" type={<a href="/docs/api-reference/v3/reference/common/decimal">Decimal!</a>} required>
              The exact amount as a decimal string (e.g. "19.99").
            </ResponseField>

            <ResponseField name="currency" type="String!" required>
              ISO 4217 currency code (e.g. USD).
            </ResponseField>
          </Expandable>
        </ResponseField>

        <ResponseField name="returnId" type="String">
          Related return ID.
        </ResponseField>

        <ResponseField name="revenueSharePercentage" type={<a href="/docs/api-reference/v3/reference/common/decimal">Decimal</a>}>
          Recorded merchant revenue-share rate, when present.
        </ResponseField>

        <ResponseField name="reversesChargeId" type="String">
          Charge ID reversed by this row.
        </ResponseField>

        <ResponseField name="shipmentId" type="String">
          Related shipment ID.
        </ResponseField>

        <ResponseField name="shopifyOrderId" type="String">
          Related Shopify order ID.
        </ResponseField>

        <ResponseField name="smsCount" type="String!" required>
          SMS messages counted by this charge.
        </ResponseField>

        <ResponseField name="subtype" type="String">
          Charge subtype.
        </ResponseField>

        <ResponseField name="type" type="String!" required>
          Charge type.
        </ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="pageInfo" type={<a href="/docs/api-reference/v3/pagination">PageInfo!</a>} required>
      Pagination metadata for the current page.

      <Expandable title="fields" lazyRender>
        <ResponseField name="endCursor" type="String">
          Cursor of the last edge in this page; pass to `after` to page forward.
        </ResponseField>

        <ResponseField name="hasNextPage" type="Boolean!" required>
          Whether more items exist after this page (drives forward pagination with `first`/`after`).
        </ResponseField>

        <ResponseField name="hasPreviousPage" type="Boolean!" required>
          Whether more items exist before this page (drives backward pagination with `last`/`before`).
        </ResponseField>

        <ResponseField name="startCursor" type="String">
          Cursor of the first edge in this page; pass to `before` to page backward.
        </ResponseField>
      </Expandable>
    </ResponseField>
  </Expandable>
</ResponseField>

## Example

```graphql theme={null}
query {
  billingCharges(after: "...", before: "...", billId: "...", first: 10, last: 10) {
    nodes {
      billCurrency
      billId
      campaignId
      carrierFeesMicros
      createdAt
      customerEmail
      customerFirstName
      customerLastName
      # ...
    }
    pageInfo { hasNextPage endCursor }
  }
}
```


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