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

# Recurring Gift Mapping

> Field-level mapping between WeGive recurring donations and Blackbaud Raiser's Edge NXT recurring gifts

# Recurring Gift Data Mapping

This page details the field-level mapping between WeGive recurring donation records and Blackbaud Raiser's Edge NXT recurring gift records.

## Core Fields

| WeGive Field | Blackbaud Field | Direction | Notes |
| - | - | - | - |
| `raisers_edge_id` | Recurring Gift ID | Both | Correlation key |
| `amount` | `amount.value` | Both | Converted between cents (WeGive) and dollars (Blackbaud) |
| `frequency` | `recurring_gift_schedule.frequency` | Both | See supported values below |
| `start_date` | `recurring_gift_schedule.start_date` | Both | |
| `ends_at` | `recurring_gift_schedule.end_date` | Both | |
| `source` (donor) | `constituent_id` | Both | |

## Supported Frequencies

Raiser's Edge only supports 5 frequency values — a WeGive recurring plan set to a frequency outside this list fails to push with an explicit error:

| WeGive Frequency | Blackbaud Frequency |
| - | - |
| Weekly | `WEEKLY` |
| Bimonthly (every 2 weeks) | `EVERY_TWO_WEEKS` |
| Monthly | `MONTHLY` |
| Quarterly | `QUARTERLY` |
| Yearly | `ANNUALLY` |

<Warning>
  Daily, semiannual, and twice-monthly (1st-and-15th) frequencies have no Raiser's Edge equivalent and will fail to push.
</Warning>

<Note>
  On pull, Blackbaud's `EVERY_FOUR_WEEKS` maps to Monthly (the closest WeGive equivalent) — there's no dedicated "every 4 weeks" frequency on the WeGive side.
</Note>

## Status

Status isn't a direct field mapping — it's derived:

* **Push**: a paused plan (`paused_at` set) sends `gift_status: Held`; a cancelled plan (`deleted_at` set) sends `Cancelled`; otherwise `Active`.
* **Pull**: `Held`/`Terminated`/`Cancelled` from Blackbaud sets `paused_at`; `Active` clears the pause fields; `Completed` sets `ends_at`.

## Payment Method

Recurring gifts push with `payment_method: CreditCard` by default, or `Cash` for bank-sourced (ACH) plans — WeGive always processes the actual charge, so `is_manual: true` is set on the Blackbaud side and no card/bank details are ever sent.

## Fund Designation

Same mechanism as gift push: `gift_splits` built from fund allocations (or the plan's single fund), with an `appeal_id` from the linked campaign fundraiser or the integration's default appeal when available.

## Create vs. Update

* **Create**: full payload — type, amount, constituent, payment method, schedule, fund splits.
* **Update** (`raisers_edge_id` already set): amount, status, and schedule are re-sent; fund splits are not.

## Pull Behavior: Card/Bank-Funded Plans Are Protected From Being Overwritten

If a WeGive recurring plan is already funded by a real card or bank payment method (`payment_method_type` is `card` or `bank`), a pull from Blackbaud will **not** overwrite its amount, status, frequency, or dates — only `raisers_edge_id` gets backfilled if missing. This protects a live, WeGive-billed recurring plan from being altered by an edit made directly in Raiser's Edge. For plans where Blackbaud genuinely is the source of truth, pull writes amount, status (via the pause-field mapping above), frequency, and schedule dates as described.

## Pull's Fund Resolution Only Reads the Highest-Amount Split

Same as gift pull — when a recurring gift has multiple fund splits, only the highest-amount split determines the plan's primary fund on the WeGive side.

## Getting Help

* **WeGive Support**: [support@wegive.com](mailto:support@wegive.com)
* **Blackbaud Sky API Recurring Gift Docs**: [Sky API Documentation](https://developer.blackbaud.com/skyapi/)


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