Quick Start
List all recurring plans for a merchant:data array of plan objects and a pagination object. To fetch one specific plan instead, include planId in the query string.
The Basics
Never call this from the browser. Your API key must stay on the server.
Use a backend (Node.js, Python, PHP, etc.) to query plans and pass the results
to your frontend.
Required Headers
Merchant API Key (
x-api-key): Developers → API Keys.The key must have read access to recurring plans enabled.Single Plan vs. List
This endpoint operates in two modes, controlled by whetherplanId is in the query string:
- List mode — Omit
planId. Returns a paginated array of plans matching your filters. - Single-plan mode — Provide
planId. Returns one plan in the same shape as list mode. Returns404if no plan matches.
data is always an array, even when you query a single plan (it’ll contain exactly one element).
Hierarchy ID (Required)
Every request must include exactly one of the following IDs in the query string, scoping the query to a level of your hierarchy:
Providing zero or more than one of these returns a
400 error. Which IDs you’re allowed to query depends on your role — see Who Can Query What below.
Who Can Query What
Your API key’s role determines which hierarchy IDs you can use:
Trying to query a hierarchy ID you don’t have access to — whether because your role doesn’t allow it or because the specific ID isn’t in your hierarchy — returns a
403 error.
A future “Authentication & Access” guide will document hierarchy rules in
full. Until then, treat this section as the canonical reference.
Optional Query Parameters
All filters are optional and can be combined.Filters
merchantRecurringReference, merchantPayLinkReference, and paymentLinkId
are only present on a plan if they were provided at creation. Plans created
without them omit the fields entirely.Pagination & Sorting
Field Selection
Custom Fields
By default, the endpoint returns a curated set of fields depending on whether you’re in list mode or single-plan mode. To request only specific fields, passfields as a comma-separated list:
Some fields are restricted to administrators and will be silently omitted if
you request them. If every field you request is restricted, the response is a
400 error.Enums
RecurringPlanStatus
The lifecycle state of a plan, returned in every plan response.RecurringInterval
Response Shape
The response shape is identical for list mode and single-plan mode —data is always an array of plan objects. Single-plan mode just returns one element.
Example
A query for a single plan, returning the full plan object:Field Notes
Common Use Cases
Fetch a single plan
List only active plans
List plans charging in the next 7 days
Useful for “upcoming charges” dashboard views. Combinestatus=active with a nextChargeBefore cutoff: