FinDock uses the Payment Schedule object to perform bulk payment collections. Payment schedules define a specific set of installments for collection, makes all the necessary changes to the relevant and related records, and results in either file creation for manual upload to your bank or automated API calls to the given Payment Service Provider (PSP).
The payment collection steps differ depending on whether the processing is file-based (bank) or API-based (PSP). However, the overall collection goes through the same basic phases - prepare, process and close - as illustrated here and explained in the sections below.
File-based payment collection
API-based payment collection
Phase 1 - Prepare
In this phase, the installment records are generated. The payment schedule creates or selects installments and links them to the schedule based on the source:
- FinDock (standalone) = Create
- Salesforce NPSP = Select
- Converse PayLink = Create
For an installment to be included in the collection run, the following needs to be true:
- Source, payment method, payment processor and target match the payment schedule details
- Due date is on or before the selection date of the payment schedule
- For recurring payments, the next collection date is on or before the selection date of the payment schedule
- If a payment profile is linked to the installment, the profile is active
- If a mandate is linked to the installment, the mandate is active.
- Installment status is New or Pending Recollection
If any of these requirements is false, the installment is ignored (or not created).
When preparation ends, the installments are linked to the schedule via a look up on the installment, and the status of the payment schedule is changed to 'Generated.' The duration of this phase depends on several factors, including how many records there are, org customizations, etc.
Phase 2 - Process
The next phase of the payment schedule is the payment initiation, resulting in either a bank file (pain.008 or Standard 18) in Chatter, or API calls to the PSP. This step is initiated by changing the status of the payment schedule from 'Generated' to 'Process.' This change can be done manually, or automatically by using workflows, process builder, approval processes or any of the other automation tools available in Salesforce.
Only this status change initiates the payment intent creation process. Approval processes or other customizations always need to change the status from 'Generated' to 'Process,' with no other steps in between, to initiate this activity.
When the process is initiated, ProcessingHub:
- Collects the installment data.
- Creates the appropriate bank file and sends it to the appropriate location (usually Chatter, but may also be the payment processor, like Smart Debit).
- OR initiates payment intent calls to the API of the designated Payment Service Provider.
If the processing phase results in a bank file that is uploaded to Chatter, the status of the payment schedule will change to 'Pending Verification.' From this point, the steps required to complete the payment schedule are mostly manual.
If the payment processor is PSP, the payments are automatically created at the PSP through API calls. All further steps are also handled via API calls and webhook notifications. For example, if there is an issue with an installment, such as an incorrect credit card number, this will be captured immediately and shown in the payment schedule. Successful payment collection notifications result in the installment status being changed to ‘Collected’ and payment records created.
Phase 3 - Close
If the bank charge file is delivered to the Chatter group, manual verification is required. Download the file from Chatter and upload it to the designated bank (defined by the Target on the payment schedule).
When the bank accepts the file upload, change the status of the payment schedule to 'Verified.' This triggers the final phase of bulk payment collection.
Depending on the payment method and processor, either the Finished Status value is set on every installment, or ProcessingHub closes the installments as 'Collected' and creates payment records for the installments.
These actions are handled automatically with API-based payment collection. The PSP sends notifications to FinDock (WebHub), and FinDock creates and updates records in Salesforce accordingly. This happens in real-time, so there is no hard distinction between the process and close phases for API-based payment collection.
Though not part of the payment schedule per se, reconciliation is an important part of payment collection. There are many ways to handle reconciliation. FinDock provides tools for both file-based or API-based payment collection scenarios.