Table of Contents

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

  1. Customer Preferred Bank Accounts
  2. Vendor Bank Account Enhancements
  3. Bank Account Card Enhancements
  4. Restrictions on Payment Journals
  5. Bank Account Reconciliation Enhancements
  6. Payment Reconciliation Journal Enhancements
  7. FNB Bank Statement Integration
  8. Payment Journal Export
  9. FNB Payment API Integration

1. Customer Preferred Bank Accounts

Setup

  1. Table: CustPrefBankAccount_BANK_LINC

    • Navigate to the Customer Preferred Bank Accounts page to add or edit preferred bank accounts for customers.
    • Specify the Customer No., Currency Code, and Bank Account No..
  2. Page Extension: CustomerList_BANK_LINC

    • In the Customer List page, use the "Preferred Bank Accounts" action to manage preferred bank accounts for selected customers.

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

  1. Page Extension: VendorBankAccList_BANK_LINC
    • Navigate to the Vendor Bank Account List page to add or edit bank branch names for vendor bank accounts.

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

  1. Page Extension: BankAccountCard_BANK_LINC

    • Navigate to the Bank Account Card page to set up the following fields:
      • Direct Tfr. Batch Limit
      • Netcash Service Key
  2. Page Extension: GeneralLedgerSetup_BANK_LINC

    • In the General Ledger Setup page, enable the use of the Bank Branch List for selecting/capturing branch codes.
  3. Page Extension: BankExpImpSetup_BANK_LINC

    • In the Bank Export/Import Setup page, specify the Bank Export/Import file type: Text, CSV or API. Text and CSV produce a payment file for manual upload; API sends the batch directly to the bank (see FNB Payment API Integration). The API option requires a Premium subscription.
  4. Codeunits: Ensure the appropriate bank export format codeunit is configured for your banking institution on the Bank Export/Import Setup page (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 Limit and Netcash Service Key fields 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

  1. Codeunit: Subscriptions_BANK_LINC
    • Ensure your app subscription is active to enable all features.
    • Configure the CheckBankEFTLimit procedure 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

  1. Event Subscriber: BankAccReconciliationLine_OnAfterValidateEvent_AccountNo

    • Ensure the Gen. Prod. Posting Group and VAT Prod. Posting Group fields are correctly set up in the Bank Acc. Reconciliation Line table.
  2. Event Subscriber: BankAccReconciliationPost_OnPostPaymentApplicationsOnBeforeValidateApplyRequirements

    • Ensure the Gen. Prod. Posting Group and VAT Prod. Posting Group fields in the Gen. Journal Line table match those in the Bank Acc. Reconciliation Line table during the posting of payment applications.

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

  1. Page Extension: PaymentReconJnl_BANK_LINC

    • Added fields Gen. Prod. Posting Group and VAT Prod. Posting Group.
  2. Page Extension: TextToAccMapping_BANK_LINC

    • Added fields Gen. Prod. Posting Group, VAT Prod. Posting Group, Shortcut Dimension 1 Code and Shortcut 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.
  3. Event Subscriber: AppliedPaymentEntry_OnUpdateParentBankAccReconLineOnBeforeBankAccReconLineModify

    • Ensure field values for Gen. Prod. Posting Group, VAT Prod. Posting Group, Shortcut Dimension 1 Code and Shortcut Dimension 1 Code are correctly set on journal lines.
  4. Event Subscriber: BankAccReconciliationLine_OnAfterRemoveAppliedPaymentEntries

    • Ensure field values for Gen. Prod. Posting Group, VAT Prod. Posting Group, Shortcut Dimension 1 Code and Shortcut Dimension 1 Code are correctly reset on journal lines.
  5. 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

  1. Table & Page: BankIntegrationSetup_BANK_LINC

    • Open the Bank Integration Setup page (searchable under Administration) and complete the FNB group:
      • 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).
  2. Bank Account

    • Ensure the Bank Account No. on the relevant Bank Account card matches the account number registered with FNB, as it is used in the API request.

Usage

  1. Page Extension: BankAccRecon_BANK_LINC

    • On the Bank Acc. Reconciliation page, use the Import FNB Bank Statement action in the Bank menu.
    • The Statement Date must be set before running the action.
  2. Report: ImportBankRecon_BANK_LINC

    • The import request page prompts for a Start Date and End 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 Date must be on or after the Start Date.
  3. 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

  1. 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 Type for Moneycorp, or the Netcash/Standard Bank notification fields).
  2. 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)

  1. On the Bank Export/Import Setup page, 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).

  2. 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 with Account Type of Vendor are 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

  1. Table & Page: BankIntegrationSetup_BANK_LINC – open the Bank Integration Setup page (searchable under Administration) and complete the Moneycorp group:
    • Moneycorp Client ID – identifies your organisation to Moneycorp; written to the ClientID column of every exported row.
  2. Vendor Bank Account Card – set the Moneycorp Account Type field (Standard or Express); exported in the Type column.
  3. Page Extension: PaymentJournal_BANK_LINC – on the Payment Journal page, use the Export to Excel action. It runs EFTExportMoneycorp_BANK_LINC, which builds an .xlsx file (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) and Created By. The file is offered for download as soon as the action completes.
  4. Report: PmtJnlExcelExport_BANK_LINC (alternative) – a processing-only report that produces the same Moneycorp Excel layout for a selected journal template and batch via the SetFilters procedure, 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

  1. Table & Page: BankIntegrationSetup_BANK_LINC

    • Open the Bank Integration Setup page (searchable under Administration) and complete the FNB group:
      • 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 FNB group 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.
  2. Page Extension: BankExpImpSetup_BANK_LINC

    • On the Bank Export/Import Setup page, open the record used as the Payment Export Format on the bank account, and set Bank Export/Import file type to API.
    • The field can only be changed when the Processing Codeunit ID is the FNB export codeunit (EFTExportFNB_Bank_LINC).
    • Selecting API without 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."
  3. Bank Account Card

    • Ensure the bank account's Payment Export Format points at the setup record configured above — this is what routes the batch to the API rather than to a file.
  4. Vendor Bank Account Card

    • Capture the recipient's Bank Account No. and Bank 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.
  5. Job Queue Entry (recommended)

    • Schedule codeunit PaymentAPIMgt_BANK_LINC as 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.

Usage

  1. 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 type API, 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..
  2. Page Extension: PaymentJournal_BANK_LINC

    • The Payment Export Status field 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.
  3. Page: PmtExportLogs_BANK_LINC – the Payment Export Logs page (searchable under History) lists every batch that was sent, showing the originating journal template and batch, the debited Bank Account No., No. of Transactions, Approved Lines, Control Sum, Requested Execution Date, Status, the Bank Status Code and Status Reason returned by the bank, the Message ID and Instruction ID, Sent Date/Time, Last Status Check, Sent By, and Resubmitted From Entry No. where the batch is a resend of an earlier one.

    Compare Approved Lines with No. of Transactions to 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.
  4. Page: PmtExportLogLines_BANK_LINC – the Payment Export Log Lines page 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 Reason and the originating Document 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, Submitted or Approved is locked. Lines that were Rejected or ended in Error stay 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 Pending with no Instruction ID – the transmission never completed and nothing reached the bank. Running Update Status sets the batch and its lines to Error and releases the journal lines, so the batch can be corrected and sent again or the lines deleted.
  • A batch at Submitted with no Instruction 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 Error and 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!