Skip to main content
POST
Record a donation through Zapier

Authorizations

Authorization
string
header
required

Passport bearer token authentication for legacy admin sessions.

Body

application/json

Validated input accepted by this Zapier transport.

donor_id
integer
required

Donor who owns the gift or commitment. Validation: required|integer.

Example:

12345

designation
integer
required

Recipient/designation identifier for the donation. Validation: required|integer.

Example:

4711

amount
number
required

Individual gift amount in the supplied currency. Validation: required|numeric|min:0.01.

Required range: x >= 0.01
Example:

25

currency
string | null

Stored currency value; legacy callers commonly use a currency symbol. Validation: nullable|string|max:10.

Maximum string length: 10
Example:

"$"

method
integer | null

Stored compatibility payment method identifier. Validation: nullable|integer.

Example:

1

type
integer | null

Record type accepted by this operation. Validation: nullable|integer.

Example:

1

one_time
integer | null

Compatibility one-time gift indicator. Validation: nullable|integer.

Example:

1

result
string | null

Recorded payment result description. Validation: nullable|string|max:500.

Maximum string length: 500
Example:

"Created via Zapier"

transaction_id
string | null

External transaction reference stored with the record. Validation: nullable|string|max:255.

Maximum string length: 255
Example:

"external-payment-001"

transaction_status
string | null

Recorded settlement status. Validation: nullable|string|max:100.

Maximum string length: 100
Example:

"completed"

notes
string | null

Internal description associated with the recorded gift. Validation: nullable|string.

Example:

"Offline gift received."

json_fields
object | null

Custom-field values keyed by the configured form field names. Validation: nullable|array.

refunded
boolean | null

Whether the recorded gift has a refund. Validation: nullable|boolean.

Example:

false

refunded_amount
number | null

Recorded amount already refunded. Validation: nullable|numeric|min:0.

Required range: x >= 0
Example:

0

is_tax_deductible
boolean | null

Whether the recorded gift is tax deductible. Validation: nullable|boolean.

Example:

true

idempotency_key
string | null

Stable caller key used by the selected mutation to prevent duplicate records. Validation: nullable|string|max:191.

Maximum string length: 191
Example:

"external-record-001"

Response

Created, updated or replayed record; this transport unwraps the primitive success envelope.

An individual donation transaction. Donations may be one-time or part of a recurring Commitment. Despite the name, the designation column actually stores the recipient entity_id (it predates entities and was never renamed). Tax/refund/QuickBooks state lives on the donation row alongside the gateway transaction id.

id
integer<int64>
required

Internal donation ID.

Example:

983221

client_id
integer<int64>
required

Owning Gratona client (multi-tenant scope).

Example:

207

donor_id
integer<int64>
required

Donor who gave this donation.

Example:

12345

amount
number<float>
required

Persisted donation-line allocation, including any donor-covered processing fee. Existing amounts are preserved.

Example:

51.5

currency
string
required

ISO 4217 currency code.

Example:

"USD"

designation
integer<int64> | null

Recipient entity ID — see Entity schema. Historical naming: this is NOT an accounting designation, it is the entity / sponsorship target. Null for unrestricted gifts.

Example:

4711

type
integer

Donation type code (gateway / source family). Internal enum; values include cash, check, credit card, ACH, in-kind, etc.

Example:

1

method
integer | null

Payment method code: 1=cash, 2=check, 3=Stripe, 6=PayPal, 8=Stripe-Connect, 9=Flutterwave, 10=Flutterwave-standard, 11=QPayPro, 12=ACH-direct-debit, 13=in-kind. See config/constants.php for canonical mapping.

Example:

3

frequency
enum<integer> | null

Recurrence cadence: 1=every-month, 2=every-3-months, 3=every-6-months, 4=every-year, 5=one-time, 6=bi-weekly, 7=every-2-months.

Available options:
1,
2,
3,
4,
5,
6,
7,
null
Example:

5

one_time
boolean

True for one-off gifts; false when the donation is part of a recurring commitment.

Example:

true

duration
string<date> | null

Optional end date for time-bounded recurring donations.

Example:

"2027-01-15"

processing_fee
number<float> | null

Total allocated collection cost in processor_fee_currency: Stripe processing fee plus any Connect platform fee. Eligible fee-free cash/check records return zero; unverified fees remain null.

Example:

2

platform_fee
number<float> | null

Connect application fee breakdown already included in processing_fee. Do not subtract it again from net. Display only when positive.

Example:

0.5

amount_excluding_fee
number<float> | null

Net amount after the inclusive processing_fee, in processor_fee_currency. Original Stripe settlement net, or gross for eligible fee-free cash/check records. Stable compatibility key; later refunds are separate.

Example:

49.5

processor_net_amount
number<float> | null

Same original settlement net as amount_excluding_fee.

Example:

49.5

processor_fee_currency
string | null

Currency of actual fee and net amounts: Stripe settlement currency (which may differ from donation currency), or donation currency for eligible fee-free cash/check records.

Example:

"USD"

donor_covered_fee
number<float> | null

Donor's optional added contribution in the original donation currency, separate from actual gateway expense.

Example:

1.5

processing_fee_known
boolean

Whether valid original Stripe settlement evidence or an eligible fee-free cash/check record establishes fee and net amounts.

Example:

true

actual_charged_amount
number<float> | null

Total amount the gateway captured for the payment. Shared charges repeat this total on each allocation; it is not a per-line fee.

Example:

103

in_kind_category
enum<string> | null

Set only when method is in-kind (13).

Available options:
stocks,
goods,
services,
cryptocurrency,
other,
null
Example:

"goods"

result
string | null

Free-form gateway result (e.g. successful, failed, pending). Gateway-specific values are common.

Example:

"successful"

transaction_id
string | null

External payment-gateway transaction ID (Stripe charge id, PayPal capture id, etc.).

Example:

"ch_3OqXXXXX"

transaction_status
string | null

External gateway status string.

Example:

"succeeded"

refunded
boolean

True if the donation has been at least partially refunded.

Example:

false

refunded_amount
number<float> | null

Amount refunded so far (in currency).

Example:

0

refundable
boolean

Whether the gateway integration believes this donation can still be refunded.

Example:

true

is_tax_deductible
boolean

Whether the donation is reportable as tax-deductible giving.

Example:

true

tags
string[] | null

Free-form donor / admin tags.

Example:
notes
string | null

Plaintext notes attached to the donation (memo line, admin remarks).

Example:

"Memo: in honor of John Doe"

quickbooks_receipt_id
string | null

QuickBooks receipt id, if synced.

Example:

"qbo_5512"

receipt_sent_at
string<date-time> | null

When the donation receipt email was last sent (null if never).

Example:

"2026-01-02T08:30:00Z"

acknowledged_at
string<date-time> | null

When this gift was acknowledged for stewardship tracking. Null means pending acknowledgement.

Example:

"2026-01-03T10:15:00Z"

acknowledged_by_user_id
integer<int64> | null

Admin user who last acknowledged the gift, when known.

Example:

42

acknowledgement_source
enum<string> | null

How the gift was acknowledged.

Available options:
manual,
auto_email,
receipt,
mailing,
interaction,
import,
null
Example:

"manual"

acknowledgement_context_json
object | null

Lightweight acknowledgement metadata such as note, previous state, or receipt context.

json_fields

Custom profile/record fields. Raw model responses retain the encoded JSON string; projection endpoints may return a decoded map or list. Use the record form definition to interpret field keys.

batch_id
integer<int64> | null

Set when imported via CSV; groups donations imported together.

Example:

null

is_csv_import
boolean

True when the row was created from a CSV import (vs. live gateway charge).

Example:

false

created_at
string<date-time>
Example:

"2026-01-02T08:25:00Z"

updated_at
string<date-time>
Example:

"2026-01-02T08:30:00Z"

deleted_at
string<date-time> | null
Example:

null