Data glossary

This glossary and the portal are generated from the same versioned API contract. Updates become public when that version is published. Each object is described once, with the operations and events where it appears, and each field appears once inside its object. A field that holds another object points to that object's table; inside that table, Required means required whenever the object itself is present.

Required means the field must be present, not that its value is known. Null means no value is supplied; it is different from omitting the field. Conditional requirements name the parent object or event type. In a field name, [] means each item in a list. Sandbox-only operations simulate activity and are unavailable in production. Deprecated fields are kept for existing integrations; the API reference names what replaces them.

The donor may confirm or correct prefilled values. Exported donor profiles exclude birth dates, government identifiers and identity documents. Bank acceptance does not prove final credit at the destination; a fee record does not prove a separate payout to the partner.

See the API reference for request formats and the event catalog for subscriptions.

What you can send us

Every request

Header When present Meaning
Idempotency-Key Required on every POST Identifier you choose for one write request. Reuse it when retrying the same request so the action is not performed twice.
Authorization Required on every call Proves which partner is making the request. Send Bearer followed by your API key: sk_test_… in the sandbox, sk_live_… in production.

Path and query parameters

Parameter In Operations When present Meaning
cursor query GET /v1/churches, GET /v1/enrollments Optional Marker returned by the previous page; send it to continue the same list.
id path GET /v1/churches/{id}, POST /v1/churches/{id}/bank-account, POST /v1/churches/{id}/payout-schedule, POST /v1/churches/{id}/verification Required Church id (ch_...).
church_id query GET /v1/flow-settings, GET /v1/enrollments/{id} Optional Church identifier used to select the church’s records or appearance settings.
id path GET /v1/donor_sessions/{id} Required Identifier of the donor session this request concerns.
church_id query GET /v1/enrollments Required Church identifier used to select the church’s records or appearance settings.
id path GET /v1/enrollments/{id} Required Identifier of the recurring giving arrangement this request concerns.
donation_id query GET /v1/refunds Required Identifier of the individual donation whose refunds you want to read.
id path GET /v1/refunds/{id}, POST /v1/refunds/{id}/cancel Required Refund id, as returned by POST /v1/refunds.
since_cursor query GET /v1/financial_events, GET /v1/events Optional Marker returned by your previous event page; send it to continue reading changes without starting again.
type query GET /v1/events Optional Only return notices of this exact event type.
id path POST /v1/webhook_endpoints/{id}/test, GET /v1/webhook_endpoints/{id}/deliveries, DELETE /v1/webhook_endpoints/{id} Required Webhook endpoint id (we_...).

ChurchInput

Appears in: POST /v1/churches (request body); churches in POST /v1/churches/import (request body).

Field When present Meaning
name Required Name of the church displayed to people.
reference Optional Your reference for this record, used to match it with your own system.
ein Optional The church’s nine-digit US tax identification number (EIN).
bank_account Optional Church bank account to receive payments. Its numbers are supplied only in the request. Ignored when another platform registered the church first. See BankAccountInput.
payout_schedule Optional When the church receives payouts: daily (the default, every weekday cutoff) or weekly (the next Monday after each deposit, or the next business day when Monday is a bank holiday). The money waits in the donor's account until then. Allowed values: daily, weekly.

BankAccountInput

Appears in: bank_account in ChurchInput; POST /v1/churches/{id}/bank-account (request body).

Field When present Meaning
routing_number Required Nine-digit number identifying the US bank (ABA routing number).
account_number Required Number identifying the church’s account at its bank. Roster does not return the full number.
legal_name Optional Legal name of the account holder; used when checking ownership.

Import churches in batch — POST /v1/churches/import

Field When present Meaning
churches Required List of churches registered through your platform. See ChurchInput.

Set when the church receives its payouts — POST /v1/churches/{id}/payout-schedule

Field When present Meaning
payout_schedule Required When the church receives payouts: daily (the default, every weekday cutoff) or weekly (the next Monday after each deposit, or the next business day when Monday is a bank holiday). The money waits in the donor's account until then. Allowed values: daily, weekly.

Submit legal details for an existing church — POST /v1/churches/{id}/verification

Field When present Meaning
ein Required The church’s nine-digit US tax identification number (EIN).
account_holder_type Required Confirms the receiving account is held by the church as an organization. An account in a person's name cannot receive payouts and gets 400. Allowed values: organization.
address_type Required Confirms the church has a street address. A post office box alone is not accepted and gets 400. Allowed values: street.
incorporation_date Required Date the organization was legally formed, written as YYYY-MM-DD.
representative_name Required Full name of the person representing the church.

ChurchConsentInput

Appears in: POST /v1/church_consents (request body).

Field When present Meaning
church_id Optional Roster identifier of the church this record belongs to.
church_reference Optional Your church identifier, usable before a Roster church identifier exists.
document Required Name you give the agreement or permission the church accepted.
version Required Version of the agreement the church accepted.
accepted_at Required Date and time the church accepted the agreement; cannot be in the future.
method Required How the church accepted the agreement: terms of service, signed addendum, an in-product opt-in or another method. Allowed values: terms_of_service, signed_addendum, in_product_optin, other.
reference Optional Your reference for this record, used to match it with your own system.

FlowSettingsInput

Appears in: PUT /v1/flow-settings (request body).

Field When present Meaning
expected_version Required The version of the settings you read. If someone saved since then, the save is refused with the current settings.
church_id Optional Church whose own appearance you save. Omit it to save the partner default.
button_label Optional Text on the button in your own website that opens the donor flow. Required without church_id. With church_id, omit it to use the partner default.
brand_color Optional; may be null Main brand color, written as a hash sign followed by six hexadecimal digits. Without church_id, omitting it (or sending null) removes the saved color and the donor flow uses its standard look. With church_id, omitting it uses the partner default.
display_name Optional Name of your platform shown to the donor.
support_contact Optional Support email address shown to the donor.
logo_url Optional HTTPS address of the logo image you host. Today the donor flow shows it only on the amount screen, and donor sessions you create start after that screen.
cta_label Optional Text on the continue button inside the Roster donor flow. Today the donor flow shows it only on the amount screen, and donor sessions you create start after that screen.
manage_url Optional HTTPS address of the page in your account area where donors change or cancel their gift. Emails to donors who came through you link there.
customization Required Appearance settings and declaration of donor fields your platform intends to prefill. Always sent; with church_id it can be empty, and what it omits comes from the partner default.
customization.customize_churches Optional Whether individual churches may override the partner appearance. Churches without their own settings use the partner defaults. Required without church_id. Not saved for a church; only the partner default turns church overrides on.
customization.collected_fields Optional Names of donor fields your platform intends to prefill. This list contains no personal values; those are sent when opening each donor session. Required without church_id. With church_id, omit it to use the partner list.
customization.css Optional Allowed appearance properties for Roster-controlled screens. Provider screens keep their own restrictions; arbitrary CSS selectors and remote resources are not accepted. Required without church_id. With church_id, properties you omit use the partner value.
customization.css.background_color Optional Background color of the Roster donor flow.
customization.css.text_color Optional Color of the main text.
customization.css.button_color Optional Background color of action buttons.
customization.css.button_text_color Optional Color of text inside action buttons.
customization.css.input_background Optional Background color of fields where the donor types.
customization.css.input_text_color Optional Color of text the donor types.
customization.css.border_color Optional Color of borders around controls.
customization.css.modal_width Optional Width of the donor-flow window, from 280 to 640 pixels.
customization.css.border_radius Optional Rounding of the window’s corners, from 0 to 32 pixels.
customization.css.button_radius Optional Rounding of button corners, from 0 to 32 pixels.
customization.css.input_radius Optional Rounding of input-field corners, from 0 to 32 pixels.
customization.css.font_size Optional Text size, from 14 to 24 pixels.
customization.css.padding Optional Space inside the window’s edges, from 0 to 48 pixels.
customization.css.gap Optional Space between elements, from 0 to 48 pixels.
customization.css.line_height Optional Space between text lines, from 1.2 to 2 times the text size.
customization.css.font_family Optional Typeface to use on Roster-controlled screens; choose one of the supported names. Allowed values: Inter, Arial, Georgia, system-ui, sans-serif, serif.

AllowedOriginsInput

Appears in: PUT /v1/allowed_origins (request body).

Field When present Meaning
origins Required Websites where your pages open the Roster donor flow, written as an HTTPS address with no path.
expected_origins Optional The list of sites you read before changing it; if someone changed it meanwhile, the save is refused instead of overwriting.

DonorSessionInput

Appears in: POST /v1/donor_sessions (request body).

Field When present Meaning
church_id Required Roster identifier of the church this record belongs to.
donor_phone Optional Donor phone number, including country code, to prefill the flow (for example +12025550100, a sandbox test number). The donor confirms it.
mode Required How the recurring gift is calculated: pct is a percentage; fixed is a fixed dollar amount. Allowed values: pct, fixed.
value Required Giving amount for the selected mode: a percentage for pct, or US dollars for fixed.
reference Optional Your platform's identifier for this donor, returned in the session and in the enrollment it creates. Letters, digits, '.', '_', ':' and '-', up to 64 characters; never an email address, phone number or name.
fund Optional Fund or designation for this gift in your platform, such as General Fund, up to 60 characters. Returned in the session and in the enrollment it creates. It does not change where money goes.
funds Optional How the donor split this gift among funds of the same church: your fund identifier, an optional name, and a percent (adding up to 100) or, for a fixed gift, an amount in dollars (adding up to the gift). Every donation then reports each fund's amount. It does not change where money goes.
funds[].id Required when funds is provided and an item exists in funds Your platform's identifier for the fund. Letters, digits, '.', '_', ':' and '-', up to 64 characters.
funds[].name Optional Name of the fund shown to the donor, such as Building Fund, up to 60 characters.
funds[].percent Optional Share of the gift for this fund, greater than 0 and at most 100, with at most two decimal places, like 33.33. Send percent or amount for every fund, not both.
funds[].amount Optional US dollars per paycheck for this fund, greater than 0 with at most two decimal places, like 12.50. Only with mode fixed; the amounts add up exactly to the gift value.
donor Optional Information your platform already knows and sends to prefill the donor flow. The donor confirms or corrects it. The raw session prefill is not returned by session reads. Authorized confirmed profile fields can later be sent in donor and donation updates; birth date and identity documents are excluded. See DonorPrefill.

DonorPrefill

Appears in: donor in DonorSessionInput.

Field When present Meaning
given_name Optional Donor’s first name.
family_name Optional Donor’s last name.
date_of_birth Optional Birth date supplied to prefill the identity step, written as YYYY-MM-DD; an empty or blank value is treated as absent. It is not included in the donor profile exported to partners.

ManageSessionInput

Appears in: POST /v1/manage_sessions (request body).

Field When present Meaning
enrollment_id Required Identifier of the recurring gift the donor will change or cancel.
church_id Optional Roster identifier of the church this record belongs to.
donor_phone Optional Donor phone number, including country code (for example +12025550100). Today the manage flow does not fill it in; the donor types it and confirms it with a code.

RefundInput

Appears in: POST /v1/refunds (request body).

Field When present Meaning
donation_id Required Identifier of the individual donation to return to the donor.
amount_minor Optional Amount to return to the donor, in US cents; 2500 means US$25.00. Leave it out to return everything not yet returned.
reason Required Why the donation is returned: duplicate, requested_by_donor or other. Allowed values: duplicate, requested_by_donor, other.
cancel_recurrence Required Whether to also cancel the donor's recurring gift. Required; true cancels it, false keeps it.
metadata Optional Your own labels for the refund, such as a support ticket number, returned exactly as sent. Up to 50 keys.

WebhookEndpointInput

Appears in: POST /v1/webhook_endpoints (request body).

Field When present Meaning
url Required HTTPS address where Roster sends notices, on the standard port and with a public host name. IP addresses, a username or password in the address and internal names are refused. At most 3 active endpoints per partner.
event_types Required Kinds of notices this address is subscribed to receive.

Simulate a payroll deposit (sandbox only) — POST /sandbox/simulate/deposit

Field When present Meaning
church_id Required Roster identifier of the church this record belongs to.
enrollment_id Optional Recurring giving arrangement whose donor account receives the test deposit; Roster finds the account.
account_ref Optional Reference to the simulated bank account that will receive the test deposit.
amount Required Amount of the test deposit in US dollars; 25.50 means US$25.50. The sandbox accepts up to US$1,000,000.00.
trace Optional Your reference for this simulated bank transaction; Roster scopes it to your account before sending it.

Simulate payroll connection (sandbox only) — POST /sandbox/simulate/payroll-connected

Field When present Meaning
enrollment_id Required Identifier of the recurring giving arrangement; links its individual donations over time.
church_id Required Roster identifier of the church this record belongs to.

Simulate the payroll vendor confirming the deduction removal (sandbox only) — POST /sandbox/simulate/payroll-disconnected

Field When present Meaning
enrollment_id Required Identifier of the recurring giving arrangement; links its individual donations over time.
church_id Required Roster identifier of the church this record belongs to.
outcome Optional Payroll provider result to simulate. success confirms the deduction was removed; error simulates the provider failing to remove it. Defaults to success. Allowed values: success, error.

Simulate the payroll connection breaking (sandbox only) — POST /sandbox/simulate/connection-broken

Field When present Meaning
enrollment_id Required Identifier of the recurring giving arrangement; links its individual donations over time.
church_id Required Roster identifier of the church this record belongs to.
status Optional Payroll-connection state to simulate in the sandbox. Allowed values: user_action_required, unavailable, customer_disabled, degraded, active.

Simulate the bank confirming an account closure (sandbox only) — POST /sandbox/simulate/account-closure

Field When present Meaning
enrollment_id Required Identifier of the recurring giving arrangement; links its individual donations over time.
church_id Required Roster identifier of the church this record belongs to.

Simulate the bank returning a settled gift days later (sandbox only) — POST /sandbox/simulate/late-return

Field When present Meaning
church_id Required Roster identifier of the church this record belongs to.
occurrence_id Required Identifier of the individual donation being simulated.
return_code Required Bank code explaining a returned transfer, such as R03 for an account that could not be located.
leg Optional Which part of the transfer is being returned: church payment or fees. Allowed values: church, fee.
after_days Optional Number of days after transfer execution before the simulated return is due. The simulation is refused if that time has not passed.

Simulate a KYC outcome (sandbox only) — POST /sandbox/simulate/kyc

Field When present Meaning
enrollment_id Optional Roster identifier of the enrollment whose donor the identity result applies to.
donor_id Optional Roster identifier of the donor.
church_id Required Roster identifier of the church this record belongs to.
outcome Optional Identity-verification result to simulate. passed lets the donor continue; review and failed both keep the donor on the in-review screen, and with failed no account is prepared. Defaults to passed. Allowed values: passed, review, failed.

Simulate the donor's bank returning a refund (sandbox only) — POST /sandbox/simulate/refund-returned

Field When present Meaning
refund_id Required Identifier of the refund the simulated donor's bank sends back.
return_code Optional Bank code explaining a returned transfer, such as R03 for an account that could not be located.

What you can receive from us

Church

Appears in: POST /v1/churches → 200, 201; church in ImportItemResult; GET /v1/churches/{id} → 200.

Field When present Meaning
id Required Roster identifier of the church.
name Required Name of the church displayed to people.
created_at Required Date and time this record was created, in UTC.
reference Optional Your reference for this record, used to match it with your own system.
linked Optional Indicates the church was already registered and your platform was linked to its existing record. Allowed values: existing_church.
consents Optional Records of agreements the church accepted. Returned when reading a single church. See ChurchConsent.
payout_ready Optional Whether the church meets the church-level requirements to receive payments. Each donation still has its own checks and timing.
receiving_account_verified Optional Whether the current receiving account has been verified and its payment destination registered.
bank_verification Optional Result of checking the church’s receiving bank account, returned when the church is created or imported with an account. Not returned when reading the church later, nor when another platform registered the church first; the account you sent is then ignored. See BankVerification.
payout_schedule Optional When the church receives payouts: daily (the default, every weekday cutoff) or weekly (the next Monday after each deposit, or the next business day when Monday is a bank holiday). The money waits in the donor's account until then. Allowed values: daily, weekly.

ChurchConsent

Appears in: consents in Church; POST /v1/church_consents → 200, 201.

Field When present Meaning
church_id Optional Roster identifier of the church this record belongs to.
church_reference Optional Your church identifier, usable before a Roster church identifier exists.
document Required Name you give the agreement or permission the church accepted.
version Required Version of the agreement the church accepted.
accepted_at Required Date and time the church accepted the agreement; cannot be in the future.
method Required How the church accepted the agreement: terms of service, signed addendum, an in-product opt-in or another method. Allowed values: terms_of_service, signed_addendum, in_product_optin, other.
reference Optional Your reference for this record, used to match it with your own system.
received_at Required Date and time Roster received this record, in UTC.

BankVerification

Appears in: bank_verification in Church; bank_verification in POST /v1/churches/{id}/bank-account → 200.

Field When present Meaning
status Required Result of checking ownership of the receiving account: verified, already_verified, in_review, rejected or pending (recorded without a check, production only for now). Verification alone does not mean a particular donation is ready for payment. Allowed values: verified, in_review, rejected, already_verified, pending.
account_mask Required Last four digits of the bank account, so you can recognize it without exposing the full number.
institution_name Required; may be null Name of the bank, or null when unavailable.

List churches — GET /v1/churches → 200

Field When present Meaning
churches Required List of churches registered through your platform. See ChurchListItem.
next_cursor Optional Marker for requesting the next page of churches. When it is absent, you have every church.

ChurchListItem

Appears in: churches in GET /v1/churches → 200.

Field When present Meaning
id Required Roster identifier of the church.
name Required Name of the church displayed to people.
reference Optional Your reference for this record, used to match it with your own system.
created_at Required Date and time this record was created, in UTC.
payout_ready Required Whether the church meets the church-level requirements to receive payments. Each donation still has its own checks and timing.

Import churches in batch — POST /v1/churches/import → 200

Field When present Meaning
results Required Result for each church sent in the import, in the same order. See ImportItemResult.

ImportItemResult

Appears in: results in POST /v1/churches/import → 200.

Field When present Meaning
index Required Position of the church in your import list, starting at 0.
status Required Created means a new import item succeeded; replayed means its earlier result was reused; rejected means this item could not be accepted. Allowed values: created, replayed, rejected.
church Optional Church record returned for a successful import item. See Church.
detail Optional Explanation of the result or problem, without repeating private values from your request.

Register or replace the church's settlement account — POST /v1/churches/{id}/bank-account → 200

Field When present Meaning
church_id Required Roster identifier of the church this record belongs to.
bank_verification Required Result of checking the church’s receiving bank account. See BankVerification.

Set when the church receives its payouts — POST /v1/churches/{id}/payout-schedule → 200

Field When present Meaning
church_id Required Roster identifier of the church this record belongs to.
payout_schedule Required When the church receives payouts: daily (the default, every weekday cutoff) or weekly (the next Monday after each deposit, or the next business day when Monday is a bank holiday). The money waits in the donor's account until then. Allowed values: daily, weekly.

Submit legal details for an existing church — POST /v1/churches/{id}/verification → 202

Field When present Meaning
status Required accepted means Roster queued the submission. It is not an approval and does not make the church ready for payouts. Allowed values: accepted.
request_id Required Reference of this legal-details submission. It stays the same when you repeat the same submission; give it to Roster support to locate it.

FlowSettingsResponse

Appears in: GET /v1/flow-settings → 200; PUT /v1/flow-settings → 200.

Field When present Meaning
version Required Version of the saved settings, to send back as expected_version when you save. Zero before the first save.
settings Required; may be null Saved donor-flow settings in the same shape the save request uses. Null means no settings have been saved.
settings.button_label Optional Text on the button in your own website that opens the donor flow. Required without church_id. With church_id, omit it to use the partner default.
settings.brand_color Optional; may be null Main brand color, written as a hash sign followed by six hexadecimal digits. Without church_id, omitting it (or sending null) removes the saved color and the donor flow uses its standard look. With church_id, omitting it uses the partner default.
settings.display_name Optional Name of your platform shown to the donor.
settings.support_contact Optional Support email address shown to the donor.
settings.logo_url Optional HTTPS address of the logo image you host. Today the donor flow shows it only on the amount screen, and donor sessions you create start after that screen.
settings.cta_label Optional Text on the continue button inside the Roster donor flow. Today the donor flow shows it only on the amount screen, and donor sessions you create start after that screen.
settings.manage_url Optional HTTPS address of the page in your account area where donors change or cancel their gift. Emails to donors who came through you link there.
settings.customization Optional Appearance settings and declaration of donor fields your platform intends to prefill. Always sent; with church_id it can be empty, and what it omits comes from the partner default.
settings.customization.customize_churches Optional Whether individual churches may override the partner appearance. Churches without their own settings use the partner defaults. Required without church_id. Not saved for a church; only the partner default turns church overrides on.
settings.customization.collected_fields Optional Names of donor fields your platform intends to prefill. This list contains no personal values; those are sent when opening each donor session. Required without church_id. With church_id, omit it to use the partner list.
settings.customization.css Optional Allowed appearance properties for Roster-controlled screens. Provider screens keep their own restrictions; arbitrary CSS selectors and remote resources are not accepted. Required without church_id. With church_id, properties you omit use the partner value.
settings.customization.css.background_color Optional Background color of the Roster donor flow.
settings.customization.css.text_color Optional Color of the main text.
settings.customization.css.button_color Optional Background color of action buttons.
settings.customization.css.button_text_color Optional Color of text inside action buttons.
settings.customization.css.input_background Optional Background color of fields where the donor types.
settings.customization.css.input_text_color Optional Color of text the donor types.
settings.customization.css.border_color Optional Color of borders around controls.
settings.customization.css.modal_width Optional Width of the donor-flow window, from 280 to 640 pixels.
settings.customization.css.border_radius Optional Rounding of the window’s corners, from 0 to 32 pixels.
settings.customization.css.button_radius Optional Rounding of button corners, from 0 to 32 pixels.
settings.customization.css.input_radius Optional Rounding of input-field corners, from 0 to 32 pixels.
settings.customization.css.font_size Optional Text size, from 14 to 24 pixels.
settings.customization.css.padding Optional Space inside the window’s edges, from 0 to 48 pixels.
settings.customization.css.gap Optional Space between elements, from 0 to 48 pixels.
settings.customization.css.line_height Optional Space between text lines, from 1.2 to 2 times the text size.
settings.customization.css.font_family Optional Typeface to use on Roster-controlled screens; choose one of the supported names. Allowed values: Inter, Arial, Georgia, system-ui, sans-serif, serif.
church_settings Optional; may be null Only for a church. The settings the church itself stores, on top of the partner default. Null means the church uses the partner default as is. Same fields as settings.
removed Optional Only in the response to a save. Saved properties the save took away, named by their path in the request body. Empty when nothing was removed.
skin Required; may be null; deprecated Saved appearance settings. Null means no settings have been saved. Same fields as settings, with camelCase names.

AllowedOrigins

Appears in: GET /v1/allowed_origins → 200; PUT /v1/allowed_origins → 200.

Field When present Meaning
origins Required Websites where your pages open the Roster donor flow, written as an HTTPS address with no path.

DonorSession

Appears in: POST /v1/donor_sessions → 200, 201; GET /v1/donor_sessions/{id} → 200.

Field When present Meaning
id Required Identifier of this visit to the donor flow, not a donor identifier.
url Optional One-time link that opens the donor flow. Returned only at creation; its token expires after 30 minutes.
status Required Progress of this donor session. The current service reports created, opened, completed and expired. Other declared states are reserved and are not currently produced. Allowed values: created, opened, in_progress, completed, expired, abandoned, failed.
church_id Required Roster identifier of the church this record belongs to.
mode Required How the recurring gift is calculated: pct is a percentage; fixed is a fixed dollar amount. Allowed values: pct, fixed.
value Required Giving amount for the selected mode: a percentage for pct, or US dollars for fixed.
expires_at Required Date and time the link or session stops being valid, in UTC.
reference Optional Your platform's identifier for the donor, as you sent it when creating the session.
fund Optional Fund or designation for the gift in your platform, as you sent it when creating the session. It does not change where money goes.
funds Optional How the donor split the gift among funds of the same church, as you sent it when creating the session: your fund identifier, the name, and the percent or the amount. It does not change where money goes.
funds[].id Required when funds is provided and an item exists in funds Your platform's identifier for the fund. Letters, digits, '.', '_', ':' and '-', up to 64 characters.
funds[].name Optional Name of the fund shown to the donor, such as Building Fund, up to 60 characters.
funds[].percent Optional Share of the gift for this fund, when the split was sent in percents. A fund has percent or amount, never both.
funds[].amount Optional US dollars per paycheck for this fund, as you sent it, when the split was sent in dollars for a fixed gift. A fund has percent or amount, never both.
enrollment_id Optional Identifier of the recurring gift this donor session created. Present once the session is completed.
donor Optional; may be null Verified donor of a completed session. Returned only where financial integration is enabled, which today is the sandbox; production returns null. Birth date, government identifiers, documents and bank details are not included. Null when unavailable. See IntegrationDonor.

IntegrationDonor

Appears in: donor in DonorSession; donor in DonationSnapshot; payload.donor in FinancialEvent; payload.donor of donor.updated.

Field When present Meaning
id Required Roster identifier of the donor.
given_name Required Donor’s first name. An empty string means it is not available.
family_name Required Donor’s last name. An empty string means it is not available.
email Required; may be null Donor’s email address, or null when unavailable.
phone Required; may be null Donor’s confirmed phone number, or null when unavailable.
updated_at Required; may be null Date and time this information last changed, in UTC.
address Required Donor’s mailing address.
address.line1 Required Street address, including any apartment or unit information supplied. An empty string means it is not available.
address.city Required City in the mailing address. An empty string means it is not available.
address.state Required Two-letter US state abbreviation, such as FL. An empty string means it is not available.
address.postal_code Required US ZIP code, with an optional four-digit extension. An empty string means it is not available.

ManageSession

Appears in: POST /v1/manage_sessions → 200, 201.

Field When present Meaning
id Required Identifier of this visit to the manage flow, not a donor identifier.
url Optional One-time link that opens the manage flow. Returned only at creation; its token expires after 30 minutes.
status Required Whether the donor has opened the manage link. Allowed values: created, opened.
church_id Required Roster identifier of the church this record belongs to.
enrollment_id Required Identifier of the recurring gift the donor will change or cancel.
expires_at Required Date and time the link or session stops being valid, in UTC.

List enrollments of a church — GET /v1/enrollments → 200

Field When present Meaning
enrollments Required List of recurring giving arrangements. One donor can have more than one arrangement. See Enrollment.
next_cursor Optional Marker for requesting the next page without starting again. No marker means there is no next page.

Enrollment

Appears in: enrollments in GET /v1/enrollments → 200; GET /v1/enrollments/{id} → 200.

Field When present Meaning
id Required Identifier of this recurring giving arrangement.
church_id Required Roster identifier of the church this record belongs to.
status Required Current state of the recurring giving arrangement. Active means it is enabled; it does not prove a donation was received. Allowed values: pending, active, paused, cancel_pending, cancelled, terminated, abandoned.
mode Optional How the recurring gift is calculated: pct is a percentage; fixed is a fixed dollar amount. Allowed values: pct, fixed.
value Optional Giving amount for the selected mode: a percentage for pct, or US dollars for fixed.
created_at Optional Date and time this record was created, in UTC.
updated_at Optional Date and time this information last changed, in UTC.
reference Optional Your platform's identifier for the donor, as you sent it when creating the session.
fund Optional Fund or designation for the gift in your platform, as you sent it when creating the session. It does not change where money goes.
funds Optional How the donor split the gift among funds of the same church, as you sent it when creating the session: your fund identifier, the name, and the percent or the amount. It does not change where money goes.
funds[].id Required when funds is provided and an item exists in funds Your platform's identifier for the fund. Letters, digits, '.', '_', ':' and '-', up to 64 characters.
funds[].name Optional Name of the fund shown to the donor, such as Building Fund, up to 60 characters.
funds[].percent Optional Share of the gift for this fund, when the split was sent in percents. A fund has percent or amount, never both.
funds[].amount Optional US dollars per paycheck for this fund, as you sent it, when the split was sent in dollars for a fixed gift. A fund has percent or amount, never both.

Refund

Appears in: POST /v1/refunds → 200, 201; refunds in GET /v1/refunds → 200; GET /v1/refunds/{id} → 200; POST /v1/refunds/{id}/cancel → 200; payload in FinancialEvent; POST /sandbox/simulate/refund-returned → 200; payload of refund.created; payload of refund.updated.

Field When present Meaning
id Required Roster identifier of the refund.
object Required Kind of record; always refund.
donation_id Required Identifier of the individual donation this refund returns.
church_id Required Roster identifier of the church this record belongs to.
amount_minor Required Amount returned to the donor, in US cents; 2500 means US$25.00.
currency Required Currency of the amount; USD means US dollars.
funds Required; may be null How much of the refund comes out of each fund of the donation's split, in US cents. Null when the donation has no split.
funds[].id Required when funds is provided and an item exists in funds Your platform's identifier for the fund. Letters, digits, '.', '_', ':' and '-', up to 64 characters.
funds[].amount_minor Required when funds is provided and an item exists in funds Part of this refund taken from the fund, in US cents; 2500 means US$25.00.
status Required Where the refund is: pending (on its way), requires_action (waiting for the donor's bank account), succeeded (received by the donor's bank), failed or canceled. Allowed values: pending, requires_action, succeeded, failed, canceled.
pending_reason Required; may be null What a pending refund waits for: in_review, awaiting_approval or processing (sent to the donor's bank). Null when the refund is not pending.
reason Required Why the donation is returned: duplicate, requested_by_donor, other, or after_cancellation for money Roster returns on its own because it arrived after the recurring gift was cancelled. Allowed values: duplicate, requested_by_donor, other, after_cancellation.
failure_reason Required; may be null Why a failed refund ended: not_refundable (Roster handles the donation directly) or bank_error. Null when the refund did not fail.
cancel_recurrence Required Whether the refund request also cancelled the donor's recurring gift.
metadata Required; may be null Your own labels for the refund, returned exactly as sent. Null when none were sent.
created_at Required Date and time the refund was created, in UTC.
updated_at Required Date and time this information last changed, in UTC.

List the refunds of a donation — GET /v1/refunds → 200

Field When present Meaning
refunds Required The refunds of the donation, oldest first. Empty when the donation has none. See Refund.

Reconcile identified donations and bank outcomes — GET /v1/financial_events → 200

Field When present Meaning
events Required List of notices about changes. A notice can contain several fields. See FinancialEvent.
next_cursor Required; may be null Resume point for your next poll. Store it with the page; an empty page means you are caught up, and a null value never replaces a stored marker.

FinancialEvent

Appears in: events in GET /v1/financial_events → 200; webhook deliveries.

Field When present Meaning
event_id Required Unique identifier of this notice. If it arrives again with the same identifier, do not count it as a new change.
event_id Required when this response variant is used Unique identifier of this notice. If it arrives again with the same identifier, do not count it as a new change.
event_type Required Kind of change reported by this notice.
event_type Required when this response variant is used Kind of change reported by this notice: refund.created when the refund is created, refund.updated on every later change. Allowed values: refund.created, refund.updated.
sequence Required Position of this notice in the partner’s financial history; used when reading changes in order.
sequence Required when this response variant is used Position of this notice in the partner’s financial history; used when reading changes in order.
occurred_at Required Date and time the reported change happened, in UTC.
occurred_at Required when this response variant is used Date and time the reported change happened, in UTC.
church_id Required Roster identifier of the church this record belongs to.
church_id Required when this response variant is used Roster identifier of the church this record belongs to.
livemode Required Whether this notice comes from production (true) or from the sandbox (false). When one receiver gets notices from both, use it to keep test notices out of your real records.
livemode Required when this response variant is used Whether this notice comes from production (true) or from the sandbox (false). When one receiver gets notices from both, use it to keep test notices out of your real records.
entity_id Required when this response variant is used Identifier of the refund described by this notice.
entity_id Required when event_type is donation.updated Identifier of the individual donation described by this notice.
entity_id Required when event_type is donor.updated Identifier of the donor described by this notice.
payload Required when this response variant is used The whole refund, as GET /v1/refunds/{id} returns it at the moment of the change. See Refund.
payload Required when event_type is donation.updated Fields describing the change. The contents depend on the kind of notice. See DonationSnapshot.
payload Required when event_type is donor.updated Fields describing the change. The contents depend on the kind of notice.
payload.donor Required when event_type is donor.updated Authorized donor profile. An unknown email, phone or update time is null, and an unknown name or address line is an empty string. Government identifiers, birth date and documents are not exported. See IntegrationDonor.
payload.church_id Required when event_type is donor.updated Roster identifier of the church this record belongs to.
payload.revision Required when event_type is donor.updated Version of this record. Your software compares versions as text to avoid replacing newer data with an older notice.

DonationSnapshot

Appears in: payload in FinancialEvent; payload of donation.updated.

Field When present Meaning
revision Required Version of this record. Your software compares versions as text to avoid replacing newer data with an older notice.
id Required Identifier of this individual donation, not the recurring arrangement.
church_id Required Roster identifier of the church this record belongs to.
enrollment_id Required; may be null Identifier of the recurring giving arrangement; links its individual donations over time.
donor_id Required; may be null Roster identifier of the donor.
method Required Donation method; paycheck means giving from payroll.
currency Required Currency of the amount; USD means US dollars.
amount_minor Required; may be null Actual donation deposit in US cents, before bank fees; 2500 means US$25.00. Never an expected future donation. Null means unknown.
status Required Current recorded stage of this donation. transfer_submitted means sent to the bank; transfer_accepted means accepted by the bank, not proof of final credit at the destination. confirmed is reserved until a bank-confirmation producer is connected. Returns can still occur. reversed means the whole donation was refunded to the donor; a partial refund does not change the status. Allowed values: received, in_review, pending_transfer, transfer_submitted, transfer_accepted, confirmed, returned, failed, reversed.
received_at Required; may be null When the donation deposit was received, in UTC; null means unknown.
updated_at Required Date and time this information last changed, in UTC.
residual_minor Required; may be null Recorded amount left for the donor, in US cents; null means unknown.
transfers Required Every recorded part of the payment across all attempts, including the church amount, fees and any refund recovery, with their recorded statuses. A returned part stays listed as returned; if it is sent again, the new transfer appears as another entry.
transfers[].role Required when an item exists in transfers Which part of the payment this is: church amount or fees. A fee entry does not prove a separate payment to the partner. Allowed values: church, fee.
transfers[].amount_minor Required when an item exists in transfers; may be null Amount of this part of the transfer, in US cents; 2500 means US$25.00. Null means unknown.
transfers[].reference Required when an item exists in transfers; may be null Bank reference identifying this transfer, or null when unavailable.
transfers[].status Required when an item exists in transfers Recorded stage of this part of the transfer. submitted means the instruction was sent to the bank; accepted means the bank reported it as executed, which does not prove final credit at the destination; returned means the bank returned it; unknown means the bank record does not say what happened to this part. Allowed values: submitted, accepted, returned, unknown.
return_details Required; may be null Details of a returned transfer, or null when no return is recorded.
return_details.role Required when return_details is provided; may be null Which part of the payment was returned: church or fee. Null means unknown.
return_details.code Required when return_details is provided; may be null Bank code explaining why a transfer was returned.
return_details.amount_minor Required when return_details is provided; may be null Amount returned for this part of the transfer, in US cents; 2500 means US$25.00. Null means unknown.
return_details.reference Required when return_details is provided; may be null Bank reference identifying this transfer, or null when unavailable.
return_details.occurred_at Required when return_details is provided Date and time the reported change happened, in UTC.
donor Required; may be null Authorized donor profile, or null when no profile can be supplied. In a supplied profile, an unknown email, phone or update time is null, and an unknown name or address line is an empty string. Government identifiers, birth date and documents are not exported. See IntegrationDonor.
donor_data_status Required Whether authorized donor profile data is available in this update. Allowed values: available, unavailable.
refunded_minor Required Total already returned to the donor from this donation, in US cents; 2500 means US$25.00. Counts only refunds the donor's bank received; 0 when nothing was returned.
funds Optional The amount of this donation for each fund of the gift's split, in US cents. Each amount is the donation in proportion to the fund's percent or amount, rounded so the amounts add up exactly to amount_minor: the cents left by rounding go to the funds with the largest remainders, and a tie goes to the fund listed first. A split in dollars reports exactly those dollars when the donation equals the gift. Absent when the gift has no split. Every fund is paid to the same church bank account.
funds[].id Required when funds is provided and an item exists in funds Your platform's identifier for the fund. Letters, digits, '.', '_', ':' and '-', up to 64 characters.
funds[].name Optional Name of the fund shown to the donor, such as Building Fund, up to 60 characters.
funds[].percent Optional Share of the gift for this fund, when the split was sent in percents. A fund has percent or amount, never both.
funds[].amount Optional US dollars per paycheck for this fund, as you sent it, when the split was sent in dollars for a fixed gift. A fund has percent or amount, never both.
funds[].amount_minor Required when funds is provided and an item exists in funds; may be null Amount of this donation for this fund, in US cents; 2500 means US$25.00. Null when the donation amount is unknown.
funds[].refunded_minor Optional Total already returned to the donor from this fund, in US cents, counting only refunds the donor's bank received. Never more than the fund's amount; the funds add up to the donation's refunded_minor.

Read the activity event feed — GET /v1/events → 200

Field When present Meaning
events Required List of notices about changes. A notice can contain several fields. See Event.
next_cursor Required; may be null Resume point for your next poll. Store it with the page; an empty page means you are caught up, and a null value never replaces a stored marker.

Event

Appears in: events in GET /v1/events → 200; webhook deliveries.

Field When present Meaning
event_id Required Unique identifier of this notice. If it arrives again with the same identifier, do not count it as a new change.
event_type Required Kind of change reported by this notice. Allowed values: partner_session.created, partner_session.opened, partner_session.completed, partner_session.expired, church.created, church.onboarded, enrollment.created, enrollment.activated, enrollment.updated, enrollment.paused, enrollment.resumed, enrollment.cancel_requested, enrollment.cancelled, enrollment.terminated, enrollment.onboarding_expired.
occurred_at Required Date and time the reported change happened, in UTC.
church_id Required Roster identifier of the church this record belongs to.
entity_id Required Identifier of the record that changed; the enrollment for enrollment notices, the donor session for donor session notices and the church for church notices.
livemode Required Whether this notice comes from production (true) or from the sandbox (false). When one receiver gets notices from both, use it to keep test notices out of your real records.
payload Required Fields describing the change. The contents depend on the kind of notice.

WebhookEndpoint

Appears in: POST /v1/webhook_endpoints → 200, 201.

Field When present Meaning
id Required Identifier of the registered receiving address.
url Required HTTPS address where Roster sends notices for this endpoint.
event_types Required Kinds of notices this address is subscribed to receive.
status Required Whether this receiving address is active or has been removed. Allowed values: active, deleted.
created_at Required Date and time this record was created, in UTC.
secret Optional Secret used to verify that a notice came from Roster. Returned only when the receiving address is created; save it securely.

List active webhook endpoints — GET /v1/webhook_endpoints → 200

Field When present Meaning
endpoints Required Addresses registered to receive automatic notices from Roster.
endpoints[].id Required when an item exists in endpoints Identifier of the registered receiving address.
endpoints[].url Required when an item exists in endpoints HTTPS address where Roster sends notices for this endpoint.
endpoints[].event_types Required when an item exists in endpoints Kinds of notices this address is subscribed to receive.
endpoints[].status Required when an item exists in endpoints Only active endpoints are listed. Allowed values: active.
endpoints[].created_at Required when an item exists in endpoints Date and time this record was created, in UTC.

Send a test delivery — POST /v1/webhook_endpoints/{id}/test → 200

Field When present Meaning
delivered Required Whether your receiving address answered successfully. This does not prove your software finished processing the notice.
status_code Required; may be null Response number returned by the receiving service; 200–299 means it acknowledged receipt. Null means no response number was recorded, which also happens when the address answered with a redirect.
reason Required; may be null Plain-language reason the test delivery failed, such as a redirect, a timeout, a refused connection or a response outside 200–299. Null when delivered is true.

List recent deliveries — GET /v1/webhook_endpoints/{id}/deliveries → 200

Field When present Meaning
health Required Summary of the last 50 delivery attempts to this address, based on the failures in a row up to the latest attempt and on how many of the 50 failed.
health.status Required broken means the latest 3 attempts failed, or 25 or more of the last 50 failed; degraded means the latest attempt failed, or 5 or more of the last 50 failed; healthy means neither; unknown means there is no attempt yet. Allowed values: healthy, degraded, broken, unknown.
health.consecutive_failures Required Failed attempts in a row, counted back from the latest attempt. 0 means the latest attempt was delivered or there is no attempt yet.
health.delivered Required Number of delivered attempts among the last 50.
health.failed Required Number of failed attempts among the last 50.
health.last_success_at Required; may be null Date and time of the latest delivered attempt among the last 50, in UTC. Null when none of them was delivered.
health.last_attempt_at Required; may be null Date and time of the latest attempt, delivered or not, in UTC. Null when there is no attempt yet.
deliveries Required Recorded attempts to send notices. Retrying one notice produces another attempt. See WebhookDelivery.

WebhookDelivery

Appears in: deliveries in GET /v1/webhook_endpoints/{id}/deliveries → 200.

Field When present Meaning
event_id Required Unique identifier of this notice. If it arrives again with the same identifier, do not count it as a new change.
event_type Required Kind of change reported by this notice.
attempted_at Required When this attempt ended (your endpoint answered or the call failed), in UTC.
outcome Required Delivered means the receiver acknowledged this attempt; failed means it did not. A later retry has its own attempt record. Allowed values: delivered, failed.
status_code Required; may be null Response number returned by the receiving service; 200–299 means it acknowledged receipt. Null means no response number was recorded, which also happens when the address answered with a redirect.

List the sandbox test values (sandbox only) — GET /sandbox/fixtures → 200

Field When present Meaning
test_donors Required Values for sandbox test donors in the hosted flow.
test_donors.phone_numbers Required Range of sandbox test phone numbers a test donor can use. Every sandbox account shares them. See SandboxRange.
test_donors.verification_code Required Code that verifies any sandbox test phone number; no text message is sent.
test_donors.identity_review_numbers Required Range of sandbox test phone numbers whose identity check is held in review. See SandboxRange.
test_donors.birth_date_rule Required Rule for the date of birth a sandbox test donor enters.
test_churches Required Values for sandbox test churches.
test_churches.verified_eins Required Range of sandbox EINs that verify a test church within seconds. See SandboxRange.
test_churches.manual_check_eins Required Range of sandbox EINs that hold a test church for a manual check. See SandboxRange.
test_churches.incorporation_date_rule Required Rule for the incorporation date of a sandbox test church.
test_churches.routing_number Required Valid routing number to use for sandbox test churches.
test_churches.account_number_endings Required Receiving-account result for each ending of a sandbox test account number.
test_refund_destination Required Test bank login a sandbox test donor uses to add the account that receives a refund.
test_refund_destination.username Required Username of the sandbox test bank login.
test_refund_destination.passcode Required Password of the sandbox test bank login; a public test value that works only in the sandbox.
test_refund_destination.rule Required How and when a sandbox test donor uses the test bank login.
documentation Required Address of the guide that explains the sandbox test values.

SandboxRange (sandbox only)

Appears in: test_donors.phone_numbers in GET /sandbox/fixtures → 200; test_donors.identity_review_numbers in GET /sandbox/fixtures → 200; test_churches.verified_eins in GET /sandbox/fixtures → 200; test_churches.manual_check_eins in GET /sandbox/fixtures → 200.

Field When present Meaning
from Required First value of a range of sandbox test values.
to Required Last value of a range of sandbox test values, included.

Simulate a payroll deposit (sandbox only) — POST /sandbox/simulate/deposit → 202

Field When present Meaning
status_code Required Response number returned by the receiving service; 200–299 means it acknowledged receipt.
simulated Required Details of the simulated notice sent to the sandbox. Acceptance does not prove all later processing has finished.
simulated.event_type Required Kind of change reported by this notice.
simulated.trace Required Reference the simulated bank used for this deposit; when you sent a trace, its form scoped to your account.
simulated.bank_ts Required Date and time reported by the simulated bank, in UTC.
eligible_at Optional When the test donation's processing window ends, 120 minutes after the bank timestamp, in UTC. From then on a settlement run can pick it up.
next_run_at Optional The earliest weekday 4:00 p.m. America/New_York settlement run that can pick up the test donation, in UTC. That run still checks the enrollment and the church.

Simulate payroll connection (sandbox only) — POST /sandbox/simulate/payroll-connected → 202

Field When present Meaning
status_code Required Response number returned by the receiving service; 200–299 means it acknowledged receipt.
expected_event Required; may be null The public event this simulation leads to — wait for it on your webhook and feed. enrollment.activated for a pending enrollment; null for a reconnection, because only the donor's own Resume emits enrollment.resumed.

Simulate the payroll vendor confirming the deduction removal (sandbox only) — POST /sandbox/simulate/payroll-disconnected → 202

Field When present Meaning
status_code Required Response number returned by the receiving service; 200–299 means it acknowledged receipt.
expected_event Required; may be null The public event this simulation leads to — wait for it on your webhook and feed. enrollment.cancelled for outcome success; null for error, which keeps the cancellation pending.

Simulate the payroll connection breaking (sandbox only) — POST /sandbox/simulate/connection-broken → 202

Field When present Meaning
status_code Required Response number returned by the receiving service; 200–299 means it acknowledged receipt.
expected_event Required; may be null The public event this simulation leads to — wait for it on your webhook and feed. enrollment.paused for the three breaking statuses; null for degraded and active, which deliberately emit nothing.

Simulate the bank confirming an account closure (sandbox only) — POST /sandbox/simulate/account-closure → 202

Field When present Meaning
status_code Required Response number returned by the receiving service; 200–299 means it acknowledged receipt.
simulated Required Details of the simulated notice sent to the sandbox. Acceptance does not prove all later processing has finished.
simulated.event_type Required Kind of change reported by this notice. Allowed values: account.closed.
simulated.trace Required Reference used to identify this simulated bank transaction.
simulated.bank_ts Required Date and time reported by the simulated bank, in UTC.

Simulate the bank returning a settled gift days later (sandbox only) — POST /sandbox/simulate/late-return → 202

Field When present Meaning
status_code Required Response number returned by the receiving service; 200–299 means it acknowledged receipt.
simulated Required Details of the simulated notice sent to the sandbox. Acceptance does not prove all later processing has finished.
simulated.event_type Required Kind of change reported by this notice. Allowed values: ach.transfer.returned.
simulated.trace Required Reference used to identify this simulated bank transaction.
simulated.bank_ts Required Date and time reported by the simulated bank, in UTC.
simulated.leg Required Which part of the transfer is being returned: church payment or fees. Allowed values: church, fee.
simulated.return_code Required Bank code explaining a returned transfer, such as R03 for an account that could not be located.

Simulate a KYC outcome (sandbox only) — POST /sandbox/simulate/kyc → 202

Field When present Meaning
status_code Required Response number returned by the receiving service; 200–299 means it acknowledged receipt.
simulated Required The outcome Roster's identity check received, as a code: ACCEPT for passed, REVIEW for review, REJECT for failed. Acceptance does not prove all later processing has finished. Allowed values: ACCEPT, REVIEW, REJECT.

Problem

Appears in: every API error response.

Field When present Meaning
type Required Address identifying the kind of API error.
title Required Short name of the API error.
detail Required Explanation of the result or problem, without repeating private values from your request.
request_id Required Reference you can give Roster support to locate this request.

Webhook headers

Appears in: Event delivery to your endpoint; Test delivery to your endpoint.

Header When present Meaning
Roster-Signature Required Signature sent with each webhook. Your software checks it with the endpoint secret to confirm the sender and detect changes to the message.
Roster-Webhook-Endpoint Required Identifier of the endpoint the webhook was sent to. It lets your software tell apart two endpoints on the same address and pick the secret that checks the signature.

Event payload fields

Field Events When present Meaning
payload.donor donor.updated Required Authorized donor profile. An unknown email, phone or update time is null, and an unknown name or address line is an empty string. Government identifiers, birth date and documents are not exported. See IntegrationDonor.
payload.church_id donor.updated Required Roster identifier of the church this record belongs to.
payload.revision donor.updated Required Version of this record. Your software compares versions as text to avoid replacing newer data with an older notice.
payload donation.updated Required Fields describing the change. The contents depend on the kind of notice. See DonationSnapshot.
payload refund.created, refund.updated Required Fields describing the change. The contents depend on the kind of notice. See Refund.
payload.donor_session_id partner_session.created, partner_session.opened, partner_session.completed, partner_session.expired Optional Identifier of the donor’s visit to the giving flow.
payload.partner_id partner_session.created Optional Identifier of the partner platform this session belongs to.
payload.church_id partner_session.created, church.created, church.onboarded, enrollment.created Optional Roster identifier of the church this record belongs to.
payload.enrollment_id partner_session.completed Optional Identifier of the recurring gift the donor created in this visit.
payload.name church.created Optional Name of the church displayed to people.
payload.enrollment_id enrollment.created Optional Identifier of the recurring giving arrangement; links its individual donations over time.
payload.mode enrollment.created, enrollment.updated Optional How the recurring gift is calculated: pct is a percentage; fixed is a fixed dollar amount. Allowed values: pct, fixed.
payload.value enrollment.created, enrollment.updated Optional Giving amount for the selected mode: a percentage for pct, or US dollars for fixed.
payload.reference enrollment.created Optional Your platform's identifier for the donor, as you sent it when creating the session.
payload.fund enrollment.created Optional Fund or designation for the gift in your platform, as you sent it when creating the session. It does not change where money goes.
payload.funds enrollment.created Optional How the donor split the gift among funds of the same church, as you sent it when creating the session: your fund identifier, the name, and the percent or the amount. It does not change where money goes.
payload.funds[].id enrollment.created Optional Your platform's identifier for the fund. Letters, digits, '.', '_', ':' and '-', up to 64 characters.
payload.funds[].name enrollment.created Optional Name of the fund shown to the donor, such as Building Fund, up to 60 characters.
payload.funds[].percent enrollment.created Optional Share of the gift for this fund, when the split was sent in percents. A fund has percent or amount, never both.
payload.funds[].amount enrollment.created Optional US dollars per paycheck for this fund, as you sent it, when the split was sent in dollars for a fixed gift. A fund has percent or amount, never both.
payload.expected_amount enrollment.activated Optional; may be null Expected amount of a future payroll gift in US dollars. This is an estimate, not money received. null for a percentage gift — Roster never sees the paycheck, so there is no dollar amount to expect; treat it as unknown, never as zero.
payload.expected_cycle enrollment.activated Optional Estimated date and time, in UTC, of the first payroll cycle after activation, used to anticipate the next donation. Set once at activation and not updated afterwards.
payload.reason enrollment.paused Optional Code for why giving paused; not a free-form explanation. donor_requested: the donor paused giving until resume_at. payroll_connection_broken: the paycheck connection stopped working; no resumption is scheduled. transfer_confirmation_overdue: the donor has not confirmed, through the link Roster emailed, that transfers may go out. Absent when Roster paused giving on its side. Allowed values: donor_requested, payroll_connection_broken, transfer_confirmation_overdue.
payload.resume_at enrollment.paused Optional Planned date and time to resume giving, in UTC, when a resumption is scheduled.
payload.resumed_from enrollment.resumed Optional What made giving resume. donor: the donor resumed it. schedule: the planned resume_at of the pause arrived. transfer_confirmation: the donor confirmed, through the link Roster emailed, that transfers may go out. Allowed values: donor, schedule, transfer_confirmation.
payload.cancellation_business_days enrollment.cancelled Optional Number of business days recorded for the cancellation to take effect.
payload.effective_at enrollment.cancelled Optional Calendar date the cancellation takes effect, written as YYYY-MM-DD in the America/New_York time zone.
payload.reason enrollment.terminated Optional Code for how the enrollment ended, sent only for the codes listed here. connection_lost: the paycheck connection stopped and was not restored in time. Allowed values: connection_lost.
payload.reason enrollment.onboarding_expired Optional Code for why the enrollment closed. onboarding_ttl: setup was not finished within the allowed time. Allowed values: onboarding_ttl.

Test delivery to your endpoint (webhook.test)

Field When present Meaning
event_id Required Unique identifier of this notice. If it arrives again with the same identifier, do not count it as a new change.
event_type Required Kind of change reported by this notice.
occurred_at Required Date and time the reported change happened, in UTC.
livemode Required Whether this test was sent from production (true) or from the sandbox (false), as on every notice.
payload Required Fields describing the change. The contents depend on the kind of notice.
payload.message Optional Text identifying this as a connection test, not a real donation.