Using FinDock with NPSP

This article outlines important information when using FinDock with the NPSP Source Connector.

Integration between NPSP and FinDock

FinDock ERD with NPSP

NPSP to FinDock: Creating an Opportunity or Recurring Donation

The integration between FinDock and NPSP is mainly on the level of the Opportunity or Recurring Donation object.

When a Recurring Donation is created, the Nonprofit Success Pack will create Opportunities based on your settings. The FinDock fields from Recurring Donation are copied to the underlying opportunities. For every Opportunity record created that doesn't have an excluded Record Type (see FinDock for NPSP Configuration) the Source Connector will create an Installment to represent that Opportunity to FinDock.

The following mapping is used to create the installment, the Opportunity Stage Pledged is converted to the Installment Status New:

Installment FieldOpportunity Field
cpm__Account__cAccount
cpm__Amount__cAmount
cpm__Bank_Statement_Description__cName
cpm__Contact__cnpsp__Primary_Contact__c
cpm__Due_Date__cCloseDate
Opportunity__cId
cpm__Payment_Method__cPayment_Method__c
cpm__Payment_Processor__cPayment_Processor__c
cpm__Target__cTarget__c
cpm__Payment_Profile__cPayment_Profile__c
cpm__Mandate__cMandate__c
cpm__Status__cStageName

From that point forward, the Opportunity and Installment object will be kept in sync. This means that if the Installment is marked as collected, the Opportunity will be closed as won. Installments won't be updated when in process.

Because the integration is based on the Opportunity object, all frequencies on the recurring donation object are supported, including the custom frequencies you have added yourself.

The same is true if an Opportunity is created separately (without a parent Recurring Donation).

note

FinDock only supports Opportunities with a single payment. If you want more payments, please use the Recurring Donation with a closed ended status and a determined number of installments.

Mandate service

The FinDock Core package provides a mandate service to generate mandates. When using FinDock in combination with NPSP, the mandate service will be called if:

  • An Opportunity is created
  • A Recurring Donation is created
  • A Payment method changes
  • A Payment Processor changes
  • A Target changes
  • A Payment profile changes
  • A Mandate field is emptied

On Recurring Donation, the mandate service is also called if:

  • The installment period (on the Recurring Donation) changes

FinDock to NPSP: API requests and Bank Statement imports

Not all actions originate in the Nonprofit Success Pack. API requests, Bank Statement imports etc might start within PaymentHub and as such will need to be synchronized back to NPSP objects.

To this end the SourceConnector uses a so called DataHandler to create NPSP objects based on PaymentHub objects or API requests.

If any single non-recurring payment is created in PaymentHub, the DataHandler creates an Opportunity to match the created Installment. If the API receives a Recurring transaction, the DataHandler will create a Recurring Donation. The Payment API fully support initiating transactions and registering them as opportunities or recurring donations in NPSP. However, anonymous usage of the API is not supported with NPSP. In order for opportunities to be created, authenticated usage is required.

Also when an installment is created during Manual Review an opportunity will be created or updated.

Running a Payment Schedule

To collect donations a Payment Schedule can be used. Running a Payment Schedule isn't different from other SourceConnectors. You can read the following article to get more information on how to run a bulk collection run. For the Recurring Donations and Opportunities, PaymentHub already created an installment. Each installment has a due date corresponding to the Opportunity Close date. When an installment is synchronized back to Salesforce with status Collected, the Opportunity Stage is set to the corresponding Stage e.g. Closed Won, Posted and the Opportunity Close date is set to the Collection date.