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

# Gift Transaction

> Field mapping between WeGive transactions and Salesforce GiftTransaction records, including status, payment method, designations, and tributes

WeGive transactions sync to NPC `GiftTransaction` records.

## Core fields

| WeGive field | NPC field | Sync | Notes |
| - | - | - | - |
| `amount` | `OriginalAmount` | ↔ | Dollars in NPC, cents in WeGive. |
| `created_at` | `TransactionDate` | ↔ | Date only. |
| `description` | `Description` | ↔ | |
| `status` | `Status` | ↔ | See status mapping. |
| `source_type` / `payment_type` | `PaymentMethod` | ↔ | See payment method mapping. |
| `owner.name` plus amount | `Name` | → | Generated as `Donor Name - $Amount` on push. |
| `correlation_id` | `GatewayReference` | ↔ | WeGive's processor reference. Requires API 60.0 or later. Write-once in WeGive. |
| `fee_amount` | `GatewayTransactionFee` | ↔ | Requires API 60.0 or later. |
| `fee_amount` when `cover_fees` is true | `DonorCoverAmount` | ↔ | Requires API 60.0 or later. On pull, a positive value sets `cover_fees`. |

For transactions charged through WeGive, amount, status, date, payment method, and fees are owned by WeGive and are not overwritten by Salesforce edits. See [Integration Nuances](/external/onboarding/npc/integration-nuances#wegive-processed-gifts-keep-wegive-owned-fields).

## Status mapping

Defaults shown. Override under **Status mapping** in [Configuration Options](/external/onboarding/npc/configuration-options#status-mapping) if your org uses custom picklist values. An NPC status mapped to nothing (for example, Unpaid) is skipped on pull.

| NPC `Status` | WeGive status | Configurable? |
| - | - | - |
| Paid | success | Yes |
| Pending | pending | Yes |
| Failed | failed | Yes |
| Written-Off | cancelled | **No — hardcoded** |
| Fully Refunded | refunded | **No — hardcoded** |

<Warning>
  Only Success, Pending, and Failed are dashboard-configurable. `Written-Off` and `Fully Refunded` are hardcoded literal strings WeGive always writes — if your org's `GiftTransaction.Status` picklist doesn't contain those exact values, the push for a cancelled or fully-refunded transaction fails. A partially-refunded transaction stays at the Success status value (`Paid` by default) rather than a distinct status, since NPC only exposes a boolean partial-refund flag.
</Warning>

ACH transactions still processing in WeGive push as Pending unless **Send processing ACH as success** is on.

## Payment method mapping

Defaults shown; override per organization so values match your org's `PaymentMethod` picklist.

| NPC `PaymentMethod` | WeGive |
| - | - |
| Credit Card | card |
| ACH | bank |
| Cash | cash |
| Check | check |
| PayPal | paypal |
| Venmo | venmo |
| Cryptocurrency | crypto |
| In-Kind | in\_kind |
| Stock | stock |
| Unknown | wire |

<Note>
  `donor` and `user` source types map to no NPC value (`null`) — these are WeGive-internal payment sources with no Salesforce equivalent, and never write a `PaymentMethod` value on push.
</Note>

## Linkage (create-only)

| WeGive field | NPC field | Notes |
| - | - | - |
| `owner.npc_id` | `DonorId` | Account ID of the supporter or company. |
| `campaign.npc_id` | `CampaignId` | |
| `scheduled_donation.npc_id` | `GiftCommitmentId` | Set when the transaction was generated by a recurring plan. `TransactionDueDate` is also set. |
| `npc_id` | `Id` | Stored on the WeGive transaction. |

## Designations

How designations sync depends on the **Fund allocations** setting.

**Fund allocations on.** Each `GiftTransactionDesignationRelation` row maps to a WeGive fund allocation.

| WeGive fund allocation field | NPC field | Sync |
| - | - | - |
| `amount` | `Amount` | ↔ |
| computed from amount | `Percent` | → |
| `fund.npc_id` | `GiftDesignationId` | ↔ |

On push, WeGive writes its allocation rows and removes designations on the transaction that it does not track, so totals stay at 100 percent.

**Fund allocations off.** The designation with the largest amount maps to the transaction's `fund_id` on pull. On push, WeGive writes a single 100 percent designation for the transaction's fund, adopting an existing designation if one is present rather than creating a duplicate.

## Tributes

When a WeGive transaction is a tribute, WeGive writes one `GiftTribute` child record.

| WeGive field | NPC `GiftTribute` field | Sync |
| - | - | - |
| `tribute` | `TributeType` | ↔ (pushed as Honor) |
| `tribute_name` | `HonoreeName` | ↔ |
| `tribute_email` | `NotificationEmail` | ↔ |
| `tribute_message` | `NotificationMessage` | ↔ |

## Refunds

Refunds sync as `GiftRefund` records linked to the parent `GiftTransaction`.

| WeGive refund field | NPC `GiftRefund` field | Sync |
| - | - | - |
| `amount` | `Amount` | ↔ |
| `created_at` | `Date` | ↔ |
| `reason` | `Reason` | ↔ |
| `processor_id` | `GatewayReference` | ↔ (API 60.0 or later) |
| `transaction.npc_id` | `GiftTransactionId` | create-only |

## Pull filters

Transaction pulls honor the **Gift types**, **Payment methods**, and **Transaction statuses** filters in [Configuration Options](/external/onboarding/npc/configuration-options#pull-filters).


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