> ## 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.

# billingTransactions

> Page through the merchant's payment and credit transactions 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">
  Transactions to return, 1 to 100; defaults to 25.
</ResponseField>

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

## Returns

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

  <Expandable title="fields" lazyRender>
    <ResponseField name="edges" type={<a href="/docs/api-reference/v3/pagination">[BillingBillTransactionEdge!]!</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-transaction">BillingBillTransaction!</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>
              Transaction amount in its own currency.
            </ResponseField>

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

            <ResponseField name="createdAt" type={<a href="/docs/api-reference/v3/reference/common/date-time">DateTime!</a>} required>
              When the transaction was created.
            </ResponseField>

            <ResponseField name="failureMessage" type="String">
              Payment failure detail, when present.
            </ResponseField>

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

            <ResponseField name="idempotencyKey" type="String!" required>
              Stable payment attempt key.
            </ResponseField>

            <ResponseField name="shopifyChargeId" type="String">
              Shopify charge identifier for matching a payment.
            </ResponseField>

            <ResponseField name="status" type={<a href="/docs/api-reference/v3/reference/billing/billing-transaction-status">BillingTransactionStatus!</a>} required>
              Transaction status.
            </ResponseField>

            <ResponseField name="stripeChargeId" type="String">
              Stripe charge identifier for matching a payment.
            </ResponseField>

            <ResponseField name="stripeRefundId" type="String">
              Stripe refund identifier for matching a credit.
            </ResponseField>
          </Expandable>
        </ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="nodes" type={<a href="/docs/api-reference/v3/reference/billing/billing-bill-transaction">[BillingBillTransaction!]!</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>
          Transaction amount in its own currency.

          <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="createdAt" type={<a href="/docs/api-reference/v3/reference/common/date-time">DateTime!</a>} required>
          When the transaction was created.
        </ResponseField>

        <ResponseField name="failureMessage" type="String">
          Payment failure detail, when present.
        </ResponseField>

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

        <ResponseField name="idempotencyKey" type="String!" required>
          Stable payment attempt key.
        </ResponseField>

        <ResponseField name="shopifyChargeId" type="String">
          Shopify charge identifier for matching a payment.
        </ResponseField>

        <ResponseField name="status" type={<a href="/docs/api-reference/v3/reference/billing/billing-transaction-status">BillingTransactionStatus!</a>} required>
          Transaction status.
        </ResponseField>

        <ResponseField name="stripeChargeId" type="String">
          Stripe charge identifier for matching a payment.
        </ResponseField>

        <ResponseField name="stripeRefundId" type="String">
          Stripe refund identifier for matching a credit.
        </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 {
  billingTransactions(after: "...", before: "...", billId: "...", first: 10, last: 10) {
    nodes {
      billId
      createdAt
      failureMessage
      id
      idempotencyKey
      shopifyChargeId
      status
      stripeChargeId
      # ...
    }
    pageInfo { hasNextPage endCursor }
  }
}
```


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