Skip to main content

One-Time Orders

List Completed Orders

Variables:

Filter by Date Range

Look Up One-Time Order by Your Business Number (orderMerchantExternalId)

Pass the same orderMerchantExternalId you attached at checkout creation.
Variables:

SDK Example


Subscription Orders

List Active Subscriptions

Filter Canceling Subscriptions

Look Up Subscription Order by Your Business Number (orderMerchantExternalId)

Pass the same orderMerchantExternalId you attached at checkout creation. Every renewal payment that follows inherits the same value, so a single business reference resolves the whole subscription lifecycle.
Variables:

Payments

List Successful Payments

Filter by Date Range

Look Up Payment by Waffo Payment ID

Variables:

Look Up Payment by Your Business Number (orderMerchantExternalId)

Pass the same orderMerchantExternalId you attached at checkout creation. Field name mirrors webhook payload data.orderMerchantExternalId.
Variables:
For subscription orders, every renewal payment inherits the same orderMerchantExternalId set at checkout. The query above returns the full payment history for the same business reference, ordered by createdAt DESC.

Aggregations & Sorting

Aggregate Payments by Day

paymentsAggregate returns count plus amount metrics (sum, avg, min, max) over all matching rows, optionally grouped by up to 2 dimensions. Available dimensions: status, currency, payment_method_type, card_brand, store, and the time dimension created_period. granularity (day, week, month, quarter, year; default day) only applies to the time dimension.
Aggregate amount values are integer strings in minor currency units (e.g. cents). Amounts are summed across whatever rows match the filter, so group or filter by currency when multiple currencies are involved. Groups are sorted by count descending and capped at 100 (isTruncated flags truncation); the top-level count/amount always cover all matching rows. Other entities expose the same shape: refundsAggregate, onetimeOrdersAggregate, subscriptionOrdersAggregate, payoutTicketsAggregate, settlementBatchesAggregate, webhookDeliveriesAggregate, emailDeliveriesAggregate.

Sort with orderBy

List queries that support sorting accept orderBy: [XxxOrderBy!] (an enum whitelist), defaulting to created_at DESC. For payments the options are created_at_desc, created_at_asc, amount_desc, amount_asc.

Refunds (executed records)

Refund records (order.refunds) are written after the PSP confirms the refund. They are separate from refund tickets — tickets carry the request lifecycle, refund records carry the executed result.

Look Up Refund by Waffo Refund ID

Refund exposes both business numbers as flat fields (orderMerchantExternalId from the originating order, refundTicketMerchantExternalId from the originating refund ticket) — same naming as the webhook payload.
Variables:

Look Up Refunds by Payment (Waffo Payment ID)

Look Up Refunds by Your Business Number

Match by the refund ticket’s business reference (what you attached when creating the refund ticket) — use the refundTicketMerchantExternalId filter:
Or match by the order’s business reference (returns all refunds against any payment carrying that reference, useful for subscription renewals) — filter at the payment layer and read its nested refunds:

Refund Tickets

List All Refund Tickets

Filter Pending Refunds

Refunds for a Specific Payment

Variables:

Look Up Refund Tickets by Your Business Number (refundTicketMerchantExternalId)

Variables:
RefundTicket (the request) and Refund (the executed record) are two different GraphQL types, but their business-side identifiers share the same flat names as the webhook payload: refundTicketMerchantExternalId on both RefundTicket and Refund; orderMerchantExternalId is additionally exposed on Refund (inherited from the originating order). Webhook payloads carry the same two values as data.orderMerchantExternalId and data.refundTicketMerchantExternalId.

Checkout Sessions

Query Session Details

Variables: