FinDock for NPSP data model
To enable payment processing based on NPSP, FinDock provides a source connector to NPSP for seamless integration between FinDock and NPSP. This article details how the Salesforce and FinDock data model is modified in the NPSP setup.
Integration between NPSP and FinDock
The following entity relationship diagram (ERD) is a simplified illustration of the FinDock data model with NPSP integration. This illustration includes Gift Aid objects which are only relevant for UK charities.
Modifications to NPSP objects
To record information about payment processing, FinDock adds fields to the Recurring Donation, Opportunity and NPSP Payment objects as shown in the following tables.
Recurring Donation changes
Field Label | Field Name | Data Type |
---|---|---|
Bank Statement Description | npsp4hub__Bank_Statement_Description__c | Text(255) |
Custom Payment Reference | npsp4hub__Custom_Payment_Reference__c | Text(255) |
Final Payment Reference | npsp4hub__Final_Payment_Reference__c | Formula (Text) |
Generated Payment Reference | npsp4hub__Generated_Payment_Reference__c | Text(255) |
Mandate | npsp4hub__Mandate__c | Lookup(Mandate) |
Payment Method | npsp4hub__Payment_Method__c | Picklist |
Payment Processor | npsp4hub__Payment_Processor__c | Picklist |
Payment Profile | npsp4hub__Payment_Profile__c | Lookup(Payment Profile) |
Payment QR | npsp4hub__Payment_QR__c | Long Text Area(131072) |
Payment Url | npsp4hub__Payment_Url__c | URL(255) |
Target | npsp4hub__Target__c | Picklist |
These fields are also added to the Recurring Donation Custom Field Mappings of NPSP settings. This assures that when a recurring donation is created, the fields are automatically populated in the related opportunities.
Opportunity
Field Label | Field Name | Data Type |
---|---|---|
Bank Statement Description | npsp4hub__Bank_Statement_Description__c | Text(255) |
Custom Payment Reference | npsp4hub__Custom_Payment_Reference__c | Text(255) |
Final Payment Reference | npsp4hub__Final_Payment_Reference__c | Formula (Text) |
Generated Payment QR | npsp4hub__Generated_Payment_QR__c | Long Text Area(131072) |
Generated Payment Reference | npsp4hub__Generated_Payment_Reference__c | Text(255) |
Generated Payment Url | npsp4hub__Generated_Payment_Url__c | URL(255) |
Mandate | npsp4hub__Mandate__c | Lookup(Mandate) |
Payment Method | npsp4hub__Payment_Method__c | Picklist |
Payment Processor | npsp4hub__Payment_Processor__c | Picklist |
Payment Profile | npsp4hub__Payment_Profile__c | Lookup(Payment Profile) |
Recurring Payment QR | npsp4hub__Recurring_Payment_QR__c | Long Text Area(131072) |
Recurring Payment Reference | npsp4hub__Recurring_Payment_Reference__c | Text(255) (External ID) |
Recurring Payment Url | npsp4hub__Recurring_Payment_Url__c | URL(255) |
Target | npsp4hub__Target__c | Picklist |
Opportunity Payment
Field Label | Field Name | Data Type |
---|---|---|
Collected Through | npsp4hub__Collected_Through__c | Lookup(Installment) |
Mandate | npsp4hub__Mandate__c | Lookup(Mandate) |
Payment Processor | npsp4hub__Payment_Processor__c | Picklist |
Payment Profile | npsp4hub__Payment_Profile__c | Lookup(Payment Profile) |
Target | npsp4hub__Target__c | Picklist |
Modifications to FinDock objects
To establish the link between an Installment and its parent Opportunity record, a lookup field is added to the Installment object to define this relationship.
Installment
Field Label | Field Name | Data Type |
---|---|---|
Opportunity | npsp4hub__Opportunity__c | Lookup(Opportunity) |
Payment | npsp4hub__Payment__c | Lookup(Payment) |
Data syncing between NPSP and FinDock
The integration between FinDock and NPSP is mainly on the level of the Opportunity object. For every Opportunity record created that does not have an excluded Record Type, FinDock creates an Installment record to represent the opportunity in FinDock.
From that point forward, the opportunity and installment are kept in sync. Because the integration is based on the Opportunity object, all donation frequencies on the Recurring Donation object are supported, including custom frequencies. The same is true for individually created opportunities (without a parent recurring donation).
Actions that originate from FinDock, such as Payment API requests, bank statement imports, and so forth are synchronized to NPSP. NPSP objects are created based on FinDock objects or API requests. If an installment is created for a one-time payment in FinDock, for example, FinDock automatically creates an opportunity to match that installment. If the Payment API receives a recurring payment message, FinDock creates a matching recurring donation.
NPSP Payment vs. FinDock Payment
Both FinDock and NPSP have Payment objects. The Opportunity Payment (npe01__OppPayment__c
) plays an important role in the NPSP package if you are using General Account Units (GAUs) and/or Account Subledger (ASL). However, if you are not using these, we suggest turning off the Automatic Payment Creation option in your NPSP Settings (under Donations > Payments).
The FinDock Payment (cpm__Payment_c
) plays an essential role in payment data management. FinDock payments represent actual monetary transactions and are used to update installments.
When installments are closed, FinDock updates the related opportunities and also creates a corresponding opportunity payment for the full amount of the installment. The Collected Through field on Opportunity Payment is a lookup that links the payment to this installment.
If an opportunity payment already exists, FinDock marks it as paid when the installment is closed (collected). If the installment amount is more than the existing payment, FinDock creates an additional paid opportunity payment for the remaining installment amount.
If you have scheduled multiple payments using the schedule payment button on a single opportunity, these payments are not linked to the installment. FinDock creates a new closed payment when an installment is closed. The existing scheduled opportunity payments remain open.