Introduction
In the DACH region the following file formats (among others) are used to initiate bank payments as well as programmatically process payment information.
- pain.008 - payment initiation message: Serves to send a collection of payment instructions to a bank institute
- camt.054 - cash management message: Provides information about the entries of a given bank account. The information provided in camt.054 files may include:
- information on successful direct debit payments
- information on reversals (charge-backs)
- information on payment slip payments
- information on giro payments
In conjunction with our Salesforce integration, RaiseNow can generate payment initiation messages (pain.008 files) for direct debit recurring donations and provide these payment instructions within Salesforce in order for customers to upload these to their banks.
Depending on your bank, RaiseNow can either automatically retrieve camt files directly from your bank or provide a user interface in Salesforce to process camt files. The donation data is extracted from those files and matched in Salesforce according to the relevant business process.
Please note: The processes described here require additional on-boarding steps to be completed. Depending on your current license, additional licensing options may be required as well. Please inquire with RaiseNow Support.
Direct Debit Payment Initiation
Direct Debit recurring donations may be created via RaiseNow in Salesforce through touchpoints as well as our import tool. Valid payment methods for this process are:
- Direct Debit CH-DD (CHF only)
- Direct Debit CH-TA (CHF only)
- SEPA Direct Debit (coming soon)
The payment method will be shown on the recurring donation itself, as well as on the linked RaiseNow subscription object.
An opportunity with a payment for which a payment initiation message has already been generated will have an unnamed RaiseNow transaction linked to it.
The transaction will link to a pain.008 file.
The pain file collects all the pending installments for the previous collection period. You can check the attachment on the related tab to download the actual file to be used in the online banking interface with your bank.
Processing camt files and matching
You bank will provide camt files to you. You can trigger processing these camt files by uploading them via Salesforce.
Create a new camt object record via the corresponding RaiseNow object tab. Select your bank from the dropdown. If your bank is not yet listed, we can add support during the onboarding process. Please be sure to inquire with our Customer Success team.
Upload your file via the related tab and click the button. Please do not edit the file in any way.
Click the button to process the camt file.
The checkbox "HasRecordBeenSentToRaiseNow" will be automatically checked approximately one second after clicking the button.
Matching direct debit payments
Given the camt file contains a reference to a payment that was previously included in a RaiseNow generated pain.008 file, RaiseNow will identify the previously generated transaction record. This will trigger the following object updates in Salesforce:
- The transaction will be updated according to the the payment date and payment method
- The opportunity StageName will be updated to "Closed Won"
- A NPC & NPSP payment object will be created for the existing opportunity
Catching duplicate direct debit payments
If you accidentally upload a camt file twice or the same payment is referenced from multiple uploads, the following cases are automatically handled:
Depending on the direct debit variant, the data provided in the camt file will either contain the end2end id (PostFinance) or the ESR reference (LSV+). When RaiseNow processes a provided camt file, the following cases may occur:
-
RaiseNow has never before processed a payment referenced by the end2end id or the ESR reference. The transaction is imported as a new payment.
-
RaiseNow identifies a payment record without pre-existing reconciliation data referenced by the end2end id or the ESR reference. The payment is enrich with the additional data. Usually this will imply that a payment in pending status is set to succeeded.
-
RaiseNow identifies a payment record with pre-existing reconciliation data referenced by the end2end id or the ESR reference: The entry is skipped and the next record in the provided file is processed.
Matching by payment reference
RaiseNow supports additional matching options by previously generated payment references that may be referenced in a camt file.
Matching recurring donations by payment reference (Standing Order)
A payment reference object may reference a RaiseNow subscription object which in turn links to a recurring donation. If a payment with a corresponding reference is identified in a camt file, the payment is automatically attributed to the next upcoming installment (opportunity with StageName "Pledged") for that recurring donation.
The payment reference object identifying the corresponding subscription:
Matching online pledge by payment reference
Users may order a payment reference through the RaiseNow donation forms. Additionally, Salesforce users may generate payment references to be sent with payment requests to donors.
If donors provide this reference during the payment, either by payment slip or by online banking, the opportunity referenced in the corresponding payment references object will automatically be updated.
Matching direct marketing campaigns
Users may generate payment reference for campaign members in Salesforce. If such a reference is detected in a camt file, RaiseNow will automatically generate the following objects for that contact and campaign in Salesforce:
- Opportunity with StageName "Closed Won" referencing the campaign and the contact
- NPC & NPSP Payment object referencing the opportunity
- RaiseNow transaction object
Testing payment reconciliation
Camt files are not meant to be written by hand. This makes testing these processes very difficult. On the other hand, in setting this up you will most likely have need to test some of these processes with test data before going into production.
Before continuing, please be aware of the following:
- The described process requires you to manually edit .xml files. Making invalid changes to those files will result in unexpected behaviour (error). This does not constitute a bug.
- The process described below will only elaborate how to change essential identifiers to match payments. However, for the data generated in Salesforce other variables, such as dates and totals, are relevant as well. The consistency of the results you will see in Salesforce will depend on how thoroughly you updated those files. We recommend limiting yourself to changing as little as possible to avoid errors.
- Keep in mind the above rules for handling of duplicate identifiers. For example, if you pass the same PostFinance direct debit End2EndId twice, the second time it will be ignored and not payment will be generated.
PostFinance Direct Debit CH-DD
For each transaction, the pain.008 file will contain an EndToEndId. You can download the pain.008 file provided in Salesforce and extract the EndToEnd Id:
<EndToEndId>b024635d9f094e4ea0bd5f7e82a1c50e</EndToEndId>
Use the template (postfinance-chdd-camt054-template.xml) and replace the End2EndId in the transaction details element:
<TxDtls>
<Refs>
<MsgId>20200824-203541</MsgId>
<AcctSvcrRef>201-40128241-774</AcctSvcrRef>
<PmtInfId>20200824-203541-00</PmtInfId>
<InstrId>11608683549</InstrId>
<EndToEndId>b024635d9f094e4ea0bd5f7e82a1c50e</EndToEndId>
</Refs>
...
Adjust other variables as needed for your test and upload the file through the RaiseNow camt module in Salesforce.
UBS Direct Debit CH-TA (LSV+)
For each transaction, the pain.008 file will contain an ISR reference . You can download the pain.008 files provided in Salesforce and extract the ISR reference:
<DrctDbtTxInf>
<PmtId>
<InstrId>RaiseNow.B.210826140647642.000000</InstrId>
<EndToEndId>NOTPROVIDED</EndToEndId>
</PmtId>
...
<CdtrRefInf>
<Tp>
<CdOrPrtry>
<Prtry>ESR</Prtry>
</CdOrPrtry>
</Tp>
<Ref>730021082614064764300000002</Ref>
</CdtrRefInf>
...
</DrctDbtTxInf>
Use the template (ubs-lsv-chta-camt054-template.xml) to modify the ISR reference In the camt.054 and upload through the RaiseNow camt module in Salesforce.
<TxDtls>
<Refs>
<AcctSvcrRef>2021089PH0000365</AcctSvcrRef>
<EndToEndId>NOTPROVIDED</EndToEndId>
</Refs>
....
<CdtrRefInf>
...
<Ref>730021082614064764300000002</Ref>
...
</CdtrRefInf>
</Strd>
</RmtInf>
<AddtlTxInf>
LSV
</AddtlTxInf>
</TxDtls>
Sending camt files from Salesforce via RaiseNow Apex method
You may have a way to retrieve camt files from your bank via an Ebics integration or different avenues and upload these to Salesforce. In this case you can automate file processing by RaiseNow.
You need to programatically create the RaiseNow__CamtFile__c object, setting the required fields in the process. Be sure to set the RaiseNow__CamtFile__c.RaiseNow__Bank_Name__c according to the available options and attach you camt file to the created object. Then call
RaiseNow.CamtFileUploadController.requestUploadCamtFile(new List<String> {'a0y7Q00000136tvQAA'});
, replacing a0y7Q00000136tvQAA with the ID of your created object. We recommend that you set RaiseNow__HasRecordBeenSentToRaiseNow__c after successful completion of the operation.
Comments
0 comments
Article is closed for comments.