The installment object might be the most important object in FinDock, it represents a single amount receivable, and it will continue to represent this particular amount receivable, meaning that you can always track if this amount was paid, when, and in the case of a reversal or refund, you can track it back to the exact installment that is involved.
Example: In January you collect 100 from the bank account of a customer using Direct Debit. In February you do the same. In March the customer reverses the January transaction. Because FinDock will always link transactions and payments back to the original installment, it will actually be the installment of January that is reversed, even though we already have a February installment that has been collected after that.
All transactions that go through FinDock will eventually be linked to an installment.
The installment object currently has the following available Record Types:
- "Receivable" wich is used for all standard installments.
- "GiftAid" which is only available if the Gift aid package is installed, and is used to track gift aid claim installments.
Some of the key fields on the installment object are:
- Amount: this defines the initial starting amount for this amount receivable
- Open Amount: this describes how much of the original amount is still due
- Status: this field reflects the overall status of this installment (collected, reversed, outstanding, etc.)
- Source: The source package this Installment is connected to.
- Payment Method: reflects the current planned payment method to be used for collection of the amount receivable. However, this does not limit the payment methods that could be used to close this installment. (for instance, a Direct Debit installment can still be closed with a Credit card payment).
- Due date: the date this amount receivable is supposed to be paid
- Payment reference: a unique code provided by the payment extension to identify this transaction
- GUID: a unique identifier created by FinDock, this can be used to reference this installment through the Payment API
Installment Statuses and Counters
The Installment comes with a list of different statuses. Each status can be categorized as ‘open’ or ‘closed,’ similar to opportunity stages. For all the different closed Installment statuses, FinDock comes with two fields:
- Last status Date: stores on insert of a payment under the Installment. The value from the field Collection Date of the payment is taken. For the statuses ‘Failed’ and ‘Cancelled’, today's date is stored on the Installment on status change instead of on insert of a payment
- # of times statused: stores the number of times the Installment was put to this specific status
|Status||Explanation||Installment Date Field||Installment Status Counter|
|Collected||This installment is paid for at least the full amount or even more.||Last Collection Date (||Collection Count (|
|Reversed||This installment was paid, but has been reversed, the reason is stated in the last reason code received field.||Last Reversal Date (||# of times Reversed (|
|Rejected||This installment was never paid, but has been rejected by the payment processor; the reason is stated in the last reason code received field.||Last Rejected Date (||# of times Rejected (|
|Outstanding||This installment is awaiting payment, but there is no active process collecting the money, meaning the payment will come in through either bank transfer or some other external system.||Open status, therefore not applicable.||Open status, therefore not applicable.|
|Cancelled||This installment is cancelled and no payment is expected||Last Cancelled Date (||# of times Cancelled (|
|Refunded||This installment was 'Paid back' to the debtor, and no new payment is expected||Last Refunded Date (||# of times Refunded (|
|Pending||This installment is currently in processing and a result (positive or negative) is expected||Open status, therefore not applicable.||Open status, therefore not applicable.|
|Pending processing||This installment is currently in processing and a result (positive or negative) is expected (this status is used for specific payment processors only)||Open status, therefore not applicable.||Open status, therefore not applicable.|
|Pending recollection||This installment was reversed, but is now scheduled for re-collection at the next collection run.||Open status, therefore not applicable.||Open status, therefore not applicable.|
|Failed||This installment could not be processed, check the last status reason for more details||Last Failed Date (||# of times Failed (|
|Partially paid||A payment was received, but not for the full amount of this Installment. so a certain amount is still expected to be paid.||Open status, therefore not applicable.||Open status, therefore not applicable.|
|New||This installment is ready for processing||Open status, therefore not applicable.||Open status, therefore not applicable.|
Customizing the installment object
Customizations to the installment object should be done with care. Creating additional custom fields is supported, and these can even be supplied through the Payment API. However, it is not recommended to make any custom field you create a required field (at field level or through validation rule). You can still require users to enter the value by making it a required field on page-layout level. For more information, see Make a Custom Field required.
Most of the installments are created automatically by the system. Do not introduce customizations that negatively affect the installments and might not allow it to be inserted or updated. Doing so can compromise the data integrity of FinDock.
Payment References and GUIDs
Every installment that is being processed through FinDock is automatically assigned a GUID (Globally Unique Identifier). These identifiers can be used when referencing the installment in a paylink for instance. Of course, every installment also has a Salesforce Id, however these Id’s are hexadecimal numbers that are created in order. And as such, based on a single installment Id, it is possible to guess the following id’s by simply adding +1 to the Id. When using GUIDs this is no longer possible.