Revolving credit product – Invoicing process
Enfuce provides the issuer invoice data (“statement”) on account level once per month. You can use the provided data for creating and sending invoices to your customers.
How does the revolving credit invoicing process work?
When the Enfuce invoicing process starts, it will pick all the accounts that have the invoicing date in question. The system controls whether the account has balance or new transactions from the last invoicing cycle and starts the invoice calculation.
If an account does not have any debt and the balance is zero, and there are no transactions within the billing period, the statement will not be created and will be moved to the next invoicing date.
The Enfuce system…
- checks if the end-user has paid the expected amount from the previous invoice before the due date. If not, the system will calculate overdue interest based on the remaining amount and days delayed. Overdue interest will be generated once a month.
- checks if there are any fees to be generated during the invoicing process and posts the possible fee transactions on the account.
- books the generated capital, overdue interest, interest, and fee to the due account.
- generates the invoice data for each end-user affected at the end of the invoicing process.
The invoice process flow
Rules and exceptions to the revolving credit invoicing process
There are rules for when the accounts are included in the statement exports:
- If the balance is not equal to zero
- If the balance equals zero but there are transactions in the cycle
The accounts are not included in the statement exports if…
- The balance is zero and there are no transactions
- The credit limit is zero (a credit limit set to zero is not a credit product)
- The account has status Sent to Collection
Statement number in a revolving credit invoice
The statement number is created from the account number and the billing date.
An example: The statement number for an account with account number 12345 which gets a statement on 2023-04-01 would be 12345230401.
Statement numbers also help in tracking payments and managing overdue interests which is why each invoice number needs to be unique.
Statement reference number in a revolving credit invoice
The reference number used for statements is set/updated in Account Details API in the paymentReference field (Optional). The possible types are:
- Customer-specific
- Finnish 7-3-1 checksum generation method (Account number as a base)
- MOD10 checksum generation method (Account number as a base)
Invoicing dates for revolving credit invoices
Every account will have one mandatory invoicing date in a month (also known as the billing cycle end date). There will be a default invoice date set up on the institution level but these can be changed into whichever calendar date per account through the Account Update API in the field invoiceDayOfMonth.For further details, please see the ‘Update a credit account’ guide.
For example, when an account is created it will have the invoice date set as the last day of the month as default. If you would like to set the invoice date on any other day of the month, this can be changed or added with the Account Update API.
The minimum billing cycle length is 14 days, which means that if an account is created closer than two weeks to the billing cycle end date, the first billing cycle end date is pushed one month forward. The same will happen if the invoice date is changed for the account in the middle of the invoicing cycle.
In conclusion:
- If the account is created between the 1st – 15th, it will have the statement on the last day of the same month
- If the account is created between 16th – 31st then the first invoicing will be on the last day of the next month
Invoice due date in a revolving credit invoice
The invoice due date can be adjusted with the Payment Terms API, which is available for credit products. The maximum length of the payment term can only be as long as the billing cycle, which is the length of the calendar month (28-31 days). If the month in question is 28 days long, it is the maximum length of the payment term even if 30 days would have been configured in the settings.
The due date has to pass before the next billing cycle closes. There cannot be two invoices open at the same time. The invoice due dates are always on banking days and cannot take place on Saturdays and Sundays by system default. Country-specific bank holidays can be added and maintained, so that the system skips due dates in case they fall on Christmas day, for example.
Minimum to pay in a revolving credit product
Minimum to pay (MTP) is the lowest amount that needs to be paid by the account holder every month by the due date so that the account balance doesn’t go overdue and start the reminder process.
A minimum-to-pay percentage can be set on an account level. The MTP is calculated as a flat percentage that can be set anything from 0-100 % of the account principal balance including interests and fees. If it is set for 100 % then all un-invoiced debt is always invoiced. The MTP percentage cannot be changed for the invoices that are already created. Any overdue balance will be added on top of the MTP.
You can also set thresholds for the MTP amount that will be rounded up if the percentage amount is less than the threshold.
For example, if the MTP percentage is 10% and the MTP amount is £20, then for an open balance of £100 the interest would be 100 x 0,10 = £10 which is rounded up to £20 based on the threshold rule. You can also set a minimum amount for delinquency, in this example, £5. If MTP is less than that, the balance will not age.
There are two options for the MTP calculations.
- In the default configuration, the MTP is calculated from the whole amount, including balance, fees, and interests.Default as an example:
£100 balance, £3 fee, £2 interest with 10% MTP = £(100+3+2) * 0,1 = £10,5 MTP (+ possible overdue balance) - The other possible configuration for the MTP goes like this: Interest + fees + % of the principal balance + the amount of overdue balance.An example for this option: £100 balance, £3 fee, £2 interest with 10 % MTP = £100 * 0,1 + £3 + £2 = £15 (+ possible overdue balance)
Statement printing and delivery methods for revolving credit
Enfuce generates XML files for you to use when invoicing customers. The statement XML file contains all the relevant information for you to create invoice print-outs. The statement information includes account details, invoice due amount, and recipient information, for example. The details of these are included in the ‘Statement XML file content’ section below. In addition, card and account transactions that have occurred during the invoice period are included in the invoice files.
Enfuce sends these files to you for further processing. You, as the issuer, handle the actual creation of invoice print-outs and the distribution of them and add possible additional information from other systems.
Enfuce supports adding information for the invoicing method based on your customers’ preferences. They can choose to receive paper, e-mail, or e-invoices.
Management of the invoice delivery method is managed by you. You can update invoice delivery methods for different accounts via Enfuce Update a credit account API with the invoiceDeliveryMethod option. The different invoicing methods are stored on the end-customer level and the information is forwarded to you in the statement file under the classifier information STMT_DELIVERY_TYPE.
Statement XML file naming for a revolving credit product
Enfuce_statement_institution_yyyy-mm-dd_X_yyyymmdd_hhmmss.xml
- Institution
- Issuer number
- yyyy-mm-dd
- Reporting date to identify for which date the content was generated
- X – running number to indicate the consisting
- File splitting is used for statements to avoid big files with high volumes
- The maximum amount of records: 99 per file
- yyyymmdd_hhmmss
- Timestamp of the file generation time in the Enfuce system
These sections and fields are included in the XML file, but only if there are values to be presented.
Section | Field Name | Details | Values |
---|---|---|---|
file | fileDate | File creation date | YYYY-MM-DD |
file | fileId | Running number sequence (file split) | |
file | institutionId | Issuer number | |
file | institutionName | Issuer name (Company Ltd) | |
file | NumberOfRecords | Number of records in the file max is 99 (will be split into new file if more) | |
file | receiver | Receiver where the file will be sent | |
records | record recordId | Record sequence number in the file | |
account | accountNumber | Customer account number | |
account | accountName | Customer name | |
account | addInfo (type&value) | Additional field containing the product configuration data (see values) | FUNCTIONAL_DATES GL_PLAN MTP_OPTION TARIFF_PLAN TARIFF_PLAN_INST PAYREF_TYPE |
account – classifiers | classifier (code,name,valueCode, valueName) | Additional field containing miscellaneous data of the account’s classifiers | DLQ_LEVEL, Delinquency Level |
account – classifiers | classifier (code,name,valueCode, valueName) | Additional field containing miscellaneous data of the account’s classifiers | LTY_ENROLMENT, Loyalty Enrolment |
account – classifiers | classifier (code,name,valueCode, valueName) | Additional field containing miscellaneous data of the account’s classifiers | PRODUCT_COMMERCIAL_CODE, Product Commercial Codes |
account – classifiers | classifier (code,name,valueCode, valueName) | Additional field containing miscellaneous data of the account’s classifiers | STMT_DELIVERY_TYPE, Statement Delivery |
account – classifiers | classifier (code,name,valueCode, valueName) | Additional field containing miscellaneous data of the account’s classifiers | PRODUCT_COMMERCIAL_NAME, Product Commercial Names |
account – classifiers | classifier (code,name,valueCode, valueName) | Additional field containing miscellaneous data of the account’s classifiers | CONTR_STATUS, Contract Status, 00 = Account OK |
account | productName | Product name | Revolving Credit |
account | productCode | Product code | CREDIT |
account | status | See further information see account statuses | eg. 00 -Account OK |
transactions | accountNumber | Customer account number (private or company) | |
transactions | addInfo (type, value) | Additional field containing miscellaneous data of transaction | FILENAME PAYER_NAME PAYMENT_DATE SENDER FROM_SOURCE OSRC_MEMBER R_REQ_RBS_NUMBER FPLP_SOURCE_CONTRACT FPLP_TARGET_CONTRACT T_USG |
transactions | exchangeRate | Exchange rate presented with 5 decimals | 1.00000 |
transactions | fees (amount, currency, name) | Left blank if no fees attached to the transaction | |
transactions | linkId | Transaction record ID | |
transactions | mccCode | Merchant Category Code | |
transactions | direction | Describing if the transaction is debiting or crediting | 1 = credit -1 = debit |
transactions | postingDate | Transaction posting date | YYYY-MM-DD |
transactions | settlementAmount | Settlement amount | |
transactions | settlementCurrency | Currency code | 208 = DKK 578 = NOK 752 = SEK 826 = GBP 840 = USD 978 = EUR |
transactions | transactionAmount | Transaction amount | |
transactions | transactionCurrency | Currency code | 978 = EUR |
transactions | transactionDate | Transaction date | YYYY-MM-DD |
transactions | transactionTime | Not available so default value | 0:00:00 |
transactions | transactionTypeCode | Transaction type code for account level transactions | Eg. PT-P Payments ILR3 Revolving interest |
transactions | transactionTypeName | Transaction type name | Payment To Client Contract Revolving Interest |
balances | amount | Balance amount | |
balances | type | Type of balance | TOTAL_DUE DUE PAST_DUE OVD_01 OVD_02 TOTAL_BALANCE OPENING_BALANCE |
records | billingDate | Billing date | YYYY-MM-DD |
records | billingPeriodEndDate | Billing period end date | YYYY-MM-DD |
records | billingPeriodStartDate | Billing period start date | YYYY-MM-DD |
cards | cardHolderFirstName | Cardholder first name | |
cards | cardHolderLastName | Cardholder last name | |
cards | cardId | Card ID (linked to contract) | |
cards | maskedCardNumber | Card numbers are masked in the file | |
cards | productName | Institution + product name (eg. Visa, MC) | |
cards | status | Card status | 00 = Card Ok |
cards: transactions | addInfos (type,value) | Additional field containing miscellaneous data of transactions | |
cards: transactions | cardId | Card ID (linked to contract) | |
cards: transactions | exchangeRate | Default? | 1.00000 |
cards: transactions | fees (amount, currency, name) | Left blank if no fees attached to the transaction | ATM Fee Marku-Up Fee |
cards: transactions | linkId | Transaction record ID | |
cards: transactions | maskedCardNumber | Card numbers are masked in the file | |
cards: transactions | mccCode | Merchant Category Code | |
cards: transactions | direction | Credit or debit card | -1 = debit |
cards: transactions | postingDate | Transaction posting date | YYYY-MM-DD |
cards: transactions | settlementAmount | Settlement amount | |
cards: transactions | settlementCurrency | Currency code | 978 = EUR |
cards: transactions | site | ||
cards: transactions | transactionAmount | Transaction amount | |
cards: transactions | transactionCity | Transaction city | |
cards: transactions | transactionCountry | Transaction country | |
cards: transactions | transactionCurrency | Transaction currency | 978 = EUR |
cards: transactions | transactionDate | Transaction date | YYYY-MM-DD |
cards: transactions | transactionDetails | Eg. retailer/online shop name | |
cards: transactions | transactionRetRefNumber | Transaction reference number | |
cards: transactions | transactionTime | Time when transaction happened | HH:MM:SS |
cards: transactions | transactionTypeCode | Transaction code for card level transactions | eg. R1-P R1-R |
cards: transactions | transactionTypeName | Transaction name | Retail |
client | addInfo (type,value) | Additional field containing miscellaneous data of the customer | EXT_ID |
client | clientNumber | Customer number | |
client | Customer email address | ||
client | firstName | Customer first name | |
client | lastName | Customer last name | |
client | locale | Customer country location | sv_SE |
records | creditLimit | Account credit limit | |
deliveryAddress | addressLine1 | Street address | |
deliveryAddress | city | City | |
deliveryAddress | countryCode | ISO alpha-3 code | eg. SWE |
deliveryAddress | countryName | Country name in letters | eg. Sweden |
deliveryAddress | zipCode | Postal code | |
records | dueDate | Invoice due date | |
interestRates | code | Interest rate code | INT_BASE INT_CASH_BILLED INT_CASH_OVD INT_FEE_BILLED INT_RETAIL_BILLED INT_RETAIL_OVD INT_FEE_OVD |
interestRates | effectiveDate | The date the interest rate is valid from | |
interestRates | name | Interest rate name | Interest Base Rate Interest Rate – Cash Billed Interest Rate – Cash Overdue Interest Rate – Fee Billed Interest Rate – Retail Billed Interest Rate – Retail Overdue Interest Rate – Fee Overdue |
interestRates | value | Interest rate percentage | |
records | minimumToPayAmount | MTP Value | |
records | minimumToPayPercentage | MTP Percentage | |
records | recordId | Record sequence number in the file | |
records | recordNumber | Statement number | |
records | referenceNumber | Statement reference number | |
records | selectedDueDate | Statement due date | |
file | slipReceiverCompanyName | Bank name | |
file | slipReceiverIBAN1 | Bank code |