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

# v25 — October 30, 2026

> 53 entries

Released October 30, 2026.

Surface Admin · 36 Checkout · 2 Portal · 7 Integrations · 4 API · 2 Legacy · 2

Availability depends on organization settings and rollout gates. Portal V2 remains separately enabled; V25 does not turn it on for every new organization.

## New

> [accordion] Chase refunds work from the dashboard **WORTH A LOOK** `Admin`
>
> Refunds on Chase card and bank payments can now be issued from WeGive, including partial refunds when partial refunds are enabled. If Chase does not confirm the outcome, further refunds on that payment are blocked until it is reconciled with Chase.

> [accordion] Dunning retries failed installments automatically **WORTH A LOOK** `Admin`
>
> Dunning now tracks each failed installment on its own and can re-charge it between notices when automatic retries are turned on. Retries are off by default. Notice count and spacing are configurable, and dunning can be stopped for a single installment. [Understand dunning](https://docs.wegive.com/external/support/giving/understanding-the-dunning-flow.md).

> [accordion] Brand plans can update in place **WORTH A LOOK** `Admin`
>
> Organizations limited to one recurring plan per brand can choose Update existing plan instead of Replace existing plans under Brand Preferences. A donor's new recurring gift then edits the existing plan, keeping its ID and CRM history. Replace remains the default.

> [accordion] Checkout answers save to recurring plans **WORTH A LOOK** `Checkout`
>
> Checkout custom questions can save an answer to the recurring plan, optionally into a plan custom field. If checkout creates a one-time gift instead, a fallback gift custom field can be used.

> [accordion] Tribute forms offer honor or memory types **WORTH A LOOK** `Checkout`
>
> Checkouts can offer honor tributes, memory tributes, or both, with configurable name, email and message fields. Receipts and tribute emails say "In memory of" or "In honor of" to match, and recurring installments carry the type.

> [accordion] Allocation totals can be enforced on plan edits **TALK TO US** `Admin`
>
> Organizations that use fund allocations can ask WeGive to require plan edits to keep allocations matching the plan total. When enabled, the plan editor shows a running allocated total and rejects mismatches. It is off by default. Validation applies to amount/allocation changes; unrelated edits can preserve historical mismatches.

> [accordion] Journey analytics show lifetime message performance **WORTH A LOOK** `Admin`
>
> The journey Analytics tab now offers an all-time range and a per-message comparison table. Ranges are bounded by send date, and Errored counts only messages that errored and were never delivered, opened or clicked. [Read the metrics](https://docs.wegive.com/external/support/communications/reviewing-journey-message-performance.md).

> [accordion] Reporting cards explain their numbers **WORTH A LOOK** `Admin`
>
> Reporting dashboard cards now offer a help popover with the report's query details, filters and when it ran. Gifts recorded offline, with source type organization, are labeled Offline in those details.

> [accordion] Call Center Virtual Terminal sets up from settings `Admin`
>
> The API section of Settings now has a Call Center Virtual Terminal setup button that creates the required login without an engineering request. An existing virtual terminal login is left untouched.

> [accordion] Import Wizard can suppress triggered messages **WORTH A LOOK** `Admin`
>
> A new Trigger engagements toggle on the Confirm step controls whether imported records fire receipts, triggered messages and journey enrollment. It is on by default. Tag-rule automations that run after the import and outbound webhooks are not affected.

> [accordion] Twilio credentials can be edited on your own numbers `Admin`
>
> Settings, then Phone Numbers, now has an Edit Credentials option for numbers on your own Twilio account. Leave the auth token blank to keep the saved one. WeGive confirms the number belongs to the new credentials before saving.

> [accordion] Transaction exports include deposit payout and date **WORTH A LOOK** `Admin`
>
> Transaction exports now include Deposit Payout Id and Deposit Date, identifying the payout that deposited each gift rather than a later fee or refund payout.

> [accordion] Salesforce imports can assign brands `Integrations`
>
> When an organization uses brands, a Salesforce field mapped to brand name now assigns a brand to imported transactions and recurring plans that have none, if exactly one active brand matches. Once a brand is set, Salesforce never changes it.

> [accordion] Portal pending gifts can be hidden `Portal`
>
> A new Show pending transactions in the portal setting controls whether pending gifts appear in donors' transaction history. It is on by default, so pending gifts stay visible unless you turn it off.

> [accordion] Purpose-scoped portal links and expiration policies `Portal`
>
> Both portals support limited email-link access, verification before broader access/edits, expired-session continuation, and purpose-specific expiry settings. Scoped issuance and legacy-link cutover require separate rollout activation; saving settings alone does not enable them. [Emailed portal links](https://docs.wegive.com/external/support/communications/linking-donors-directly-to-a-portal-page.md).

## Changed

Behavior that worked one way before this release and works another way now.

> [accordion] Finix refunds stay pending until confirmed **WORTH A LOOK** `Admin`
>
> A pending Finix refund is no longer treated as complete. The payment keeps its amount and status and shows a Refund pending badge until Finix confirms. A failed refund leaves the payment untouched, and the Refund button is disabled while one is pending.

> [accordion] Plan replacement cancels external PayPal subscriptions **WORTH A LOOK** `Admin`
>
> When a donor's new plan replaces one managed in PayPal, WeGive cancels the old PayPal subscription and archives the old plan only after cancellation is confirmed. If it cannot be confirmed, the new checkout is kept, the old plan stays, and WeGive is alerted to reconcile it.

> [accordion] Portal sign-in emails use your branding **WORTH A LOOK** `Portal`
>
> The donor portal sign-in code email now uses your organization's name, logo and website, with the subject "Your Example Org sign-in code". You can add an optional custom message in Portal Settings. This applies automatically to organizations using WeGive sign-in emails; Auth0 authentication follows its separate flow.

> [accordion] Integration secrets display masked in settings **WORTH A LOOK** `Admin`
>
> Saved integration secrets such as client secrets and API keys are no longer displayed. Fields show the last four characters, and editing starts empty. Leaving a field blank keeps the saved value. [Manage saved credentials](https://docs.wegive.com/external/support/settings/updating-saved-integration-credentials.md).

> [accordion] API responses no longer include integration secrets **WORTH A LOOK** `API`
>
> Organization and integration API responses now return null for each secret, plus a has-value flag and the last four characters. To clear a credential, send it as null and list it in `clear_credentials`. Anything that read secrets back from these responses will need updating.

> [accordion] Salesforce exports label PayPal wallets as PayPal **WORTH A LOOK** `Integrations`
>
> Native PayPal wallets now export with the configured PayPal payment method name instead of the card name, and payment method records include the PayPal vault token and customer ID from the wallet’s own merchant connection and environment. Missing values do not clear existing CRM values.

> [accordion] Custom domain SSL status reflects real certificate state **WORTH A LOOK** `Admin`
>
> SSL status now comes from the certificate's own validation state rather than a handshake, so aliases mid-setup show Pending validation instead of Issued. The check always returns a result, and a failed lookup shows Couldn't verify.

## Improved

> [accordion] Inactive designations are labeled in pickers `Admin`
>
> Designation pickers now gray out inactive funds and label them Inactive, but they remain selectable. Fund notes appear as the subtitle for active funds.

> [accordion] Gift anonymity shows on staff detail pages `Admin`
>
> Payment and recurring plan detail pages now show an Anonymous row with Yes or No.

> [accordion] Gift anonymity shows in the donor portal `Portal`
>
> Transaction detail and the recurring plan page now show an Anonymous row with Yes or No.

> [accordion] Dashboard lists filtered by CRM ID load faster `Admin`
>
> Dashboard lists filtered by a CRM ID or an updated-date range now use selective indexes instead of scanning the whole organization, which speeds them up for large accounts.

> [accordion] Employee organization access has audited administration actions `Admin`
>
> WeGive staff can grant or revoke an employee’s access to one organization with a recorded reason.

> [accordion] Company signup settings are clearer `Admin`
>
> Dashboard wording better explains the existing company/individual profile behavior; this is not an automatic migration of existing supporter records.

> [accordion] Diagnostic tracing uses lower sampling rates `API`
>
> API and frontend tracing use lower sampling defaults, with separate API rates for ordinary, revenue, polling, queue, and scheduled work. Error reporting remains enabled; environment overrides still apply.

## Fixed

> [accordion] CRM pushes no longer overwrite newer changes **WORTH A LOOK** `Integrations`
>
> Overlapping CRM pushes for the same record now run one at a time, and each push uses the record's latest data, so a later change is no longer lost when two pushes collide.

> [accordion] Primary designation follows allocation changes **WORTH A LOOK** `Admin`
>
> After a Salesforce allocation sync or a dashboard allocation change, a gift's primary designation now follows its allocations, so receipts and CRM pushes stop showing a stale fund. Existing historical records are not globally backfilled.

> [accordion] Supporter logins list populates on plan edit `Admin`
>
> Adding a payment method from the plan or payment edit view now lists the supporter's logins and preselects the plan's own login, instead of showing no results.

> [accordion] First installment shows the first charge `Admin`
>
> The recurring plan detail page now shows the date of the first processed charge, or the scheduled start date, rather than the plan's creation date.

> [accordion] Portal recent activity shows plan cancellations `Portal`
>
> Recurring plan cancellations a donor makes in the portal now appear in Recent Activity, and See all opens a paginated activity view. Pagination controls are disabled while a page loads.

> [accordion] Legacy portal explains rejected plan saves `Legacy`
>
> The legacy portal now shows the reason given when a recurring plan save is rejected, rather than a generic error. Server and network failures still show the generic message.

> [accordion] Plan import accepts semiannual frequency `Admin`
>
> The recurring plan importer now accepts semiannual, semiannually, semi-annual and semi-annually, and frequency names are no longer case-sensitive.

> [accordion] Designation active status now saves `Admin`
>
> Setting a designation to Inactive from the dashboard now persists. Previously the change was not saved and the designation stayed Active.

> [accordion] Receipts show address line 1 `Admin`
>
> U.S. receipts now include the first line of the mailing address, which was previously omitted so that only the second line appeared.

> [accordion] Dashboard receipt downloads save as .pdf `Admin`
>
> Receipt downloads from the dashboard now save with a .pdf extension, even when the supporter's name contains periods.

> [accordion] Portal receipt downloads save as .pdf `Portal`
>
> Receipt downloads from the donor portal now save with a .pdf extension, even when the supporter's name contains periods. Tax-document downloads also retain the PDF extension.

> [accordion] Fee Covered filter works on Payments `Admin`
>
> The Fee Covered quick filter on the Payments table now filters payments as expected.

> [accordion] Fundraiser exports stay intact with embedded images **WORTH A LOOK** `Admin`
>
> Embedded images in fundraiser descriptions no longer spill CSV export cells across rows. Image data is redacted and cells are capped at the spreadsheet limit of 32,767 characters. The legacy editor now accepts images by URL only.

> [accordion] Legacy portal links keep opening in new tabs `Legacy`
>
> New-tab links in the legacy portal's rich text, including the checkout thank-you card, now open in a new tab again instead of navigating an embedded checkout away.

> [accordion] Dashboard rich-text links keep opening in new tabs `Admin`
>
> New-tab links in impact stories and list descriptions now open in a new tab again instead of the same tab.

> [accordion] Triggered messages regain send timing options `Admin`
>
> Triggered messages in the v2 dashboard can again be sent after a relative delay or on a fixed date.

> [accordion] Portal monthly recurring estimate refreshes `Portal`
>
> The Recurring page's monthly estimate now updates without a hard refresh, and the Estimated Monthly Total section hides when the total is \$0.

> [accordion] DonorDirect recurring pulls handle control characters **TALK TO US** `Integrations`
>
> Recurring pulls from DonorDirect no longer fail with an HTTP 500 when reference numbers contain U+0019 (`CHAR(25)`). Other control characters and endpoints are outside this targeted fix. The fix is a stored procedure update that must be deployed to each DonorDirect environment, so contact your account manager.

> [accordion] Recurring billing coordinates with update-in-place checkout `Admin`
>
> For applicable plans, ordinary billing and checkout share a lock so checkout cannot overwrite plan state while a scheduled charge is finalizing.

> [accordion] Failed update-in-place initial payments do not start recovery on the old plan `Admin`
>
> A declined initial attempt restores the prior plan and is excluded from automatic dunning enrollment against that restored plan.

> [accordion] Accepted payment-method updates stop stale notice-only flows `Admin`
>
> An accepted update-in-place checkout that changes the payment method stops existing flows when automatic retries are off, matching the ordinary plan-edit behavior.

> [accordion] Archived installments remain usable for recovery `Admin`
>
> Dunning history and linked Virtual Terminal charge/record actions can include archived originals. Archiving remains separate from stopping recovery.

> [accordion] Saved payment methods respect organization environment `Admin`
>
> Payment-method lists exclude methods outside the applicable organization/environment context.

> [accordion] Nova saves preserve unrelated fields `Admin`
>
> Editing Organization settings no longer unnecessarily clears or rewrites unrelated nullable/JSON fields.


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