Accounting is an essential part of fundraising. RaiseNow has long since recognized this and has been engaged in this area for many years. As such we offer products to push fundraising data into accounting systems.
With the Salesforce Accounting Subledger (ASL), Salesforce has launched a product that addresses reporting needs both in Salesforce as well as in the accounting system.
Both RaiseNow and ASL support the NPC & NPSP data model. Hence, the two products are compatible out-of-the-box. But as different reporting needs in an organization may result in different factors driving the actual implementation, ASL can be configured to account for these complexities.
This article will detail our approach to interacting with accounting systems and how that could be combined with ASL to ensure that both Salesforce and your accounting system have all the data according to your reporting needs.
Please note, that RaiseNow does not configure ASL for you. Nor is RaiseNow responsible for the data transfer from ASL to your accounting software. The specific configuration of ASL to your needs is a task that must be addressed by your Salesforce System Integrator (SI) and/or within your organization.
Let's set out what we want to achieve in accounting terms. If we receive two credit card donations - say two donations at EUR 50 each, in the subledger we may want to see a booking statement like this for each donation:
Credit Card Donations 50 (cost center xyz) to Donation Revenue 50
A couple of days later the acquirer will execute a payout to the bank account for these two donations. But the acquirer will automatically subtract the fee. Let's assume the fee is 5%.
You may now want to see booking statements in your main ledger like this:
Bank Account 95 to Credit Card Donations 95
Expenses 5 (cost center xyz) to Credit Card Donations 5
In our suggested setup, the ASL would take care of the first booking statement as shown above. RaiseNow would directly access services provided by the ERP or accounting system to take care of the second booking.
In order to better understand the flow of data and the systems involved in the process, you can refer to this diagram.
Configuration Accounting Subledger
Please take this section with a grain of salt. This configuration was created for demo purposes and should not be applied 1:1 for a production environment. Please consult with your SI and/or Salesforce directly on the proper configuration of ASL. Please also check out the documentation provided by Salesforce.
Setup Custom Fields for General Ledger Account Code and Cost Center
For this demo, we have decided that the accounting unit in Salesforce will drive the association of the target accounts in the main ledgers as well as the cost center. So in the object General Accounting Unit (npsp__General_Accounting_Unit__c) we create two custom fields for the general ledger account code (GL_Code__c) and the cost center (Cost_Center__c). Make sure you put some data in these fields at this point.
We create corresponding custom fields on the Ledger Entry (abacus__Ledger_Entry__c) object: Accounting_Unit_GL_Code__c and Accounting_Unit_Cost_Center__c.
Setup Custom Meta Data Mappings
In Custom Metadata Types in the Salesforce setup, we add two Accounting Field Mappings to copy our fields from the accounting unit to the ledger entry.
Click "Manage Records" and add the following mappings:
Custom Formula fields on Ledger
In order to get the correct account values and cost centers for the corresponding debit and credit entries in the ledger fields, we can leverage Salesforce form fields.
Assuming our ERP, in this case, is Abacus we create a custom formula field on the ledger object: Abacus_GL_Code__c
Case ( abacus__GL_Code__c,"VISA","Credit Card Donations","MasterCard","Credit Card Donations","PostFinance Card","Direct Debit Donations", Accounting_Unit_GL_Code__c )
The formula in this example is based on the following assumptions:
- The organization has different accounts receivables for different acquiring partners. This is indicated by the differentiation between credit cards on the one hand, and the debit card on the other.
- If there are no payment methods then the ledger entry is actually for the revenue account as defined on the accounting unit and passed by our custom metadata mapping above.
We do the same thing for the Cost Center.
Now if we create a new donation we should see ledger entries linked to the opportunity