Linc Bank Account Enhancements User Guide
Introduction
Welcome to the user guide for Linc Bank Account Enhancements, an extension app built for Microsoft Dynamics 365 Business Central by Linc Communications (Pty) Ltd. This guide will help you set up and use the various features of the app to enhance your banking operations.
Enhancements Included
- Customer Preferred Bank Accounts
- Vendor Bank Account Enhancements
- Bank Account Card Enhancements
- Restrictions on Payment Journals
- Bank Account Reconciliation Enhancements
- Payment Reconciliation Journal Enhancements
- FNB Bank Statement Integration
- Payment Journal Export
- FNB Payment API Integration
1. Customer Preferred Bank Accounts
Setup
Table:
CustPrefBankAccount_BANK_LINC- Navigate to the
Customer Preferred Bank Accountspage to add or edit preferred bank accounts for customers. - Specify the
Customer No.,Currency Code, andBank Account No..
- Navigate to the
Page Extension:
CustomerList_BANK_LINC- In the
Customer Listpage, use the "Preferred Bank Accounts" action to manage preferred bank accounts for selected customers.
- In the
Usage
- Reports: Preferred bank account details will automatically be included in the following reports:
- Standard Sales Invoice
- Sales Credit Memo
- Sales Order Confirmation
- Customer Statement
- Pro-Forma Invoice
- Sales Draft Invoice
- Sales Quote
2. Vendor Bank Account Enhancements
Setup
- Page Extension:
VendorBankAccList_BANK_LINC- Navigate to the
Vendor Bank Account Listpage to add or edit bank branch names for vendor bank accounts.
- Navigate to the
Usage
- Factbox: Vendor bank account information will be displayed in a factbox on the following pages:
- Posted Purchase Invoices
- Purchase Invoices
- Purchase Invoice
- Vendor Ledger Entries
3. Bank Account Card Enhancements
Setup
Page Extension:
BankAccountCard_BANK_LINC- Navigate to the
Bank Account Cardpage to set up the following fields:Direct Tfr. Batch LimitNetcash Service Key
- Navigate to the
Page Extension:
GeneralLedgerSetup_BANK_LINC- In the
General Ledger Setuppage, enable the use of the Bank Branch List for selecting/capturing branch codes.
- In the
Page Extension:
BankExpImpSetup_BANK_LINC- In the
Bank Export/Import Setuppage, specify theBank Export/Import file type:Text,CSVorAPI.TextandCSVproduce a payment file for manual upload;APIsends the batch directly to the bank (see FNB Payment API Integration). TheAPIoption requires a Premium subscription.
- In the
Codeunits: Ensure the appropriate bank export format codeunit is configured for your banking institution on the
Bank Export/Import Setuppage (FNB, ABSA, Standard Bank, Nedbank, Capitec, Netcash, Investec). See Payment Journal Export below for the full list of formats and how each is run.
Usage
- Bank Account Card: Use the
Direct Tfr. Batch LimitandNetcash Service Keyfields to manage direct transfer limits and Netcash services. - General Ledger Setup: Use the Bank Branch List for accurate branch code selection.
- Bank Export/Import Setup: Specify the correct file type for bank export/import operations. For FNB, this also determines whether the payment batch is written to a file or transmitted to the bank via the Payment API.
4. Restrictions on Payment Journals
Setup
- Codeunit:
Subscriptions_BANK_LINC- Ensure your app subscription is active to enable all features.
- Configure the
CheckBankEFTLimitprocedure to set direct transfer limits.
Usage
- Payment Journals: The app will enforce restrictions on payment journals based on your subscription status and direct transfer limits. Unauthorized actions will be prevented, ensuring compliance and security.
5. Bank Account Reconciliation Enhancements
Setup
Event Subscriber:
BankAccReconciliationLine_OnAfterValidateEvent_AccountNo- Ensure the
Gen. Prod. Posting GroupandVAT Prod. Posting Groupfields are correctly set up in theBank Acc. Reconciliation Linetable.
- Ensure the
Event Subscriber:
BankAccReconciliationPost_OnPostPaymentApplicationsOnBeforeValidateApplyRequirements- Ensure the
Gen. Prod. Posting GroupandVAT Prod. Posting Groupfields in theGen. Journal Linetable match those in theBank Acc. Reconciliation Linetable during the posting of payment applications.
- Ensure the
Usage
- Bank Account Reconciliation: The app will automatically update and validate the general and VAT product posting groups during the reconciliation process, ensuring accurate and up-to-date financial records.
6. Payment Reconciliation Journals Enhancements
Setup
Page Extension:
PaymentReconJnl_BANK_LINC- Added fields
Gen. Prod. Posting GroupandVAT Prod. Posting Group.
- Added fields
Page Extension:
TextToAccMapping_BANK_LINC- Added fields
Gen. Prod. Posting Group,VAT Prod. Posting Group,Shortcut Dimension 1 CodeandShortcut Dimension 1 Code. - Set values for fields to be transferred to journal lines during mapping process.
- Added use of wildcard character: Replace unwanted text in Mapping Text field with star (*). Text before and after character will be used during mapping process.
- Added fields
Event Subscriber:
AppliedPaymentEntry_OnUpdateParentBankAccReconLineOnBeforeBankAccReconLineModify- Ensure field values for
Gen. Prod. Posting Group,VAT Prod. Posting Group,Shortcut Dimension 1 CodeandShortcut Dimension 1 Codeare correctly set on journal lines.
- Ensure field values for
Event Subscriber:
BankAccReconciliationLine_OnAfterRemoveAppliedPaymentEntries- Ensure field values for
Gen. Prod. Posting Group,VAT Prod. Posting Group,Shortcut Dimension 1 CodeandShortcut Dimension 1 Codeare correctly reset on journal lines.
- Ensure field values for
Event Subscriber:
MatchBankPayments_OnFindTextMappingsOnBeforeCalculateStringNearness- A text-to-account mapping can now be linked to a bank account. Select the bank account on the text-to-account mapping and enable ApplyLinkedTxtToAcc_BANK_LINC on the bank account card.
Usage
- Payment Reconciliation Journals: The app will automatically update and validate the Gen. Prod. Posting Group, VAT Prod. Posting Group, Shortcut Dimension 1 Code and Shortcut Dimension 1 Code from values on Text-To-Account mappings. Enabling the ApplyLinkedTxtToAcc_BANK_LINC on the bank account card and selecting a bank account on the text-to-account mappings will ensure only mappings related to the bank account are considered.
7. FNB Bank Statement Integration
This feature retrieves bank statement transactions directly from the FNB API and populates Bank Account Reconciliation lines, removing the need to import a statement file manually.
Setup
Table & Page:
BankIntegrationSetup_BANK_LINC- Open the
Bank Integration Setuppage (searchable under Administration) and complete theFNBgroup:FNB Client ID– the client ID used to authenticate with the FNB API.FNB Client Secret– the client secret used to authenticate with the FNB API (stored masked).FNB API Base URL– the base URL for the FNB API (the OAuth token and transaction-history endpoints are appended automatically).
- Open the
Bank Account
- Ensure the
Bank Account No.on the relevantBank Accountcard matches the account number registered with FNB, as it is used in the API request.
- Ensure the
Usage
Page Extension:
BankAccRecon_BANK_LINC- On the
Bank Acc. Reconciliationpage, use the Import FNB Bank Statement action in theBankmenu. - The
Statement Datemust be set before running the action.
- On the
Report:
ImportBankRecon_BANK_LINC- The import request page prompts for a
Start DateandEnd Date. By default these are set to the first day of the statement-date month and the statement date respectively, and can be adjusted. - The
End Datemust be on or after theStart Date.
- The import request page prompts for a
Codeunit:
FNBImport_BANK_LINC- Authenticates against the FNB OAuth2 endpoint using the configured credentials, retrieves the transaction history for the selected date range, and creates a reconciliation line per transaction (transaction date, description, end-to-end reference and statement amount).
- Each line is tagged with
ReconImportID_BANK_LINC(the FNB entry ID) so re-running the import skips transactions that were already imported. A message reports how many new lines were created.
8. Payment Journal Export
The extension exports vendor payment journal lines into bank-specific payment files. Each supported bank has its own export format codeunit, and all of them read the same vendor bank account details, differing only in the file layout and how the export is triggered.
Supported export formats
| Bank / Format | Codeunit | How it runs | Output |
|---|---|---|---|
| FNB | EFTExportFNB_BANK_LINC |
Standard Export action (via Bank Export/Import Setup) |
Bank-specific file, or a direct API transmission when the file type is API — see FNB Payment API Integration |
| ABSA | EFTExportABSA_BANK_LINC |
Standard Export action (via Bank Export/Import Setup) |
Bank-specific file |
| Standard Bank | EFTExportSTD_BANK_LINC |
Standard Export action (via Bank Export/Import Setup) |
Bank-specific file |
| Nedbank | EFTExportNED_BANK_LINC |
Standard Export action (via Bank Export/Import Setup) |
Bank-specific file |
| Capitec | EFTExportCapitec_BANK_LINC |
Standard Export action (via Bank Export/Import Setup) |
Bank-specific file |
| Netcash | EFTExportNetcash_BANK_LINC |
Standard Export action (via Bank Export/Import Setup) |
Bank-specific file |
| Investec | EFTExportInvestec_BANK_LINC |
Standard Export action (via Bank Export/Import Setup) |
BulkPayment.<yyyyMMdd>_Investec.csv |
| Moneycorp | EFTExportMoneycorp_BANK_LINC |
Export to Excel action on the Payment Journal | Excel .xlsx file |
Shared formatting helpers (zero/blank padding, reference building, special-character stripping) are provided by EFTExportFormats_BANK_LINC. Every format processes only lines with an Account Type of Vendor, and uses the vendor's Preferred Bank Account Code to locate the Vendor Bank Account whose details are written to the file.
Common setup
- Vendor Bank Account Card – capture the banking details used by every format (account number, bank branch, account type). Format-specific fields are also set here (for example, the
Moneycorp Account Typefor Moneycorp, or the Netcash/Standard Bank notification fields). - App subscription – the bank EFT export formats only run when the app subscription is active (see Restrictions on Payment Journals).
Running the standard bank formats (FNB, ABSA, Standard Bank, Nedbank, Capitec, Netcash, Investec)
On the
Bank Export/Import Setuppage, set the Processing Codeunit to the relevant export codeunit from the table above and link it to the bank account's payment export format (see Bank Account Card Enhancements).From the
Payment Journal, run the standard Export action. The configured codeunit generates the bank-specific payment file for the batch.For Investec, the export is a CSV file with a header record (
1,2,...), one payment record per vendor line (debit account, beneficiary name, account number, branch code, currency, amount, action date, message and payment reference), and a footer record (99,...) totalling the record count, amount and sum of beneficiary account numbers. Only lines withAccount TypeofVendorare exported, and any commas embedded in free-text fields (beneficiary name, message, reference) are stripped so they cannot break the column layout.
Running the Moneycorp export
- Table & Page:
BankIntegrationSetup_BANK_LINC– open theBank Integration Setuppage (searchable under Administration) and complete theMoneycorpgroup:Moneycorp Client ID– identifies your organisation to Moneycorp; written to theClientIDcolumn of every exported row.
- Vendor Bank Account Card – set the
Moneycorp Account Typefield (StandardorExpress); exported in theTypecolumn. - Page Extension:
PaymentJournal_BANK_LINC– on thePayment Journalpage, use the Export to Excel action. It runsEFTExportMoneycorp_BANK_LINC, which builds an.xlsxfile (PaymentJournalExport_<yyyyMMdd>.xlsx) with one row per vendor payment line and the columns:ClientID,BankingDetailsID(preferred bank account code),Surname,FirstName(vendor bank account name),Currency(line currency, or the LCY code when blank),Amount,Type(Moneycorp account type),Payment Date,Client Reference(payment reference) andCreated By. The file is offered for download as soon as the action completes. - Report:
PmtJnlExcelExport_BANK_LINC(alternative) – a processing-only report that produces the same Moneycorp Excel layout for a selected journal template and batch via theSetFiltersprocedure, for use in scheduling or automation where the page action is not suitable.
9. FNB Payment API Integration
Instead of exporting a payment file and uploading it to FNB manually, a payment journal batch can be transmitted directly to FNB through the FNB Payment Execution API. Every transmission is recorded in the Payment Export Log, which tracks the outcome the bank reported for each individual payment, and the journal batch is locked while a transmission is unresolved so a payment cannot be sent twice or posted before the bank has paid it.
This feature requires a Premium subscription. The Moneycorp export and all file-based export formats remain available on the base subscription.
Setup
Table & Page:
BankIntegrationSetup_BANK_LINC- Open the
Bank Integration Setuppage (searchable under Administration) and complete theFNBgroup:FNB Client ID– the client ID used to authenticate with the FNB API.FNB Client Secret– the client secret used to authenticate with the FNB API.FNB API Base URL– the base URL for the FNB API (the payment-initiation and status-report endpoints are appended automatically).
- These are the same credentials used by FNB Bank Statement Integration. If statement import is already configured, no new credentials are needed.
- The
FNBgroup is editable only with an active Premium subscription. Without one, the fields are read-only and a notification is shown when the page is opened.
- Open the
Page Extension:
BankExpImpSetup_BANK_LINC- On the
Bank Export/Import Setuppage, open the record used as thePayment Export Formaton the bank account, and setBank Export/Import file typetoAPI. - The field can only be changed when the
Processing Codeunit IDis the FNB export codeunit (EFTExportFNB_Bank_LINC). - Selecting
APIwithout a Premium subscription is rejected with: "A Premium subscription is required to use the API export/import file type. Please contact Linc Communications (Pty) Ltd."
- On the
Bank Account Card
- Ensure the bank account's
Payment Export Formatpoints at the setup record configured above — this is what routes the batch to the API rather than to a file.
- Ensure the bank account's
Vendor Bank Account Card
- Capture the recipient's
Bank Account No.andBank Branch No.as for any other export format. These are re-read from master data each time a batch is sent, so corrections take effect on a resend.
- Capture the recipient's
Job Queue Entry (recommended)
- Schedule codeunit
PaymentAPIMgt_BANK_LINCas a Job Queue Entry to periodically refresh the status of batches that are still with the bank. Without it, statuses are only updated when a user runs the Update Status action manually.
- Schedule codeunit
Usage
Sending a batch
- From the
Payment Journal, run the standard Export action as for any other FNB export. Because the linked setup record has the file typeAPI, the batch is sent to FNB instead of written to a file. - A payment export log entry is created for the batch, with one log line per journal line, and each journal line is linked to the payment it was sent as.
- All lines in the batch must share the same
Bal. Account No..
- From the
Page Extension:
PaymentJournal_BANK_LINC- The
Payment Export Statusfield on each journal line shows the outcome the bank reported for that specific payment. - The Payment Export Logs action (Navigation group) opens the log entries for the current journal batch.
- The
Page:
PmtExportLogs_BANK_LINC– thePayment Export Logspage (searchable under History) lists every batch that was sent, showing the originating journal template and batch, the debitedBank Account No.,No. of Transactions,Approved Lines,Control Sum,Requested Execution Date,Status, theBank Status CodeandStatus Reasonreturned by the bank, theMessage IDandInstruction ID,Sent Date/Time,Last Status Check,Sent By, andResubmitted From Entry No.where the batch is a resend of an earlier one.Compare
Approved LineswithNo. of Transactionsto see whether a batch was paid only in part.Available actions:
- Update Status – retrieves the latest status report from the bank for the selected entries and updates the batch and its lines.
- Resubmit – sends a failed batch again as a new log entry with fresh identifiers. Recipient bank details are re-read from the vendor, customer or employee master data, so corrections take effect.
- Lines – opens the individual payments in the batch.
- Download Request JSON, Download Initial Response JSON, Download Status Report JSON – download the messages exchanged with the bank, for audit or support purposes.
Page:
PmtExportLogLines_BANK_LINC– thePayment Export Log Linespage shows each payment in a batch:End-to-End ID,Account Type,Account No.,Recipient Name,Recipient Bank Account Code,Recipient Bank Account No.,Branch Code,Currency Code,Amount,Reference(the text that appears on the recipient's bank statement),Status,Bank Status Code,Status Reasonand the originatingDocument No.
Payment statuses
| Status | Meaning |
|---|---|
Pending |
The payment has been recorded locally but the bank has not yet acknowledged it. |
Submitted |
The bank has acknowledged the payment but has not yet reported a final outcome. |
Approved |
The bank has paid the payment. |
Rejected |
The bank refused the payment. Correct the line and send it again. |
Error |
The payment never reached the bank, or a technical failure occurred. Correct the line and send it again. |
The batch status is derived from its lines: while any line is still Pending or Submitted the batch shows Submitted; once every line is settled, the batch is Approved only if all lines were paid, otherwise Rejected. Statuses are colour-coded on both log pages — green for Approved, red for Rejected and Error.
Journal batch locking
Once any line in a payment journal batch has been sent to the bank, the batch is locked by PmtExportGuard_BANK_LINC to keep it consistent with what the bank holds:
- Lines that were sent or paid cannot be changed or deleted. A line whose payment is
Pending,SubmittedorApprovedis locked. Lines that wereRejectedor ended inErrorstay editable so they can be corrected and sent again. - No new lines can be added to a batch that has been sent. Use a different journal batch — a line added here would be a payment the bank knows nothing about.
- A batch cannot be sent again while any line is still with the bank. Run Update Status first to establish whether those payments were made. Lines the bank has already paid never block a resend; they are simply skipped.
- A batch cannot be posted until every line has been paid. Lines that were never sent, or that are not yet
Approved, block posting.
These checks apply only to batches that were actually sent through the API — journals exported to a file are unaffected.
Troubleshooting
- Posting a batch that was never exported – when a batch on an API-configured bank account is posted without having been exported, a confirmation is shown: "Bank account %1 is set up to export payments via API, but journal batch %2 %3 has not been exported. Are you sure you want to post it without exporting?" Cancel it if the payments were meant to be transmitted.
- A batch stuck at
Pendingwith noInstruction ID– the transmission never completed and nothing reached the bank. Running Update Status sets the batch and its lines toErrorand releases the journal lines, so the batch can be corrected and sent again or the lines deleted. - A batch at
Submittedwith noInstruction ID– this is genuinely ambiguous and is never resolved automatically: "Log entry %1 was submitted to the bank but no instruction ID was recorded, so its status cannot be retrieved. Confirm with the bank whether the payment was processed before you take any action on this batch." Confirm with FNB whether the payment went through before touching the batch. - Resubmit is refused – only a batch the bank refused (
Rejected) or one that failed to send (Error) can be sent again. Run Update Status first to establish where the batch stands. Resubmitting a batch that has already been resubmitted prompts for confirmation. - Nothing left to resend – lines the bank has already paid are never sent again, and lines still with the bank must be resolved first. Where a batch is partly resendable, the number of lines to be sent, already paid, and still with the bank is confirmed before the batch goes out.
- Missing recipient details – "You must specify the Bank Account No. for %1 %2." or "You must specify the Bank Branch No. for %1 %2." Complete the recipient's bank account before sending.
- Communication failures – a failure to reach FNB, a rejected initiation call, or an unreadable response sets the batch to
Errorand records the bank's response on the log entry. Use Download Initial Response JSON to inspect what the bank returned.
Conclusion
Linc Bank Account Enhancements is designed to streamline and enhance your banking operations within Microsoft Dynamics 365 Business Central. By following this guide, you can set up and use the app's features to improve efficiency, accuracy, and control over your financial transactions. Enjoy the benefits of a more powerful and user-friendly banking experience!