> ## 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.

# Creating a Checkout

> WeGive Help Center article: Creating a Checkout

A checkout is the core donation form in WeGive — the primary way donors interact with your organization to make one-time or recurring gifts. This guide walks you through creating a checkout and configuring every available option.

## Getting Started

To create a new checkout, navigate to **Elements → Checkouts** in the dashboard and click the create button. The only required field to get started is a **Name**, which serves as your internal identifier for the checkout. Once saved, you'll land on the checkout detail view where you can configure everything else.

After creation, WeGive automatically sets some defaults for you: all recurring frequencies are enabled, suggested amounts are empty (ready for you to fill in), and the recurring conversion options are pre-configured with monthly and yearly prompts.

## Checkout Editor Tabs

The checkout editor is organized into tabs, each controlling a different aspect of the donor experience. Here's what each tab does and the options available within it.

### Name

This tab controls the checkout's internal name and its **URL slug**. The slug becomes part of the public URL donors use to access the checkout, following the pattern:

```
https://{app-domain}/{organization-slug}/checkout/{checkout-slug}
```

Choose a slug that's clean and memorable — it will appear in links you share and embed codes you distribute.

### Type

The Type tab defines the fundamental behavior of the checkout.

**Transaction type** determines whether this checkout collects tax-deductible donations or non-deductible service revenue. The `is_tax_deductible` flag controls how receipts are generated.

**Currency** — if your organization has multi-currency support enabled (`supports_multiple_currencies`), you can configure the checkout to accept donations in different currencies.

**Informational content** — toggle this on to display an informational banner card alongside the checkout form. This is where you add context, images, and messaging to tell donors what their gift supports.

### Appearance

The Appearance tab handles the visual presentation of your checkout.

**First step title** — customize the header text donors see when the checkout loads.

**Informational card** — configure the banner image, description text, and whether the card appears on desktop and/or mobile. You can also control whether the organization logo appears as the card's avatar via `info_card_avatar_use_organization_logo`.

**Navigation** — the `enable_nav` toggle controls whether a back button and login options are visible. `show_view_profile` and `show_give_again` determine what donors see after completing a donation.

**Custom footer text** — add a message at the bottom of the checkout form.

**Confetti** — enable `show_confetti` to trigger a celebration animation when a donation completes.

### Suggested Amounts

Configure pre-set donation amounts that appear as quick-select options for donors.

**One-time amounts** — set up to six suggested amounts (`suggested_amount_1` through `suggested_amount_6`), each with an optional description. You can also use the `suggested_amounts` JSON array for dynamic amounts. Control how many display with `number_of_suggested_amounts`.

**Recurring amounts** — separately configure suggested amounts for recurring donors (`recurring_suggested_amount_1` through `recurring_suggested_amount_6`) with their own count setting.

**AI suggested amounts** — enable `ai_suggested_amounts` to let WeGive generate smart amount suggestions.

**Display type** — the `suggested_amount_display_type` setting controls the visual layout. Options are `list` (a minimal dropdown) or `grid` (amounts shown as selectable buttons/cards).

**Amount labels** — customize the label text with `suggested_amount_label`.

**Minimum amounts** — set `minimum_one_time_amount` and `minimum_recurring_amount` to enforce floor values.

**Fixed amounts** — use `preset_amount_type` and `preset_amount` to lock the checkout to a specific donation amount.

**Allow cents** — the `allow_cents` toggle determines whether donors can enter cent values.

### Single Page

This tab toggles between two layout modes.

**Multi-step** (default) — guides donors through the process across multiple screens, one step at a time. This provides a more structured, focused experience.

**Single page** — displays the entire checkout on one screen. When enabled, you get additional layout controls:

* `single_page_column_order` — whether the info card appears to the left or right of the form
* `single_page_checkout_width` — width of the checkout form column (default: 700px)
* `single_page_info_width` — width of the info card column (default: 480px)
* `single_page_gap_width` — spacing between the two columns (default: 48px)
* `single_page_show_information` / `single_page_show_information_mobile` — control info card visibility per device type
* `show_single_page_mobile_information_as_step` — on mobile, show the info card as its own step instead of inline

Note: You can override this setting per-link by adding `?single_page=true` or `?single_page=false` to the checkout URL.

### Recurring

The Recurring tab controls everything related to recurring donations.

**Allow one-time / Allow recurring** — toggle `allow_one_time` and `allow_recurring` to control which donation types are available. You can enable one or both.

**Default frequency** — set which frequency is pre-selected when a donor opens the checkout.

**Allowed frequencies** — granularly enable or disable each frequency option: daily, weekly, monthly, bimonthly (every 2 months), quarterly, semiannual, yearly, and 1st-and-15th.

**Frequency display type** — choose between `list` (dropdown) or `grid` (buttons) layout for frequency selection.

**Allow frequency change** — the `allow_frequency_change` toggle controls whether donors can select their own frequency or are locked to the default.

**Recurring conversion step** — this is a powerful feature for converting one-time donors to recurring givers. When `conversion_step` is enabled, donors who make a one-time gift are shown a prompt asking them to convert it to a recurring donation.

* `recurring_conversion_options` — an array defining what conversion choices to present. Each option has a `percentage` (suggested increase) and `frequency` (monthly, yearly, etc.).
* `place_conversion` — controls when the prompt appears: `0` shows it before payment processing, `1` shows it after.
* `enforce_recurring_prompt_max_amount` and `recurring_prompt_max_amount` — cap the conversion prompt so it only appears for donations under a certain amount.

**Recurring program** — use `recurring_giving_program` and `recurring_giving_program_description` to brand your recurring giving with a program name and description.

**End dates** — `allow_end_date` lets donors set when their recurring plan should stop. `force_recurring_plan_end_date` and `recurring_plan_end_date` let you enforce a specific end date from the organization side.

### Designations

Designations let donors choose which fund or purpose their gift supports.

**Enable designations** — toggle `designation` on to show fund selection options.

**Designation setting** — controls the selection behavior. Options range from no donor choice (fixed fund), to letting donors freely choose from available funds.

**Require designation** — when `require_designation` is on, donors must select a fund before completing their donation.

**Allow multi-designations** — enable `allow_multi_designations` to let donors split a single donation across multiple funds. This requires that the organization also has `enable_fund_allocations` turned on.

**Designation list** — instead of manually selecting which funds appear on each checkout, you can create a **Designation List** (a reusable group of funds) and attach it via `designation_list_id`. This is especially useful when multiple checkouts should offer the same set of fund options.

**Default fund** — set a `fund_id` as the fallback fund when no designation is selected.

**Display type** — `designation_display_type` supports `list` (dropdown) or `grid` (visual cards) layout.

**Display label** — customize the label text donors see with `designation_label`.

**Force show** — `force_show_designation` ensures the designation selector is always visible, even if only one fund is available.

**URL pre-selection** — you can pre-select designations via URL parameters: `?designation=123` for a single fund, `?designation_code=ABC` by code, or `?designations=123,456` for multiple funds.

### Tribute

Tribute gifts let donors dedicate a donation in honor or memory of someone.

When enabled on the Tribute tab, donors can provide:

* **Tribute name** — the person being honored or remembered
* **Tribute message** — an optional personal message
* **Tribute email** — an optional email address for sending a notification

When a tribute email is provided, WeGive automatically sends a notification email via Mailgun, as long as the organization's "Tribute Made" triggered message is set to **Live**.

For recurring donations with tribute details, every subsequent transaction inherits the same tribute information, and the notification email is sent with each installment.

### Payment Methods

This tab controls which payment methods donors can use.

* **Credit card** (`credit_card`) — standard card payments
* **ACH / Bank transfer** (`ach`) — direct bank account debits
* **Bank login** (`bank_login`) — bank account connection via login
* **Apple Pay** (`apple_pay`) — available on supported devices/browsers
* **Google Pay** (`google_pay`) — available on supported devices/browsers
* **PayPal** (`enable_paypal`) — PayPal integration
* **Stripe Link** (`link`) — Stripe's one-click payment
* **Crypto** (`crypto`) — cryptocurrency donations
* **Pre-Authorized Debit** (`pad`) — for Canadian bank debits

Each method is a simple boolean toggle — enable or disable as needed based on your organization's payment processing setup.

### Fees

The Fees tab controls how processing fees are handled.

* **Fee pass** (`fee_pass`) — enable to give donors the option to cover processing fees
* **Default to covered** (`default_to_covered`) — pre-check the fee coverage option
* **Require fee cover** (`require_fee_cover`) — force donors to cover fees (no opt-out)
* **Customize fee cover amount** (`customize_fee_cover_amount`) — allow custom fee amounts
* **Show savings** (`show_savings`) — display how much the organization saves when fees are covered
* **Tipping** (`tipping`) — enable a tipping option

### Donation Rules

Configure limits and restrictions on the checkout.

**Total donation limit** — enable `total_limit` and set `total_limit_count` to cap the total number of successful donations the checkout will accept. Once the limit is reached, the checkout stops accepting new donations. This is useful for limited campaigns or matching gift drives.

**Donor limit** — enable `donor_limit` and set `donor_limit_count` to limit how many unique donors can give through this checkout.

**Verification** — `require_verification` adds a donor verification step before the donation processes.

**Guest checkout** — `enable_guest` allows donors to give without creating an account. `guest_checkout_only` forces all donors into guest mode.

**Company donations** — `company_donations` enables giving as a company/organization rather than an individual. On the newer dashboard generation, this same setting is not on the Donation Rules tab — it lives on the checkout's **Contacts** tab instead, labeled "Company profiles." The underlying field is identical across both dashboard generations; only its tab location and label differ.

**Anonymous donations** — `anonymous_donations` lets donors choose to give anonymously.

### Custom Questions

Add custom data collection fields to your checkout.

Custom questions are attached to the checkout and displayed in a configurable order. Key settings:

* **Place questions** (`place_questions`) — controls whether questions appear before or after payment confirmation
* **Ask questions again** (`ask_questions_again`) — if a returning donor has already answered, this controls whether they're prompted again
* **Question step title** (`question_step_title`) — customize the heading for the questions section

Questions are stored via a polymorphic `customQuestions` relationship, so the same question framework is reusable across different checkout instances.

### Thank You

Customize the post-donation experience.

* **Headline and description** (`thank_you_headline`, `thank_you_description`) — the main message donors see after completing their gift
* **Video** (`thank_you_video_link`) — embed a YouTube thank-you video. Enable `autoplay_thank_you_video` for automatic playback.
* **Redirect** (`thank_you_redirect`, `thank_you_redirect_url`) — send donors to an external URL after the donation completes instead of showing the default thank-you screen
* **Receipt customization** (`receipt_title`, `receipt_description`) — customize the donation receipt text
* **Confirmation text** (`confirmation_header_text`, `confirmation_button_text`) — customize the final confirmation step messaging

## Donor Information Collection

Beyond the tabs above, the checkout has several settings for what donor information to collect.

**Name** — `ask_for_name` prompts for the donor's name. `only_ask_for_name_when_unknown` skips the prompt if the donor is already identified. `name_required` makes the field mandatory.

**Billing address** — `ask_full_billing_address` collects the complete billing address (not just zip code).

**Mailing address** — `ask_for_mailing_address` adds a mailing address field. `ask_for_mailing_address_before_confirmation` controls placement, `only_ask_for_mailing_address_when_unknown` skips it for known donors, and `mailing_address_required` makes it mandatory.

**Details update** — `ask_for_details_update` prompts returning donors to update their information. `ask_for_details_update_before_confirmation` controls when this prompt appears.

**Additional profiles** — `allow_additional_company_profiles` and `allow_additional_individual_profiles` let donors add secondary profiles during checkout.

## Sharing and Implementing Your Checkout

Once configured, WeGive provides multiple ways to share your checkout with donors via the **Implement Button**:

**Direct link** — a copyable URL you can share anywhere (email, social media, text messages).

**Embed code** — an HTML snippet for embedding the checkout directly into your website.

**Pop-up** — a code snippet that triggers the checkout as a pop-up overlay on your site.

**QR code** — automatically generated alongside the URL for print materials and in-person events.

You can also append query parameters to customize the experience per-link:

* `?campaign=123` — associate the donation with a specific campaign
* `?designation=456` — pre-select a fund
* `?single_page=true` — override the layout mode

### Preview and Test Modes

Before going live, use the built-in preview and test modes:

* **Preview mode** — renders the checkout with a `/preview` URL path and `?preview=true` parameter so you can see how it looks without processing real donations
* **Test mode** — uses a `/test` URL path with `?preview=true`, allowing you to walk through the full flow with test data

## A/B Testing

WeGive supports A/B testing checkouts to optimize conversion rates.

Create an A/B test by selecting two or more checkout variants and assigning each a traffic percentage. All variants share a single test URL that splits incoming traffic according to your specified percentages.

Requirements for a valid test: at least two checkout variants, percentages that add up to 100%, and each variant must use a unique checkout. You can optionally configure email notifications triggered by a specific date or a performance threshold.

## Checkout Analytics

After your checkout is live, the checkout detail view provides analytics including:

* KPI metrics via the checkout dashboard
* Flow chart data showing donor progression through each step
* Session tracking with detailed records of each donor interaction
* Conversion data for one-time to recurring upgrades

These analytics are powered by the `CheckoutSession` model, which records every donor interaction with the checkout — including which steps they completed, whether they used single-page or multi-step layout, and the outcome.

## Sources

* `wegive-dashboard/src/components/dashboard/donor-portal/checkout/DonationRules.vue` (`company_donations` toggle, legacy dashboard)
* `wegive-dashboard-v2/src/config/edits/checkout-settings.config.ts` (`contacts` tab id/label)
* `wegive-dashboard-v2/src/components/views/CheckoutSettingsContacts.vue` (`company_donations` toggle, v2 dashboard)


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