Skip to main content
Every donation processed through CharityStack — whether a one-time gift or a charge from a recurring subscription — is captured as a payment record. The /v1/payments endpoints give you a unified view of all transaction activity for your organization, with consistent field names and clear status values that make it straightforward to build reports, sync your CRM, or trigger downstream workflows.

The payment object

The following fields are returned by GET /v1/payments and GET /v1/payments/{id}.
FieldTypeDescription
paymentIDstringUnique identifier for the payment
emailstringPayer’s email address
firstNamestringPayer’s first name
lastNamestringPayer’s last name
amountnumberPayment amount in dollars
currencystringCurrency code (default: USD)
statusstringCurrent payment status (see below)
fundstringName of the designated fund
formstringName of the form used to collect the payment
frequencystringDonation frequency (see below)
datestringISO 8601 timestamp of the payment
paymentMethodstringPayment method used (e.g., card, bank)
coverFeesbooleanWhether the payer opted to cover processing fees
anonymousbooleanWhether the payment was made anonymously

Status values

ValueMeaning
COMPLETEDPayment was successfully processed
PENDINGPayment is awaiting processing or confirmation
FAILEDPayment attempt was unsuccessful
REFUNDEDPayment was refunded to the payer

Frequency values

ValueMeaning
ONE_TIMESingle, non-recurring payment
DAILYCharged every day
WEEKLYCharged every week
MONTHLYCharged every month
ANNUALLYCharged once per year
For recurring donors, each individual charge creates its own payment record with frequency set to the subscription’s cadence. Use the frequency field to distinguish subscription charges from one-time gifts.

API endpoints

List payments

Retrieve a paginated list of all payment records for your account.

Get payment

Fetch a single payment record by its ID.

Migrating from the donations API

The /v1/donations endpoints are deprecated and will be permanently removed on 2026-07-01. Migrate to /v1/payments before this date to avoid service interruption.
The /v1/payments endpoints return the same underlying data as /v1/donations, but with cleaner field names and without several fields that were rarely used. Update your integration by replacing the endpoint path and renaming the fields you read from each response.

Field mapping

Legacy field (/v1/donations)New field (/v1/payments)
donationIDpaymentID
donorEmailemail
donorFirstNamefirstName
donorLastNamelastName
fundNamefund
formNameform
donationDatedate
The fields merchantName, tipAmount, and transactionID are not present in the payment object and are not available through /v1/payments.

Migration steps

1

Update your endpoint URL

Replace GET /v1/donations with GET /v1/payments and GET /v1/donations/{id} with GET /v1/payments/{id}. The query parameters (limit, lastEvaluatedKey) are identical.
2

Rename fields in your code

Update any references to the legacy field names listed in the mapping table above.
3

Remove references to removed fields

Drop any code that reads merchantName, tipAmount, or transactionID. These fields have no equivalent in the payments API.
4

Verify your integration

Make a test call to GET /v1/payments and confirm the response shape matches your updated field expectations before the 2026-07-01 cutover.