---
title: "Payment summary report"
method: GET
path: "/reports/payment-summary"
tags: ["Reports"]
---

# Payment summary report

`GET /reports/payment-summary`

Generates a payment summary report with flexible grouping and metric calculations.

## Query parameters

- `groupBy` string, required
- `granularity` string
- `secondaryGroupBy` string
- `secondaryGranularity` string
- `measures` string
- `withTotal` boolean
- `id` object
  - `eq` string
  - `ne` string
  - `like` string
  - `in` string[]
  - `nin` string[]
  - `contains` string
- `createdAt` object
  - `eq` string, date-time
  - `ne` string, date-time
  - `gt` string, date-time
  - `gte` string, date-time
  - `lt` string, date-time
  - `lte` string, date-time
  - `in` string[]
  - `nin` string[]
  - `contains` string, date-time
- `updatedAt` object
  - `eq` string, date-time
  - `ne` string, date-time
  - `gt` string, date-time
  - `gte` string, date-time
  - `lt` string, date-time
  - `lte` string, date-time
  - `in` string[]
  - `nin` string[]
  - `contains` string, date-time
- `amount` object
  - `eq` number
  - `ne` number
  - `gt` number
  - `gte` number
  - `lt` number
  - `lte` number
  - `in` number[]
  - `nin` number[]
  - `contains` number
- `status` object
  - `eq` string
  - `ne` string
  - `like` string
  - `in` string[]
  - `nin` string[]
  - `contains` string
- `displayStatus` object
  - `eq` string
  - `ne` string
  - `like` string
  - `in` string[]
  - `nin` string[]
  - `contains` string
- `currency` object
  - `eq` string
  - `ne` string
  - `like` string
  - `in` string[]
  - `nin` string[]
  - `contains` string
- `amountCaptured` object
  - `eq` number
  - `ne` number
  - `gt` number
  - `gte` number
  - `lt` number
  - `lte` number
  - `in` number[]
  - `nin` number[]
  - `contains` number
- `amountReversed` object
  - `eq` number
  - `ne` number
  - `gt` number
  - `gte` number
  - `lt` number
  - `lte` number
  - `in` number[]
  - `nin` number[]
  - `contains` number
- `product` object
  - `eq` string
  - `ne` string
  - `like` string
  - `in` string[]
  - `nin` string[]
  - `contains` string
- `price` object
  - `eq` string
  - `ne` string
  - `like` string
  - `in` string[]
  - `nin` string[]
  - `contains` string
- `offSessionType` object
  - `eq` string
  - `ne` string
  - `like` string
  - `in` string[]
  - `nin` string[]
  - `contains` string
- `paymentType` object
  - `eq` string
  - `ne` string
  - `like` string
  - `in` string[]
  - `nin` string[]
  - `contains` string
- `latestDeclineType` object
  - `eq` string
  - `ne` string
  - `like` string
  - `in` string[]
  - `nin` string[]
  - `contains` string
- `retry.attempts` object
  - `eq` number
  - `ne` number
  - `gt` number
  - `gte` number
  - `lt` number
  - `lte` number
  - `in` number[]
  - `nin` number[]
  - `contains` number
- `customer.email` object
  - `eq` string
  - `ne` string
  - `like` string
  - `in` string[]
  - `nin` string[]
  - `contains` string
- `customer.billingAddress.country` object
  - `eq` string
  - `ne` string
  - `like` string
  - `in` string[]
  - `nin` string[]
  - `contains` string
- `customer.shippingAddress.country` object
  - `eq` string
  - `ne` string
  - `like` string
  - `in` string[]
  - `nin` string[]
  - `contains` string
- `paymentMethod` object
  - `eq` string
  - `ne` string
  - `like` string
  - `in` string[]
  - `nin` string[]
  - `contains` string
- `paymentMethod.type` object
  - `eq` string
  - `ne` string
  - `like` string
  - `in` string[]
  - `nin` string[]
  - `contains` string
- `invoice.type` object
  - `eq` string
  - `ne` string
  - `like` string
  - `in` string[]
  - `nin` string[]
  - `contains` string
- `captureMethod` object
  - `eq` string
  - `ne` string
  - `like` string
  - `in` string[]
  - `nin` string[]
  - `contains` string
- `captureDelay` object
  - `eq` number
  - `ne` number
  - `gt` number
  - `gte` number
  - `lt` number
  - `lte` number
  - `in` number[]
  - `nin` number[]
  - `contains` number
- `captureAt` object
  - `eq` string, date-time
  - `ne` string, date-time
  - `gt` string, date-time
  - `gte` string, date-time
  - `lt` string, date-time
  - `lte` string, date-time
  - `in` string[]
  - `nin` string[]
  - `contains` string, date-time
- `statementDescriptor` object
  - `eq` string
  - `ne` string
  - `like` string
  - `in` string[]
  - `nin` string[]
  - `contains` string
- `isCaptured` object
  - `eq` boolean
  - `ne` boolean
  - `contains` boolean
- `isReversed` object
  - `eq` boolean
  - `ne` boolean
  - `contains` boolean
- `isFullyReversed` object
  - `eq` boolean
  - `ne` boolean
  - `contains` boolean
- `isChargebacked` object
  - `eq` boolean
  - `ne` boolean
  - `contains` boolean
- `isRedirectRequired` object
  - `eq` boolean
  - `ne` boolean
  - `contains` boolean
- `latestTransaction` object
  - `eq` string
  - `ne` string
  - `like` string
  - `in` string[]
  - `nin` string[]
  - `contains` string
- `latestTransaction.processorId` object
  - `eq` string
  - `ne` string
  - `like` string
  - `in` string[]
  - `nin` string[]
  - `contains` string
- `latestTransaction.gatewayProfile` object
  - `eq` string
  - `ne` string
  - `like` string
  - `in` string[]
  - `nin` string[]
  - `contains` string
- `customer` object
  - `eq` string
  - `ne` string
  - `like` string
  - `in` string[]
  - `nin` string[]
  - `contains` string
- `paymentMethod.card.lastFour` object
  - `eq` string
  - `ne` string
  - `like` string
  - `in` string[]
  - `nin` string[]
  - `contains` string
- `paymentMethod.card.bin` object
  - `eq` string
  - `ne` string
  - `like` string
  - `in` string[]
  - `nin` string[]
  - `contains` string
- `paymentMethod.card.brand` object
  - `eq` string
  - `ne` string
  - `like` string
  - `in` string[]
  - `nin` string[]
  - `contains` string
- `paymentMethod.card.expYear` object
  - `eq` string
  - `ne` string
  - `like` string
  - `in` string[]
  - `nin` string[]
  - `contains` string
- `paymentMethod.card.expMonth` object
  - `eq` string
  - `ne` string
  - `like` string
  - `in` string[]
  - `nin` string[]
  - `contains` string
- `paymentMethodOptions.card.gatewayProfile` object
  - `eq` string
  - `ne` string
  - `like` string
  - `in` string[]
  - `nin` string[]
  - `contains` string
- `paymentMethodOptions.card.cascade` object
  - `eq` string
  - `ne` string
  - `like` string
  - `in` string[]
  - `nin` string[]
  - `contains` string
- `paymentMethodOptions.card.mode` object
  - `eq` string
  - `ne` string
  - `like` string
  - `in` string[]
  - `nin` string[]
  - `contains` string
- `paymentMethodOptions.paypal.gatewayProfile` object
  - `eq` string
  - `ne` string
  - `like` string
  - `in` string[]
  - `nin` string[]
  - `contains` string
- `attribution.utmSource` object
  - `eq` string
  - `ne` string
  - `like` string
  - `in` string[]
  - `nin` string[]
  - `contains` string
- `attribution.utmMedium` object
  - `eq` string
  - `ne` string
  - `like` string
  - `in` string[]
  - `nin` string[]
  - `contains` string
- `attribution.utmCampaign` object
  - `eq` string
  - `ne` string
  - `like` string
  - `in` string[]
  - `nin` string[]
  - `contains` string
- `attribution.utmTerm` object
  - `eq` string
  - `ne` string
  - `like` string
  - `in` string[]
  - `nin` string[]
  - `contains` string
- `attribution.utmContent` object
  - `eq` string
  - `ne` string
  - `like` string
  - `in` string[]
  - `nin` string[]
  - `contains` string
- `attribution.utmId` object
  - `eq` string
  - `ne` string
  - `like` string
  - `in` string[]
  - `nin` string[]
  - `contains` string
- `attribution.utmContentid` object
  - `eq` string
  - `ne` string
  - `like` string
  - `in` string[]
  - `nin` string[]
  - `contains` string

## Response `200`

OK

- PaymentSummaryReportResponseDTO
  - `data` object[], required — Report data rows grouped by the specified field
    - `groupBy` string, nullable — The value of the groupBy field (field name varies based on groupBy parameter)
    - `secondaryGroupBy` string, nullable — The value of the secondaryGroupBy field (present only when secondaryGroupBy was supplied)
    - `fcPaymentsCount` number — Number of first-charge payments
    - `fcSuccessfulCount` number — Number of successful first-charge payments
    - `fcSuccessfulItemCount` number — Total number of line items across successful first-charge payments. May exceed `fcSuccessfulCount` when payments contain multiple line items.
    - `fcIncompleteCount` number — Number of incomplete first-charge payments
    - `fcFailedCount` number — Number of failed first-charge payments
    - `fcRevenue` number — Total revenue from first-charge payments (in display currency)
    - `fcApprovalRate` number — Approval rate for first-charge payments (percentage)
    - `recurringPaymentsCount` number — Number of recurring payments
    - `recurringSuccessfulCount` number — Number of successful recurring payments
    - `recurringSuccessfulItemCount` number — Total number of line items across successful recurring payments. May exceed `recurringSuccessfulCount` when payments contain multiple line items.
    - `recurringDeclinedCount` number — Number of declined recurring payments
    - `recurringRevenue` number — Total revenue from recurring payments (in display currency)
    - `recurringApprovalRate` number — Approval rate for recurring payments (percentage)
    - `refundedPaymentsCount` number — Number of refunded payments
    - `refundAmount` number — Total refund amount (in display currency)
    - `refundPercentage` number — Refund percentage relative to gross revenue
    - `chargebacksCount` number — Number of chargebacked payments
    - `chargebackAmount` number — Total chargeback amount (in display currency)
    - `chargebackPercentage` number — Chargeback percentage relative to gross revenue
    - `fcRefundAmount` number — Total refund amount on first-charge payments (in display currency)
    - `fcChargebackAmount` number — Total chargeback amount on first-charge payments (in display currency)
    - `recurringRefundAmount` number — Total refund amount on recurring payments (in display currency)
    - `recurringChargebackAmount` number — Total chargeback amount on recurring payments (in display currency)
    - `totalGrossRevenue` number — Total gross revenue (in display currency)
    - `totalNetRevenue` number — Total net revenue after refunds and chargebacks (in display currency)
  - `total` object — Aggregated totals across all groups (only present when withTotal is enabled)
    - `groupBy` string, nullable — The value of the groupBy field (field name varies based on groupBy parameter)
    - `secondaryGroupBy` string, nullable — The value of the secondaryGroupBy field (present only when secondaryGroupBy was supplied)
    - `fcPaymentsCount` number — Number of first-charge payments
    - `fcSuccessfulCount` number — Number of successful first-charge payments
    - `fcSuccessfulItemCount` number — Total number of line items across successful first-charge payments. May exceed `fcSuccessfulCount` when payments contain multiple line items.
    - `fcIncompleteCount` number — Number of incomplete first-charge payments
    - `fcFailedCount` number — Number of failed first-charge payments
    - `fcRevenue` number — Total revenue from first-charge payments (in display currency)
    - `fcApprovalRate` number — Approval rate for first-charge payments (percentage)
    - `recurringPaymentsCount` number — Number of recurring payments
    - `recurringSuccessfulCount` number — Number of successful recurring payments
    - `recurringSuccessfulItemCount` number — Total number of line items across successful recurring payments. May exceed `recurringSuccessfulCount` when payments contain multiple line items.
    - `recurringDeclinedCount` number — Number of declined recurring payments
    - `recurringRevenue` number — Total revenue from recurring payments (in display currency)
    - `recurringApprovalRate` number — Approval rate for recurring payments (percentage)
    - `refundedPaymentsCount` number — Number of refunded payments
    - `refundAmount` number — Total refund amount (in display currency)
    - `refundPercentage` number — Refund percentage relative to gross revenue
    - `chargebacksCount` number — Number of chargebacked payments
    - `chargebackAmount` number — Total chargeback amount (in display currency)
    - `chargebackPercentage` number — Chargeback percentage relative to gross revenue
    - `fcRefundAmount` number — Total refund amount on first-charge payments (in display currency)
    - `fcChargebackAmount` number — Total chargeback amount on first-charge payments (in display currency)
    - `recurringRefundAmount` number — Total refund amount on recurring payments (in display currency)
    - `recurringChargebackAmount` number — Total chargeback amount on recurring payments (in display currency)
    - `totalGrossRevenue` number — Total gross revenue (in display currency)
    - `totalNetRevenue` number — Total net revenue after refunds and chargebacks (in display currency)

## Other responses

- `202` — The merchant is entitled but its environment is not provisioned yet. Provisioning has been kicked off (exactly once) and is in progress; retry the request — it succeeds once the environment is ready. Returned only for identity-token (dashboard) requests bound to a merchant, not for secret-key API calls; any such endpoint can return it while provisioning is underway.
- `400` — The request was rejected. `type` is `invalid_request_error` when the request itself is at fault — `errors` then lists every problem found, with field-attributable entries prefixed by the field’s path; `invalid_state_error` when the request was well-formed but the resource is not in a state that allows it; or `payment_error` when the payment was refused by the issuer or processor.
- `401` — No API key was supplied, or the key is not valid. `type` is `authentication_error`.
- `403` — The API key is valid but lacks the permission this operation requires. `type` is `permission_error`.
- `429` — Too many requests. The rate limit is applied per client across all operations. `type` is `rate_limit_error`.
- `500` — The request could not be completed because of an unexpected error. `type` is `api_error`.
- `504` — The request exceeded the processing time limit and was abandoned. `type` is `api_error` and `code` is `timeout` — unlike a plain 500 the request may still have taken effect, so retry with the same idempotency key rather than blindly.

---

[API](https://skmtc.dev/odus/apis/odus-orchestration-api.md) · [All operations](https://skmtc.dev/odus/apis/odus-orchestration-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/odus/odus-orchestration-api/revisions/d5fdcba31576/schema)
