Skip to main content
GET
List payments

Authorizations

Authorization
string
header
required

Authentication Method: HTTP Bearer token.

The runtime requires the literal Bearer prefix — a bare token in the Authorization header is rejected with 401 unauthorized.

Header Format: Authorization: Bearer YOUR_API_KEY

Your API key is a JWT. Live keys operate on live data (livemode: true); test keys operate on isolated test data (livemode: false).

Get your key at: app.gigstack.pro/settings?tab=api

Errors: credential failures are answered by the authentication layer with a raw { "message": … } body, not the standardized envelope — 401 for a missing, malformed or expired token, 403 for a revoked key or a plan without API access. See the Unauthorized and AuthForbidden responses.

Query Parameters

team
string

gigstack Connect: Target team ID for multi-team access.

Requires gigstack Connect enabled on your team and shared billing account.

Also requires the multipleIssuerAccounts feature on your plan. Requests targeting a team other than the one your API key belongs to return 403 without it.

Only API keys can use it: an OAuth access token sent with another team's id is rejected with 403 Team mismatch with OAuth token.

Optional — omit it entirely unless you are acting on another team. It deliberately carries no example value so generated snippets do not emit ?team=undefined; when the parameter is absent, the team is derived from your API key.

Example: ?team=team_xyz789

limit
integer
default:10

Maximum number of items to return (default 10, max 100)

Required range: 1 <= x <= 100
next
string | null

Pagination cursor for the next page of results

order_by
enum<string>
default:timestamp

Field name to order results by

Available options:
name,
timestamp
sort
enum<string>

Sort direction for the results Sort direction for list queries

Available options:
asc,
desc
created[gte]

Filter results created on or after this timestamp. Accepts Unix timestamp in seconds (e.g., 1733011200), milliseconds (e.g., 1733011200000), or ISO 8601 date string (e.g., 2024-12-01).

created[lte]

Filter results created on or before this timestamp. Accepts Unix timestamp in seconds (e.g., 1735689599), milliseconds (e.g., 1735689599000), or ISO 8601 date string (e.g., 2024-12-31).

created[gt]

Filter results created after this timestamp. Accepts Unix timestamp in seconds (e.g., 1733011200), milliseconds (e.g., 1733011200000), or ISO 8601 date string (e.g., 2024-12-01).

created[lt]

Filter results created before this timestamp. Accepts Unix timestamp in seconds (e.g., 1735689599), milliseconds (e.g., 1735689599000), or ISO 8601 date string (e.g., 2024-12-31).

status
enum<string>

Filter payments by status

Available options:
requires_payment_method,
succeeded,
partially_paid,
canceled
currency
string

Filter payments by currency code (e.g., MXN, USD)

amount
number

Filter payments by amount

client_id
string

Filter payments by client ID

email
string

Filter payments by client email address

tax_id
string

Filter payments by client tax ID (RFC)

client_name
string

Filter payments by client name

metadata.{key}
string

Filter by any metadata field using dot notation (e.g., metadata.order_id=ORD-123) or underscore notation (e.g., metadata_order_id=ORD-123). Both formats are supported and equivalent.

Response

Payments retrieved successfully

Response shape of the Firestore-backed list handlers. Note this is not the standardized envelope: data sits at the top level alongside the pagination keys and message/success/timestamp, rather than under a data wrapper.

A few modules (clients, payments) take a second code path when the request carries metadata.* / metadata_* filters and the team has Typesense configured: Typesense resolves the matching ids and the documents are then re-read from Firestore. That path returns has_more, total_results, page and per_page instead of the cursor-style next. Modules without a Typesense branch (invoices list, receipts, retentions, users) only ever return the cursor form.

Full-text /search endpoints are different again — see SearchResponse.

success
enum<boolean>
required
Available options:
true
Example:

true

message
string
required
Example:

"Items retrieved successfully"

data
object[]
required
timestamp
integer<int64>
required

Server time in epoch milliseconds.

Example:

1767225600000

next
string | null

Cursor for the next page. Cursor-style (Firestore) path only.

Example:

"eyJjcmVhdGVkX2F0IjoxNjc3NjUxMjM0fQ=="

has_more
boolean

Metadata-filtered (Typesense-assisted) path only.

Example:

true

total_results
number

Metadata-filtered (Typesense-assisted) path only.

Example:

150

page
integer

Metadata-filtered (Typesense-assisted) path only.

Example:

1

per_page
integer

Metadata-filtered (Typesense-assisted) path only.

Example:

10