> ## Documentation Index
> Fetch the complete documentation index at: https://docs.wegive.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Nested Object Keys

> Exact keys in related payment methods, donors, plans, allocations, and checkout resources.

The following lists retain exact spelling and case. Each list is relative to the named object; for example Card `last_four` becomes `preferred_payment.last_four` in a donor payload or `payment_method.last_four` in a plan payload. Objects can be null/empty as described in their parent table. Nested resources are reused application serializers and can depend on the request and loaded records; see [Additional model attributes](/external/onboarding/webhooks/model-attributes) for dynamic branches.

## Card

Used by donor `preferred_payment`, plan `payment_method`/`paymentMethod`, and `accounts.cards[]`. `last_four` is masked; `has_vgs_tokens` is a flag, not a token value. `total_charged` is the cached stored amount (not divided by 100 in this resource).

**Keys:** `id`, `email`, `name`, `created_at`, `last_four`, `issuer`, `expiration`, `expires_at`, `owner_type`, `owner_id`, `type`, `wallet_type`, `paypal_connection_id`, `paypal_email`, `has_vgs_tokens`, `zip_code`, `primary`, `last_activity`, `total_charged`, `charges`, `scheduled_donations_count`, `scheduled_donations_monthly_estimate`, `fraud_rule_override_at`, `salesforce_id`, `deleted_at`.

## Bank

Used by the equivalent bank paths and `accounts.bank_accounts[]`. `plaid_token` is explicitly a **boolean**, not a Plaid token string. Institution/transit metadata and mandate acceptance are included; there is no full account-number field in this resource. Cached `total_charged` is not divided by 100.

**Keys:** `id`, `email`, `name`, `created_at`, `owner_type`, `owner_id`, `last_four`, `plaid_token`, `primary`, `type`, `institution_number`, `transit_number`, `bank_account_type`, `mandate_acceptance`, `last_activity`, `total_charged`, `charges`, `zip_code`, `scheduled_donations_count`, `scheduled_donations_monthly_estimate`, `fraud_rule_override_at`, `salesforce_id`, `deleted_at`.

## UserSimple

Used for the action-7 payment method when its type is `user`.

**Keys:** `name`, `email`, `id`.

## DonorTable

Used by plan `donor`. Major-unit fields: `total_given`, `total_given_this_year`, `emrr`. `primary_user` is null or `{id, first_name, last_name, email}`; dashboard request context affects it. Address objects use AddressResource below; `pivot` is relation-dependent metadata.

**Keys:** `chat_id`, `id`, `organization_id`, `created_at`, `type`, `mobile_phone`, `home_phone`, `office_phone`, `other_phone`, `fax`, `mailingAddress`, `mailing_address_object`, `billing_address_object`, `billingAddress`, `email_1`, `email_2`, `email_3`, `first_name`, `name`, `total_given`, `total_given_this_year`, `avatar`, `last_donation`, `enabled`, `pivot`, `tagged_on`, `preferred_email`, `preferred_phone`, `do_not_contact`, `deleted_at`, `total_payments`, `last_payment_date`, `total_sessions`, `last_seen`, `messages_count`, `last_message`, `emrr`, `logins`, `do_not_email`, `do_not_sms`, `do_not_mail`, `primary_user`.

## Donor-facing ScheduledDonation

Used in donor `scheduled_donations[]`; this is **different from action 7**. `amount`, `net_amount`, `charge_amount`, `all_transactions_total`, and `fee_amount` use major units. `payment_method` has Card/Bank/User variants or an empty object; other model types may pass through. `fund` uses the Fund projection/raw model rules; `checkout` uses CheckoutView; `donor` uses DonorTable; `destination` uses OrganizationTable; allocations use FundAllocation.

**Keys:** `bill_on_wegive`, `id`, `name`, `net_amount`, `charge_amount`, `amount`, `all_transactions_total`, `type`, `locked`, `paused_at`, `deleted_at`, `destination`, `frequency`, `start_date`, `ends_at`, `cover_fees`, `fee_amount`, `payment_method_id`, `payment_method_type`, `payment_method`, `created_at`, `iteration`, `installments_count`, `last_processed`, `tribute_email`, `tribute_name`, `tribute_message`, `paused_type`, `paused_until`, `pause_initiator`, `pause_reason`, `anonymous`, `fund`, `fund_id`, `checkout`, `donor`, `last_failed_date`, `has_had_pm`, `next_retry_at`, `campaign_id`, `campaign_name`, `fundraiser_id`, `fundraiser_name`, `campaign_fundraiser_id`, `campaign_fundraiser_name`, `organization_brand_id`, `is_test`, `salesforce_id`, `donor_direct_id`, `tracking_url`, `currency`, `fund_allocations`, `external_paypal_subscription_id`, `external_management_url`, `resolved_paypal_connection_id`, `paypal_connection_id`.

## FundraiserTable

Used in donor `fundraisers[]`. `goal` and `total_raised` use major units; `percent_raised` is a ratio, not multiplied by 100. `p2p_preset` is null or `{id, name}`. `owner` can be DonorSimple, OrganizationSimple, a raw Household, or null; `recipient` can be DonorSimple, OrganizationSimple, or null.

**Keys:** `id`, `slug`, `percent_raised`, `goal`, `total_raised`, `description`, `name`, `type`, `expiration`, `created_at`, `start_date`, `total_donors`, `owner`, `recipient`, `publicity`, `active`, `thumbnail`, `deleted_at`, `status`, `emrr`, `last_donation`, `new_donors`, `p2p_preset`.

## DonorSimple

Used for donor owners/recipients in fundraiser objects. Address subobjects use AddressResource. `primary_user` is a request-dependent User model/null; its shape is not a webhook-specific allowlist. `pivot` is relation-dependent. Monetary totals shown here are divided by 100.

**Keys:** `primary_user`, `id`, `deleted_at`, `organization_id`, `created_at`, `type`, `mobile_phone`, `home_phone`, `office_phone`, `other_phone`, `fax`, `mailingAddress`, `mailing_address_object`, `billingAddress`, `billing_address_object`, `email_1`, `email_2`, `email_3`, `name`, `total_given`, `total_given_this_year`, `avatar`, `last_donation`, `enabled`, `total_given_to_element`, `pivot`, `tagged_on`.

## OrganizationSimple

Used for organization owners/recipients in fundraiser objects.

**Keys:** `id`, `slug`, `name`, `avatar`.

## OrganizationTable

Used by plan `destination` and nested CheckoutView `recipient`; `categories[]` uses CategoryTable.

**Keys:** `name`, `categories`, `id`, `slug`, `thumbnail`, `avatar`, `banner`, `type`, `legal_name`, `dba`, `url`, `ein`, `uuid`, `enable_dunning`.

## CategoryTable

Category metadata; `type` is the literal `category`.

**Keys:** `id`, `slug`, `name`, `color`, `is_featured`, `type`.

## AddressResource

Used by DonorTable/DonorSimple address objects. This differs from the raw `addresses[]` collection in donation/donor webhooks.

**Keys:** `id`, `address_1`, `address_2`, `city`, `state`, `country`, `zip`, `readable_string`.

## FundAllocation

Used by plan allocation arrays. `amount` uses major units; `allocation_for_fees` is boolean. `fund` can be a raw staff model or the donor-safe FundView projection depending on originating request context.

**Keys:** `id`, `fund`, `amount`, `allocation_for_fees`.

## CustomFieldValue

Used by action-7 `custom_fields[]`. `id` is the custom-field definition ID. `type` is value type (`text`, `number`, `date`, `boolean`), not a custom-question control type. `value` is display-form data; `raw_value` is stored data; `editable` is boolean.

**Keys:** `id`, `name`, `type`, `value`, `raw_value`, `editable`.

## FundView

Donor-safe designation projection. `suggestion_source` is conditional. `rendered_card_html` and `rendered_row_subtitle` can be added for the applicable profile-picker route/configuration; otherwise they are absent.

**Keys:** `id`, `name`, `code`, `default`, `thank_you_url`, `override_thank_you`, `thank_you_message`, `profile_description`, `profile_image_url`, `suggestion_source`.

## DesignationListView

Used by CheckoutView `designationList`.

**Keys:** `id`, `name`.

## CheckoutView

Used in donor `scheduled_donations[].checkout`. Includes the raw Checkout attributes plus the explicit keys below. `resolved_paypal_connection_id` can be added for an organization recipient. `recipient` uses OrganizationTable; `fund`/`default_designation` use FundView or null; `designationList` uses DesignationListView. Each `company_types[]` item has `id`, `name`, and boolean `is_tax_exempt`. `impact_number` and question configuration include [additional model attributes](/external/onboarding/webhooks/model-attributes).

**Keys:** `recipient`, `frequency_text`, `banner`, `thank_you_banner`, `info_card_avatar`, `recurring_banner`, `recurring_info_card_avatar`, `designation_fallback_image`, `fund`, `default_designation`, `designationList`, `impact_number`, `custom_questions`, `recurring_conversion_options`, `limit_reached`, `company_types`, `default_company_type_id`.

## CustomQuestion

Used by CheckoutView `custom_questions[]`. Starts with model attributes excluding `deleted_at`, `owner_type`, `owner_id`, then adds/overrides the keys below. JSON choices/conditions and option-source configuration are organization-defined; they are not a fixed donor-answer schema.

**Keys:** `answer_options`, `answer_option_values`, `conditional_parent_values`, `donor_should_skip`, `communication_list`, `context_conditions`, `option_source`.

## Custom-question option-source configuration

When present, `custom_questions[].option_source` supplies `id`, `name`, `source_key`, `search_url`, `resolve_url`, `options_path`, `label_key`, `value_key`, `active_key`, `min_chars`, `result_limit`, `timeout_ms`, `search_origin`, `search_prefix`, `resolve_origin`, `resolve_prefix`, `dependencies`, and `enabled`. `dependencies` is an array of referenced question `.value` paths. `communication_list` is a raw CommunicationList model/null. These describe configuration, not submitted donor answers.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.