Skip to main content
GET
Payment performance over a date range

Authorizations

Authorization
string
header
required

Bearer token authentication. Requires a company-admin token whose role holds reports.view.

Query Parameters

from
string<date>

First day of the range, inclusive, as YYYY-MM-DD in the tz zone. Defaults to 29 days before to, so the default range is thirty days. A value that is not this exact shape returns 400.

Example:

"2026-09-08"

to
string<date>

Last day of the range, inclusive, as YYYY-MM-DD in the tz zone. Defaults to today, or to 29 days after from when only from is sent. A range longer than 92 days, or one that ends before it starts, returns 400.

Example:

"2026-10-07"

tz
string

IANA timezone name (e.g. America/Denver) or Rails-style alias (Eastern Time (US & Canada)) used to anchor "today" boundaries and hour-of-day bucketing. The frontend sends Intl.DateTimeFormat().resolvedOptions().timeZone. Unknown or malformed values silently fall back to UTC — callers omit the param when the endpoint doesn't need wall-clock alignment (see CURRENT-3077).

Example:

"America/Denver"

country
string

ISO alpha-2 code of one of the requesting company's configured countries (see GET /countries). When present, every service on this endpoint filters its data to that country and reports money in the country's own currency. Omit (or send "all") for the aggregate-across-countries view, which is the default and matches pre-Phase-004 behavior. Unknown ISO codes or ones the company is not configured for return 400.

Example:

"US"

mode
enum<string>

Which payments to report on. live (the default) is real money through a live account at a real gateway. test is every test or sandbox account and the Bogus gateway, so a merchant who is still integrating can watch their own test traffic.

Available options:
live,
test
Example:

"live"

flow
enum<string>

Narrow every figure to one flow. checkout is an attempt with a cart; renewal is a subscription renewal with no cart. all, the default, keeps both.

Available options:
all,
checkout,
renewal
Example:

"all"

payment_account_id
string

Narrow every figure to one of the company's payment accounts, by the id listed in payment_accounts. An id that is not one of the company's accounts returns 400.

Pattern: ^[0-9]+$
Example:

"524"

Response

Payment performance payload

from
string<date>
required
to
string<date>
required
previous_from
string<date>
required

First day of the range of equal length just before.

previous_to
string<date>
required
time_zone
string
required

IANA name of the zone the dates are cut in.

currency
string
required

ISO 4217 three-letter code (uppercase).

Required string length: 3
Example:

"USD"

mode
enum<string>
required
Available options:
live,
test
summary
object
required

Counts for one range. Pending attempts are counted in attempt_count but are in no rate's denominator.

previous_summary
object
required

Counts for one range. Pending attempts are counted in attempt_count but are in no rate's denominator.

days
object[]
required

One entry per date of the range, zero-filled.

decline_reasons
object[]
required

Most declines first.

breakdowns
object
required

Each dimension's rows, most attempts first. After eight rows the rest fold into one other row. Card brand counts card payments only.

multi_card_checkouts
object[]
required

Checkouts that tried three or more different cards, most cards first. Many cards on one cart is how a stolen-card run looks from the merchant's side.

Maximum array length: 10
payment_accounts
object[]
required

The company's kept accounts in this mode, for the filter.

meta
object