1. Document Objectives
This document aims to detail the technical and functional operation of our connector. It defines the scope of action (what is covered or not) and lists the prerequisites necessary for its implementation.
Important Note: Our teams are available if you need any clarifications or further information.
How to use this document? We recommend reviewing this document with all knowledgeable persons (CIO, CFO, Chief Accountant, IT Manager), which objective is to:
Verify if the proposed flows match your business needs.
Confirm that your technical environment meets the installation prerequisites.
⚠️ Deployment Methodology:Our approach is intended to be pragmatic. If, after analysis, the prerequisites appear to be validated, we will favor the installation of the native connector.However, if for a technical reason or a specific configuration, the connector could not be activated , we will switch without problem to an alternative method via SFTP to ensure the continuity of your project.
2. Prerequisites and Deployment
2.1 Mandatory for any connection
Category | Requirement | How to check |
NetSuite edition | Oracle NetSuite OneWorld only | A Subsidiary Settings Manager option is available under the Setup tab. |
| Must be enabled | Required to download and install the Agicap SuiteApp from the NetSuite marketplace. If it is off, the SuiteApp cannot be installed. |
User role | The user performing the setup must have an Administrator role | Setup > Users/Roles > Manage Users |
Account features |
| Setup > Company > Enable Features (see A, step 2) |
Agicap SuiteApp | Agicap for NetSuite installed | It creates the dedicated |
🔒 We recommend a dedicated integration user rather than a personal account. This is a recommendation, not a requirement: a personal account works if you prefer that. The reason for the recommendation is that certificate-based authentication is tied to one NetSuite user and one role, so the connection stops working if that person leaves the company or their permissions are cleaned up.
2.2 Additional prerequisites per flow
Flow | Additional SuiteApp | Additional NetSuite configuration |
Payment file import | SFTP Connector (mandatory) Electronic Bank Payments (bundle ID 416781) if you do not already generate payment files | Two File Cabinet folders, an RSA 2048 private key in PEM format, and your bank accounts configured for payment execution in Agicap. |
Bank statement export | Auto Bank Statement Import (ABSI) |
|
2.3 Who does what
Step | Owner |
Installing the SuiteApps, enabling account features, assigning the role | Your NetSuite administrator / power user |
Filling the connection form in Agicap (account ID, certificate, certificate ID) | You, guided by this document |
Mapping your NetSuite subsidiaries to your Agicap entities, and validating the connection | Agicap — this step is on our side and is required before data flows |
Activating each flow on your connection | You , from the Banks & Integrations page once the connection is created. Each flow has its own toggle in the connection's synchronisation details. |
Configuring the SFTP flows in NetSuite (ABSI, SFTP Connector, parsers) | Your NetSuite administrator. The Agicap side of these flows is configured by our technical team, so plan a point with them before you start. |
3. General Information
The Agicap NetSuite connector is a bi-directional integration built and maintained in-house by Agicap . It uses NetSuite's REST API and SuiteQL endpoints , secured with OAuth 2.0 machine-to-machine certificate authentication , to import your business documents and accounting data into Agicap, and to write bank statements, payment entries and journals back into NetSuite.
One connector, one SuiteApp. Each flow is an optional feature activated on your connection : you can start with business document collection only and add flows later, on the same connection, without redoing the setup.
Mechanism | Used for | What you install in NetSuite |
REST API + SuiteQL (OAuth 2.0 M2M) | Business documents, chart of accounts and third parties, analytical plan, tax codes, bank journal export, purchase journal export | Agicap for NetSuite SuiteApp — that is all. It creates the dedicated |
SFTP (Agicap-hosted server) | Payment file import, bank statement export | SFTP Connector SuiteApp (outbound), Auto Bank Statement Import (ABSI) SuiteApp (inbound) |
Synchronisation frequency
The business document flow synchronises automatically twice a day . The other API flows synchronise once a day . All of them can be triggered manually.
Most API calls filter on the record's modification date, so only what changed is transferred.
SFTP flows run on the schedule you configure in NetSuite, paired with the schedule configured on the Agicap side.
One identifiable connection is created per NetSuite account.
💡 By default, Agicap collects business documents whose NetSuite modification date is less than one year old at the time the connection is created. A document issued earlier can still appear if it was modified recently in NetSuite. If you need a longer history, tell us before the first synchronisation.
4. Flows & Use Cases
4.1 NetSuite → Agicap
Flow | Status | Transport | Feeds |
Import business documents | Live with limitations | REST API | Treasury, Accounts Receivable, purchase-to-pay |
Import chart of accounts and third parties | In beta | REST API | Reconciliation, bank journal |
Import analytical plan | Live | REST API | Treasury, and the entries Agicap writes back |
Import tax codes | Live | REST API | VAT handling on the documents Agicap exports, and a prerequisite for the purchase journal |
Import purchase orders with lines (P2P) | Live | REST API | Payments, purchase-to-pay |
Import payment files | Live with limitations (via SFTP) | SFTP | Payments |
Import suppliers | In beta | REST API | Purchase-to-pay, third-party base |
Import beneficiaries / IBANs | In beta | REST API | Payments |
Import AR PDFs | Planned | REST API | Accounts Receivable |
Import customer base and contacts | Planned | REST API | Accounts Receivable |
4.2 Agicap → NetSuite
Flow | Status | Transport | Writes into NetSuite |
Export bank statements | Live with limitations (via SFTP) | SFTP + ABSI | Bank statement records for reconciliation and financial reporting |
Export bank journal from Treasury, journal entries | In beta | REST API | Journal entries, for bank movements with no business document behind them and for manual counterparts |
Export bank journal from Treasury, invoice reconciliation | In beta | REST API | Customer and vendor payments applied against your open AR / AP invoices. NetSuite generates the journal entry from the payment itself. |
Export supplier invoices, purchase journal | Planned | REST API | Vendor bills, with the invoice PDF attached. NetSuite will generate the journal entries from them. Not activable yet. |
E-invoicing emission and reception (France) | Planned | — | — |
Export Spend bank journal, cash in transit entries, debt, intragroup financing, AR follow-ups, financial investments, forecasts | Not available | — | Not currently covered. Tell us if one of these matters to you. |
📘 Reading the statuses. Live means deployed and running on several customer accounts. Live with limitations means available, with a limitation described in §5 and in the Limitations table. (via SFTP) means the flow is not carried by the API connector: the file is produced or consumed in NetSuite through dedicated SuiteApps and exchanged over an Agicap-hosted SFTP server. In beta means available, in gradual rollout, and still improving — activation is agreed case by case with your Agicap contact. Planned means on the roadmap and not activable yet. Not available means no commitment today.
5. Detailed Technical Documentation per Use Case
5.1 Import business documents (NetSuite → Agicap)
5.1 Import business documents (NetSuite → Agicap)
What it does. Feeds Agicap Treasury with expected cash movements, Agicap Accounts Receivable with the invoices to collect and follow up on, and the purchase-to-pay flow with your orders and delivery notes.
How. Agicap queries the NetSuite REST API and SuiteQL endpoints. Calls filter on the record's modification date so only what changed is transferred, and only the fields Agicap needs are retrieved.
What is collected — one synchronisation, all document types together:
Client invoices and credit notes
Supplier invoices and credit notes
Sales orders, and purchase orders with their lines
Delivery notes
Quotes
Referentials: currencies, subsidiaries, entities, customers, vendors, payment methods
Entity here refers to the NetSuite entity record (customers, vendors and other NetSuite entities). It has nothing to do with an Agicap entity, which is mapped to your NetSuite subsidiaries.
There is no per-document-type option: the business document flow collects all of them. What differs is where each type appears in Agicap, which depends on the Agicap modules active on your account, as well as the filters activated for each module.
Always on. The business document import is activated by default on every NetSuite connection and cannot be turned off. The other flows are optional and activated one by one.
⚠️ Known limitation — high volumes. Connections with a very high volume of business documents, or running on a limited NetSuite instance, can hit timeout errors during synchronisation. Documents then stop updating in Agicap until the next successful run. Our teams are actively working on it. If it happens, keep the API connection in place and contact Agicap Support with the connection name and the error message shown in the synchronisation details.
Optional — custom fields. You can have Agicap collect NetSuite custom fields and use them to build the label of your business documents in Treasury and Accounts Receivable, or request a specific filter. Clicking a field label in NetSuite reveals its internal id, for example custbody_phy_patient_name . This works for fields at the header level of a transaction document ; line-level fields are not covered. Declare the fields you need when you create the connection (see B, step 5) — adding them later requires renewing the connection credentials.
5.1.1 Import purchase orders with lines (NetSuite → Agicap)
5.1.1 Import purchase orders with lines (NetSuite → Agicap)
What it does. Brings your NetSuite purchase orders, line by line, into the Agicap purchase-to-pay flow so supplier invoices can be matched against their order.
The collection itself is part of the business document synchronisation (§5.1). What this flow adds is the exposure of those orders in the Agicap Accounts Payable module, which requires the corresponding Agicap module to be active on your account — tell your Agicap contact if you expect to see purchase orders there and they do not appear.
5.2 Import chart of accounts and third parties (NetSuite → Agicap)
5.2 Import chart of accounts and third parties (NetSuite → Agicap)
What it does. Keeps your accounting accounts and third parties in sync so you never maintain those lists manually in Agicap.
Accounting accounts. Agicap retrieves the full account list from NetSuite (internal ID, name, number, type, subsidiary assignment) and attaches each account to the relevant Agicap entities through the multi-entity mapping configured at setup.
Excluded from the import: accounts with no account number , and accounts of type NonPosting .
Third parties. Customers and vendors are imported into the Agicap third-party model with their name, code, linked accounting account and NetSuite internal ID.
💡 If the account selection lists in Agicap feel noisy, inactivating the accounts that have never moved, per subsidiary, is the quickest way to clean them up.
5.3 Import analytical plan and tax codes (NetSuite → Agicap)
5.3 Import analytical plan and tax codes (NetSuite → Agicap)
What it does. Imports your NetSuite analytical dimensions so cash flows can be analysed by axis in Agicap, and so the same dimensions can be carried back on the entries Agicap writes into NetSuite.
What is synced: class , department , location , and your custom segments .
Tax codes are imported through the same mechanism, and feed VAT handling on the documents Agicap exports.
👀 Custom segments. To import custom segments, the AgicapIntegrationRole (or your custom role) must have read permission on each custom segment concerned. Check this with your NetSuite administrator.
5.4 Import payment files (NetSuite → Agicap, via SFTP)
5.4 Import payment files (NetSuite → Agicap, via SFTP)
What it does. Your payment files, generated in NetSuite, are exported to an Agicap-hosted SFTP server and feed the Agicap Payment module. You then execute the payments through Agicap's banking connectivity, which gives you a single execution and control point.
❗ This flow is not handled by the API connector. You generate the payment file yourself in NetSuite, in a format NetSuite supports, and the SFTP Connector SuiteApp delivers it. Setup in C.
What you need
You already know how to generate payment files in NetSuite, or you install the Electronic Bank Payments SuiteApp (bundle ID 416781).
The SFTP Connector SuiteApp.
Every bank account referenced in those files is configured in Agicap for payment execution: host-to-host, EBICS TS, a centralising bank, or global file export.
Where the file lands in Agicap. If the file format is accepted by the bank for that account, it can be imported either as To Pay or To Prepare . If the format is not accepted by the bank, it is imported as To Prepare so Agicap Payment can convert it into a format the bank accepts.
5.5 Export bank statements (Agicap → NetSuite, via SFTP)
5.5 Export bank statements (Agicap → NetSuite, via SFTP)
What it does. Agicap retrieves your bank statements through its own banking connectivity (EBICS, H2H, SWIFT), then pushes them to an SFTP server. The ABSI SuiteApp picks them up and imports them into NetSuite, where they are parsed and mapped to your GL accounts for reconciliation and financial reporting.
This means you no longer maintain a separate bank connection on the NetSuite side: one banking setup in Agicap serves both tools.
⚠️ File format is the main constraint, please check it early. NetSuite supports a fixed list of statement formats and versions. For example CAMT.053.001.02 is supported by default, while CAMT.053.001.08 is not.Recommended approach: ask your bank to deliver statements in a format and version NetSuite supports. This is the simplest and most robust path.If that is not possible: a custom file transformation can be built by Agicap and is assessed case by case. Transformations of this kind are delivered as beta features on a best-effort basis, and are agreed in writing before implementation.
Setup in D.
5.6 Export bank journal and automatic reconciliation (Agicap → NetSuite)
5.6 Export bank journal and automatic reconciliation (Agicap → NetSuite)
What it does. You reconcile bank movements against invoices in Agicap. Agicap then writes the result into NetSuite, so your bank journal and your open AR/AP items are updated without manual re-entry.
How it works. Two mechanisms, depending on what was reconciled:
Case | What Agicap writes into NetSuite |
A bank movement reconciled against a business document | A payment object — a customer payment or a vendor payment. NetSuite then generates the journal entry itself, following your own accounting rules. This is the same mechanism as the manual "Make Payment" flow in NetSuite. |
A bank movement with no business document behind it, or manual counterparts added to a reconciled bank movement. | The bank transaction is written directly as a journal entry . |
Status: In beta.
Prerequisites.
The chart of accounts flow (§5.2) must be active, so accounts resolve on both sides.
The bank journal and reconciliation features must be active on your Agicap account, with the manual export option disabled. Agicap Support activates these settings for you: ask them before switching the flow on.
💡 The Agicap bank journal field Causale has no equivalent in NetSuite, so it is not mapped. This is not blocking : the export works without it.
Payments covering several third parties. NetSuite requires each customer payment to reference a single third party. When one bank payment settles invoices belonging to several NetSuite third-party records, Agicap automatically splits it into one payment per third party. Lines with no identifiable third party are exported directly as a separate journal entry.
⚠️ Two things to prepare on your side.Deduplicate your vendors and customers in NetSuite. A payment must reference the invoice and the third party consistently. Two records for the same company may cause the export to be rejected.Supplier invoices created in Agicap, not in NetSuite , cannot be automatically reconciled by this flow yet: the connector looks for a NetSuite-side reference that does not exist on them. Native support is planned. If this is your case, talk to your Agicap contact about the interim options.
5.7 Import suppliers and beneficiaries (NetSuite → Agicap)
5.7 Import suppliers and beneficiaries (NetSuite → Agicap)
Status: In beta. Two separate flows, same setup: nothing beyond A and B, plus their toggle.
Import suppliers feeds the Accounts Payable supplier base and the purchase-to-pay flow with supplier data from NetSuite.
Import beneficiaries / IBANs feeds the beneficiary list of the Payment module, so you do not maintain it by hand in Agicap.
If this flow is part of your project, talk to your Agicap contact about scope and timing rather than planning from this page.
5.8 Export supplier invoices, purchase journal (Agicap → NetSuite)
5.8 Export supplier invoices, purchase journal (Agicap → NetSuite)
Status: Planned. Development is ongoing and the flow cannot be activated yet.
What it will do. Supplier invoices digitised by Agicap (OCR) are created in NetSuite as vendor bills , with the invoice PDF attached to the record. NetSuite then generates the journal entries from those bills itself, so your purchase journal is fed without re-entry.
If this flow is part of your project, talk to your Agicap contact about scope and timing rather than planning from this page.
Setup procedure
🧭 Order of operations. A and B are mandatory for every API flow and must be complete before any flow is activated. C and D are the SFTP flows: they are independent and can be prepared in parallel.Plan roughly 30 minutes with your NetSuite administrator for A and B.
A - NetSuite configuration
A - NetSuite configuration
Step 1 — Install the Agicap SuiteApp
Step 1 — Install the Agicap SuiteApp
Start here: a successful installation is itself the proof that your NetSuite edition is compatible.
Click the three dots at the top right, then SuiteApps .
Search for Agicap for NetSuite (search box at the top left) and click Install .
Verify the installation: Customization → SuiteCloud Development → Installed SuiteApp List . You should see the
AgicapSuiteApprecord.
⚠️ If the SuiteApp cannot be installed, check that the Subsidiaries feature is enabled. On a non-OneWorld account it is unavailable, and the API connector cannot be used — we would then move to the SFTP alternative.
Step 2 — Enable the required account features
Step 2 — Enable the required account features
Go to Setup → Company → Enable Features . Most of these are usually already on, but check these three carefully:
Feature | Subtab → section | Why it is needed |
| SuiteCloud → SuiteTalk (Web Services) | All record read and write calls |
| SuiteCloud → Manage Authentication | Machine-to-machine authentication |
| Analytics → SuiteAnalytics Workbook | SuiteQL queries used for business documents and the chart of accounts |
Save. Enabling a feature can take a moment to become effective.
Step 3 — Assign the AgicapIntegrationRole
Step 3 — Assign the AgicapIntegrationRole
The Agicap SuiteApp creates a dedicated role carrying exactly the permissions the connector needs, and nothing more.
Setup → Users/Roles → Manage Users .
Select the user who will carry the integration — we recommend creating a dedicated integration user — and click Edit .
In the Access tab at the bottom of the page, add
AgicapIntegrationRole.Click Add , then Save .
🔒 The role is maintained by Agicap and ships with the SuiteApp. When a new flow or a fix needs an additional permission, we update the role and it propagates with the SuiteApp version: no reconnection and no new certificate on your side.If your security policy requires it , you can replace the standard role with a custom role dedicated to your account , scoped with your teams. Raise it with your Agicap contact before the setup call. One consequence to know before choosing it: a custom role does not receive the automatic permission updates above. When a new flow or a fix needs a permission, your connection can go into error until your team adds it manually.
B - Agicap connection form
B - Agicap connection form
In Agicap, open Banks & Integrations and search for NetSuite . The connection form opens. Keep a NetSuite tab open next to it: you will go back and forth twice.
Step 1 — Account ID
Step 1 — Account ID
Your NetSuite account ID is visible either directly in the URL of your NetSuite session, or in Setup → Company → Company Information .
Step 2 — Download the Agicap public key
Step 2 — Download the Agicap public key
Agicap authenticates with an OAuth 2.0 client credentials flow backed by a certificate. Agicap generates the certificate ; you upload it into NetSuite.
In the connection form, click Download the public key and keep the file at hand.
Step 3 — Create the M2M integration in NetSuite
Step 3 — Create the M2M integration in NetSuite
In NetSuite, go to Setup → Integration → OAuth 2.0 Client Credentials (M2M) Setup .
Create a new client credentials mapping between:
the entity , that is the NetSuite user from A, step 3,
the role
AgicapIntegrationRole,the application Agicap SuiteApp,
and upload the certificate you downloaded at step 2.
Save.
Step 4 — Copy the certificate ID back into Agicap
Step 4 — Copy the certificate ID back into Agicap
Copy the ID of the certificate you just created and paste it into the Certificate ID field of the Agicap form.
👀 The NetSuite certificate list is not sorted by creation date . If you created more than one certificate, make sure you take the most recently created one. Check the user and the role linked to the certificate to confirm.
Step 5 — Optional: declare the custom fields you want collected
Step 5 — Optional: declare the custom fields you want collected
If you want Agicap to build business document labels from NetSuite custom fields, declare their internal ids here, at connection time. Clicking a field label in NetSuite reveals its internal id, for example custbody_phy_patient_name . Header-level fields on transaction documents only.
To add custom fields after the connection is live:
Open the connection in Banks & Integrations → Manage connection → Renew Authorization and complete the flow.
The connection switches back to Setting up : Agicap Support must validate it again before synchronisations resume.
Once it is syncing again, contact Agicap Support with the business document type and the module where the label should be built.
⚠️ Once you click Renew Authorization or Edit credentials , a new public key is generated and the previous authentication data is deleted. You must complete the flow , otherwise all subsequent synchronisations fail. If that happens, simply redo the flow to the end.
Step 6 — Agicap validates the connection
Step 6 — Agicap validates the connection
After you submit the form, the connection appears in Banks & Integrations with a Setting up status. Agicap then completes the multi-entity mapping between your NetSuite subsidiaries and your Agicap entities, and validates the connection.
⚠️ This mapping cannot be modified once validated. Please review your list of subsidiaries with your Agicap contact before it is saved. Correcting a mistake means deleting the connection and recreating it from scratch.
Inactive subsidiaries do not need to be selected: the connector ignores them.
While the connection is in Setting up , no data flows. This is expected.
Step 7 — Check the first synchronisation
Step 7 — Check the first synchronisation
The connection has left the Setting up status
The synchronisation timeline shows a completed run
Your documents appear in Treasury and Accounts Receivable, for at least one entity
Amounts and currencies match what you see in NetSuite
The automatic synchronisation then runs twice a day for business documents and once a day for the other flows, and can be triggered manually at any time.
💡 On a large account, the very first synchronisation can take significantly longer than the daily ones, because it collects the historical backlog in successive time windows. If it appears stuck, contact your Agicap contact rather than recreating the connection.
C - Payment files via SFTP (NetSuite → Agicap)
C - Payment files via SFTP (NetSuite → Agicap)
📌 Start by asking your Agicap contact to provision the file transfer. The server URL, port, username and host key all come from it, and the NetSuite configuration below cannot be completed without them.
Step 1 — Prepare the SSH key
Step 1 — Prepare the SSH key
⚠️ Key format constraints. The NetSuite SFTP connector accepts RSA, ECDSA and DSA keys, and the private key must be in PEM format. Agicap servers accept RSA and EdDSA. The safe choice is an RSA 2048 key whose private key is in PEM format . The WinSCP OpenSSH export below is how you produce that file, it is not a different format.
Generate a 2048-bit RSA key pair, for example with the WinSCP key generator.
Make sure the private key file begins with
-----BEGIN RSA PRIVATE KEY-----. If not, convert it: WinSCP → Tools → Convert Key File → load the private key → Export OpenSSH key . Do not tick "force new format".Send the public key to your Agicap contact, who provisions your file transfer and returns the server URL, port, username and host key.
Step 2 — Prepare the payment files in NetSuite
Step 2 — Prepare the payment files in NetSuite
If you already generate payment files in NetSuite, nothing to do here.
If you do not, install the Electronic Bank Payments SuiteApp: Customization → SuiteBundler → Search & Install Bundles → List , bundle ID 416781 , then configure your payment file templates per bank.
💡 Payment file generation is a NetSuite configuration topic rather than an Agicap one. Your NetSuite integrator is usually the fastest route if you are setting it up for the first time.
Step 3 — Create the File Cabinet folders
Step 3 — Create the File Cabinet folders
Create two folders in your File Cabinet, one for files awaiting transfer and one for files already transferred. Suggested names:
agicap payment - processingagicap payment - processed
Note the internal ID of each folder, you will need them at step 5.
Step 4 — Install the SFTP Connector SuiteApp
Step 4 — Install the SFTP Connector SuiteApp
Customization → SuiteApps → search SFTP Connector → Install .
Step 5 — Create and map the outbound configuration
Step 5 — Create and map the outbound configuration
SFTP → SFTP Records → Outbound Configurations → New .
Fill in the name, server URL, port, host key and authentication method, using the credentials Agicap provided.
In the Outbound Mapping subtab, enter the internal IDs of the two File Cabinet folders from step 3, and the folder name on the Agicap SFTP server in the Bank folder field.
Save, then reopen the configuration in Edit mode and click Test Connection . Note: Test Connection does not work in View mode.
Click Outbound-Manual to run one export by hand and confirm the file arrives.
Step 6 — Schedule the export
Step 6 — Schedule the export
SFTP → SFTP Records → Outbound Configurations → View on your record.
Click Outbound-Schedule . A Script Deployment page opens.
Set the frequency you need and Save .
💡 If you manage several entities, agree the folder structure and file naming with your Agicap contact before scheduling, so payment files can be separated per entity on arrival.
D - Bank statements via SFTP and ABSI (Agicap → NetSuite)
D - Bank statements via SFTP and ABSI (Agicap → NetSuite)
📌 Same starting point as C: ask your Agicap contact to provision the file transfer first. The credentials and host key come from it.
Step 1 — Check your statement formats first
Step 1 — Check your statement formats first
Before any configuration, list the banks and statement formats involved and confirm each one is supported by a NetSuite parser. This is where projects usually stall. See the callout in §5.5.
Step 2 — Rights and SuiteApp
Step 2 — Rights and SuiteApp
Make sure you have Administrator rights, or the specific ABSI permissions.
Install Auto Bank Statement Import : Customization → SuiteApps (or SuiteCloud Development → SuiteApp Marketplace ) → search → Install .
Step 3 — Enable SuiteScript
Step 3 — Enable SuiteScript
Setup → Company → Enable Features → SuiteCloud subtab.
Under SuiteScript, check Client SuiteScript and Server SuiteScript .
Save . This is what makes the Private Keys page reachable.
Step 4 — Upload the private key
Step 4 — Upload the private key
Setup → Company → Preferences → Keys → Create New .
Details tab: a descriptive Name , a script ID with no spaces or special characters (NetSuite prefixes it with
custkey), and a Description stating what the key is for and who maintains it.Files tab: choose the private key file. It must be in PEM format — see C, step 1 for how to produce one.
Password : the passphrase used when generating the key, if any.
Audience tab, optional: check Restrict to Employees to limit which employees can use the key in SuiteScript, and use Restrict to Scripts to limit it to specific scripts.
Save . NetSuite validates and stores the key.
Step 5 — Create the Financial Institution record and Format Profile
Step 5 — Create the Financial Institution record and Format Profile
❗ Create one Financial Institution record per bank , then one Format Profile per file format and version within it. Mixing formats in one profile is the most common cause of failed imports.
Setup → Accounting → Financial Institutions → List → New .
In the record, add a Format Profile and choose SFTP Connectivity as the method.
Enter the server URL, username, password and host key provided by Agicap. For an Agicap server the URL is
files.agicap.com; the port, username and host key come with the credentials your contact sends you.Define the download filename pattern . Agree the exact filename and directory with your Agicap contact.
Step 6 — Account linking
Step 6 — Account linking
Map the data NetSuite will parse to your GL accounts. List every account concerned by the statements you import, and for each value the parser will extract, put that value in the first column and link it to the corresponding NetSuite GL account in the third column.
The format of the first column must match exactly what your chosen parser produces.
Step 7 — Configure the parser
Step 7 — Configure the parser
Format | What to watch |
CAMT.053 | Add every transaction code that can appear in the statements you receive. A missing code makes the whole import fail. Then check the tag mapping for each NetSuite field. |
MT940 | Standard NetSuite parser, follow the NetSuite documentation. |
BAI2 | Standard NetSuite parser, follow the NetSuite documentation. |
CSV | Fallback when a transformation was necessary. Columns and formats must match the NetSuite CSV import definition exactly. |
Step 8 — Test and activate
Step 8 — Test and activate
Ask Agicap to place a matching file on the SFTP server first, so the test is meaningful.
Click Submit , not Save directly.
If the result is green, click Save .
Click Track status to confirm the file was retrieved and parsed.
💡 Frequency. The import flow runs about once a day. You can trigger it manually by resubmitting the Format Profile, with a 60 minute minimum between two runs.Retention. NetSuite does not move or delete files once processed. The archiving strategy on the SFTP server is agreed with your Agicap contact during the setup, so the same statement is not imported twice.
Avoiding duplicate imports. NetSuite should skip a file it has already imported, but we recommend one of these strategies, agreed with your Agicap contact:
Date stamp in the filename — each file name includes its date (for example
bank_statement_2024-06-15.csv), and your NetSuite filename pattern accepts that date.Two-folder flow — files are delivered to a to be processed folder and moved to a processed folder once NetSuite's processing window has passed.
Custom SuiteScript on your side that renames or moves files after import.
Several banks or formats. Each NetSuite parser must only pick up the files of its own bank. Either use one folder per bank (for example /Bank_A/ , /Bank_B/ ), or a single folder with a naming convention (a bank prefix or suffix in each file name, for example BANKA_20240615.csv ) and configure each Format Profile to pick only its own pattern. A mix of both is possible.
How to activate each use cases
Once the Setup is done, and a first collection of business documents ran, you can activate the other flows directly on the Banks & Integrations page > Synchronisation details . Each flow has its own on/off toggle. The business document import is activated by default and cannot be turned off.
6. Frequent errors
6. Frequent errors
Error | What you see | Cause | What to do |
Timeout at the first synchronisation | No expected transactions appear in Treasury after the first synchronisation | Too much history retrieved at once (by default, the last 365 days of modified documents) | Contact Agicap Support: they can reduce the initial collection window, for example to 90 days. |
Timeout on a running connection Message in the synchronisation details: | Documents are no longer updated in Agicap | NetSuite took more than 5 minutes to answer an API call. Agicap stops calls after 5 minutes so that synchronisations do not hang indefinitely. | Run the synchronisation again a bit later. If the error persists, contact Agicap Support with the connection name and the error message. Do not delete or replace the connection. |
| All synchronisations fail after the credentials were edited | Edit credentials or Renew Authorization was started but not completed. A new public key is generated as soon as you click, and the previous authentication data is deleted. | Redo the credentials flow and complete it to the end (B, steps 2 to 4). |
Connection stays in Setting up | The connection was created but nothing synchronises | The mapping between your NetSuite subsidiaries and your Agicap entities has not been completed and validated yet, or a renewed authorization has not been revalidated | Contact Agicap Support: the mapping and validation are done on Agicap's side (B, step 6). |
Bank journal export rejected on a specific third party | One export fails, the others pass | Duplicate third party in NetSuite, so the invoice reference and the third-party reference do not point to the same record | Deduplicate vendors and customers in NetSuite. |
Purchase orders collected but not visible in Accounts Payable | Nothing appears in Accounts Payable after a successful synchronisation | The corresponding Agicap feature is not activated on your account | Contact Agicap Support to activate it. |
Need help or more information?
Contact your Agicap support.

