Skip to main content
You can query financial data directly, with server-side filtering, instead of fetching whole transaction bundles and filtering on your side. This is the recommended way to build reports and sync data into external tools.

Endpoints

EndpointReturns
GET /v1/transactionsIndividual transactions (the payment legs), filterable
GET /v1/transactions/{id}A single transaction, with its contact, status and bundle
GET /v1/contacts/{id}/transactionsA contact’s full transaction history plus lifetime donation totals (total_don)
GET /v1/donationsDonations directly, filterable
GET /v1/membershipsMemberships directly, filterable
GET /v1/transaction_bundlesBundles, now filterable by creation date (created_from / created_to)

Filtering

All filters are optional and combined with AND. Amounts are in cents; dates are ISO 8601 (e.g. 2026-04-01T00:00:00Z). GET /v1/donations
ParameterFilter
date_from, date_toDonation date range
created_from, created_toRecord creation date range
amount_min, amount_maxAmount range (cents)
contact_idOne or more contacts (repeat or comma-separate)
donation_price_idOne or more donation prices
sort, ordersortdate (default), created_at, amount; orderdesc (default), asc
GET /v1/memberships — same as donations, with start_from/start_to, end_from/end_to instead of date_*, membership_price_id instead of donation_price_id, and sortstart_date (default), end_date, created_at, amount. GET /v1/transactionsdate_from/date_to, created_from/created_to, amount_min/amount_max, status_id (repeat for several), payment_method_kind, code_campaign, external_transaction_id, sortcreated_at (default), date, amount.

Pagination

List endpoints accept limit (max 1000) and offset, and return a top-level total you can use directly as a count.

Reporting recipes

A few common monthly metrics, all from a single donations query for the month:
MetricHow
Number of donationsthe total field of the response
Donation totalsum of amount across data (cents)
Unique donorsdistinct contact_id across data
First-time (new) donors — Qomon has no “first donated” field, so determine it from donation history:
  • Recommended: keep a running set of all donor contact_ids you’ve already seen. Each month, fetch that month’s donors and treat any not already in your set as new, then add them. One call per month.
  • Stateless alternative: for each donor that month, check whether they donated earlier with GET /v1/donations?contact_id=<id>&date_to=<month_start>&limit=1. An empty result (total = 0) means they are a first-time donor. This makes one call per donor.
Please be gentle with the API: there is a limit of 10 requests/second per organization. For a monthly job that is plenty — add a small delay (~150 ms) between calls rather than firing them all at once. On a 429 Too Many Requests, wait the seconds given in the Retry-After header and retry.
Last modified on June 26, 2026