The subscription object
The following fields are returned byGET /v1/subscriptions and GET /v1/subscriptions/{id}.
| Field | Type | Description |
|---|---|---|
id | string | Unique identifier for the subscription |
status | string | Current subscription status (see below) |
amount | number | Recurring charge amount in dollars |
frequency | string | Billing cadence (see below) |
nextBillingDate | string | ISO 8601 date of the next scheduled charge |
lastBillingDate | string | ISO 8601 date of the most recent successful charge |
endBillingDate | string | ISO 8601 date when the subscription is scheduled to end |
coveredFee | boolean | Whether the donor opted to cover processing fees |
Status values
| Value | Meaning |
|---|---|
ACTIVE | Subscription is running and will charge on schedule |
CANCELLED | Subscription has been cancelled and will not charge again |
Frequency values
| Value | Billing cadence |
|---|---|
DAILY | Charged every day |
WEEKLY | Charged every week |
MONTHLY | Charged every month |
ANNUALLY | Charged once per year |
Each successful subscription charge creates a corresponding payment record. You can cross-reference subscriptions and payments using the donor’s email address.
What you can do
The subscriptions API supports four categories of operations:List subscriptions
Retrieve all subscriptions for your account, optionally filtered by status.
Get a subscription
Fetch a single subscription record by its ID.
Update a subscription
Cancel a subscription or change the recurring amount.
Create a payment method update link
Generate a hosted link where a donor can securely update the card or bank account for an active subscription.
Updating subscriptions
You can modify an active subscription by cancelling it, changing the recurring amount, or creating a hosted payment method update link for the donor. Status and amount updates usePUT /v1/subscriptions/{id} with a JSON body.
- Cancel a subscription
- Change the amount
Set
status to CANCELLED to stop future charges immediately.Updating payment methods
To update a subscription’s payment method, callPOST /v1/subscriptions/{id}/payment-method-update-link. CharityStack returns a short-lived hosted URL that lets the donor save a new card or bank account without your server handling sensitive payment details.
The hosted page supports CARD and PAY_BY_BANK updates for subscriptions processed by Stripe or Finix. Stripe payment details are collected through Stripe’s client-side setup flows. Finix card details are collected through Finix tokenization fields, and Finix bank details are collected through Plaid Link.
Give the link only to the donor after you have authenticated them in your own app. The hosted CharityStack page is protected by the session token in the URL, but the partner app controls who receives the link.