Overview
This guide covers a SFTP integration between your institution and NBID, where you are able to send and receive instruction files from NBID to initiate data exchanges related to activity within the network. An SFTP integration involves two directions of file transfer:
- Outbound (to NBID): You send daily transaction files to initiate fund transfers and activity into and out of the network.
- Inbound (from NBID): You receive daily report files — balances, withdrawals, trial balances, GL postings, GL balances, monthly settlement, and the monthly account statement bundle.
This document assumes that you will be connecting to NBID’s server. If you choose for us to send files to your server instead, please see the alternate instructions at the bottom of this document.
Implementation Timeline
The typical installation timeline of an SFTP integration is 2-3 weeks. The steps of installing this integration are as follows:
- Your team fills out and returns the completed SFTP Intake form (2-3 business days)
- NBID configures your SFTP connection and returns server connection details to you (2-3 business days). It is not necessary to test in a Sandbox (test) environment. Our testing process is covered in more detail below.
- Connectivity Test (1 day)
- End to end testing plan (3 days)
Exchange Details
A SFTP integration allows your team to automate the exchange of data related to network activity as well as provide your team with consistent and accurate financial reporting. You will connect to NBID’s SFTP server where NBID will post files daily after processing. NBID provides your credentials and private key.
Use your preferred SFTP client (e.g., FileZilla, WinSCP, or command-line) with the following configuration connection settings:
| Detail | Value |
|---|---|
| Server Host | sftp.prod.modernfi.com |
| Port | 22 |
| Username | Provided by NBID |
| Authentication | SSH keys (exchanged via SendSafely) |
| From NBID Folders | /trial_balances/ /balances/ /withdrawals/ /gl_postings/ /gl_balances/ /settlement_postings/ |
| Test Folder | /test/ |
| To NBID Folder | /transactions/ |
Testing
Before going live, you'll complete a four-day testing plan to confirm your SFTP connection is working and that your files meet NBID's formatting requirements.This testing plan is designed to help your team understand how SFTP is used to send instruction files to NBID to initiate money movement in and out of the NBID network via the Program Account. We perform testing in our production environment with small dollar amounts.
Before you begin:
- Create two separate test accounts and designate them for use throughout all testing below. You will be testing with real money in small dollar amounts.
- Confirm your understanding of fund flow before testing: deposits move funds from the Test Account(s) → Program Account; withdrawals move funds from the Program Account → Test Account(s).
- Coordinate with your team to ensure someone is available to run the internal job or manually move money between the Test Account(s) and the Program Account as needed during testing.
At the end of the full testing process, the Program Account balance will be zeroed out. The NBID team will walk you through each step live. See the below for an overview on the four-day testing plan.
Day 1: Connectivity Test
- Submit a test transaction file to the /tests/ folder by 1:00 p.m. ET
- Please flag to NBID that you have delivered the file.
- NBID will confirm receipt of the file. Now that connectivity has been established, we will move on to end-to-end testing.
Day 2: Deposit Test
- Submit a test transaction file to the /transactions/ folder by 1:00 p.m. ET containing two deposit transactions of $10 each (one per account).
- Please flag to NBID that you have delivered the file.
- NBID will review the file and confirm it meets formatting requirements. By 8:00 p.m. ET, you'll receive a balances file reflecting the two deposits.
- State of accounts: 2 accounts × $10 = $20 total
Day 3: First Withdrawal Test
- Submit a test transaction file to the /transactions/ folder by 1:00 p.m. ET requesting a $10 withdrawal from one account (shown as a negative value in the file).
- Please flag to NBID that you have delivered the file.
- NBID will review the file and confirm it meets formatting requirements. By 8:00 p.m. ET, you'll receive a withdrawal file reflecting the $10 withdrawal and balances file reflecting the single account with $10.
- State of accounts: 1 account with $10 remaining, 1 account at $0
Day 4: Second Withdrawal Test
- Submit a test transaction file to the /transactions/ folder by 1:00 p.m. ET requesting a $10 withdrawal from the remaining funded account.
- Please flag to NBID that you have delivered the file.
- NBID will review the file and confirm it meets formatting requirements. By 8:00 p.m. ET, you'll receive a withdrawal file reflecting the $10 withdrawal and balances file reflecting $0 between both accounts. The testing process is complete.
- You're ready to use SFTP in the production environment for sending instruction files to NBID to initiate data exchanges related to money movement.
- State of accounts: 2 accounts at $0 — testing complete
Critical Setup Considerations
- File Naming: Naming conventions are case-sensitive and must match exactly. All column headers must be included as-is.
- Authentication: Key-based SSH authentication is required. Never share SSH keys via email — NBID will always deliver keys via SendSafely.
- IP Whitelisting: Your external IP address must be whitelisted before a connection can be established.
- Testing Folder: Use the /tests/ folder for all test file transfers. All other folders are linked to Production, which are assumed to be for live accounts and data exchanges related to actual money movement.
- Submission Deadline: Outbound Files (Sent to NBID) Transaction Files must reach NBID by 1:00 p.m. ET for same-day allocation. Files received after this time will be included in the next business day’s allocation.
- File Deletion: NBID does not delete transaction files. Files can be differentiated by the date in their filename.
File Format Specifications
All files are delivered or submitted as CSVs (exception case: Bulk Account Statements delivered monthly as a ZIP folder). File naming conventions are case-sensitive.
Inbound Files (From NBID)
| File | Naming Convention | Folder | Schedule |
|---|---|---|---|
| Balances | BALANCES_YYYY-MM-DD.csv | /balances/ | Daily by 8:00 p.m. ET |
| Trial Balances | TRIAL_BALANCES_YYYY-MM-DD.csv | /trial_balances/ | Daily by 8:00 p.m. ET |
| Withdrawals | WITHDRAWALS_YYYY-MM-DD.csv | /withdrawals/ | Daily ~5:00 p.m. ET |
| GL Postings | GL_POSTINGS_YYYY-MM-DD.csv | /gl_postings/ | Daily by 8:00 p.m. ET |
| GL Balances | GL_BALANCES_YYYY-MM-DD.csv | /gl_balances/ | Daily by 8:00 p.m. ET |
| Cost Center GL Postings | COST_CENTER_GL_POSTINGS_YYYY-MM-DD.csv | /cost_center_postings/ | Daily by 8:00 p.m. ET |
| Cost Center GL Balances | COST_CENTER_GL_BALANCES_YYYY-MM-DD.csv | /cost_center_balances/ | Daily by 8:00 p.m. ET |
| Settlement Postings | SETTLEMENT_POSTINGS_YYYY-MM-DD.csv | /settlement_postings/ | By EOD of first business day of following month |
| Cost Center Settlement Postings | COST_CENTER_SETTLEMENT_POSTINGS_YYYY-MM-DD.csv | /cost_center_settlement_postings/ | By EOD of first business day of following month |
| Bulk Account Statements | ACCOUNT_STATEMENT_BUNDLE_YYYT-MM-DD.zip | /account_statement_bundle/ | By EOD of the last day day of the month |
Outbound Files (To NBID)
File naming conventions are case-sensitive. It is crucial that you follow the format below precisely.
| File | Naming Convention | Folder | Deadline |
|---|---|---|---|
| Transactions | TRANSACTIONS_YYYY-MM-DD.csv | /transactions/ | 1:00 p.m. ET daily |
You MUST follow the exact naming format above. Hyphens and underscores must match.
transactions File Fields (Outbound)
| Field | Required | Description |
|---|---|---|
institution_sweep_account_id | Yes | Internal account ID on your core for the depositor’s sweep account |
amount | Yes | Numeric only, no commas or symbols (positive = deposit, negative = withdrawal) |
transacted_at | Yes | UTC ISO 8601 timestamp for when the transaction is posted at your institution (e.g., 2025-01-27T14:30:00Z). Please ensure this date is never future dated. We can support back-dated transactions up to 7 days historically. |
institution_transaction_id | Yes | Unique transaction ID in your systems |
description | No | Optional free-text transaction details |
You MUST follow the exact naming format above. Hyphens and underscores must match.
TroubleShooting
Common Outbound File Issues
- File Type: Files must be in CSV format. XLSX, TXT, or other formats are not supported.
- File Name: Follow the exact naming format (e.g., TRANSACTIONS_YYYY-MM-DD.csv). Hyphens and underscores must match.
- File Date: On any given day, only files named with the current day’s date will be ingested. Any future or back dated files will fail to register in our allocation process.
- Column Headers: All columns must be present, including optional ones. Optional fields can be left blank but must still appear in the header row.
- Timestamps: Must be in UTC ISO 8601 format (e.g., 2025-01-27T14:30:00Z).
- Number Formatting: Numeric fields (amount, balance, APY) must contain numbers only — no commas, dollar signs, or percent symbols.
Connection Issues
- Verify your private key file permissions are set correctly (chmod 600 on Unix/Mac).
- Confirm your IP address has been whitelisted by NBID.
- Double-check your firewall and network settings allow outbound connections on port 22.
If you require NBID to push files directly to your server please note the differences below:
Set Up
You must provide your server details and whitelist NBID’s IP address.
| Required from You | Notes |
|---|---|
| SFTP Server Host | Your server’s host address |
| SFTP Username | Username NBID will use to connect |
| Whitelist NBID IP | 216.122.175.154, 52.23.22.228, 3.235.212.163, 44.236.219.135, 35.80.123.51, 34.225.165.210, 35.153.191.16, 34.218.128.91, 44.227.236.124 |
| We will send to you | Notes |
| SSH Public Key | Please register this to your server. |
Once your server details are received, NBID will provide an SSH public key for authentication. Please confirm once you have registered the SSH public key on your institution's server, and NBID will then test connectivity by sending you a sample file. You will be able to download files after the scheduled times outlined in 6. File Format Specifications.
For questions during setup or any issues with file transfers, please reach out to your dedicated Account Manager or contact us at support@modernfi.com.
Security Best Practices:
- Use key-based authentication exclusively.
- Never share SSH keys via email or insecure channels.
- Request and whitelist NBID’s IP address for connections.
- Use SendSafely for secure key delivery.
- Monitor transfers and automate alerts for failures.
- Ensure compliance with internal and regulatory data security policies.
Inbound File Data Dictionaries:
balances File Fields
| Field Name | Required | Description |
|---|---|---|
institution_sweep_account_id | Yes | Internal institution account ID on the core for the depositor's sweep account |
balance | Yes | Current account balance, numeric values only (no commas or symbols) |
timestamp | Yes | Timestamp for transaction processing at the FI, in UTC ISO 8601 format |
description | Yes | Description of balance entry |
mtd_balance | Yes | Month-to-date average daily balance, numeric values only (no commas or symbols) |
interest_accrued_today | Yes | Interest accrued today, numeric values only (no commas or symbols) |
interest_accrued_mtd | Yes | Interest accrued month-to-date, numeric values only (no commas or symbols) |
agg_monthly_apy | Yes | Aggregate monthly APY (decimal, e.g. 0.04 is 4%) |
withdrawals File Fields
| Field Name | Required | Description |
|---|---|---|
institution_sweep_account_id | Yes | Internal institution account ID on the core for the depositor's sweep account |
institution_return_account_id | Yes | ID for the account to which the depositor wants to return funds withdrawn from the network (i.e., the ID on your core for their primary operating account) |
account_title | Yes | Full account title for the depositor’s sweep account on the core |
amount | Yes | Positive for deposits, negative for withdrawals, numeric values only (no commas or symbols) |
transacted_at | Yes | UTC ISO 8601 timestamp for when the transaction posted in the network allocation |
modernfi_transaction_id | Yes | NBID-generated unique transaction ID |
description | No | Optional free-text withdrawal details |
gl_postings File Fields
| Field Name | Required | Description |
|---|---|---|
| Account Title | Yes | Name of the General Ledger Account |
| Entry Type | Yes | Indicates Debit or Credit (Dr/Cr) |
| GL Code | Yes | Internal identifier for GL Account |
| Effective Date | Yes | Date of entry (YYYY-MM-DD) |
| Amount | Yes | Dollar amount of GL entry |
gl_balances File Fields
| Field Name | Required | Description |
|---|---|---|
| Account Title | Yes | Name of the General Ledger Account |
| GL Code | Yes | Internal identifier for GL Account |
| Effective Date | Yes | Date of entry (YYYY-MM-DD) |
| MTD Entry Type | Yes | Indicates Debit or Credit (Dr/Cr) |
| MTD Amount | Yes | Dollar amount of GL entry |
| YTD Entry Type | Yes | Indicates Debit or Credit (Dr/Cr) |
| YTD Amount | Yes | Dollar amount of GL entry |
| Ending Entry Type | Yes | Indicates Debit or Credit (Dr/Cr) |
| Ending Amount | Yes | Dollar amount of GL entry |
cost_center_gl_postings File Fields
| Field Name | Required | Description |
|---|---|---|
| Cost Center ID | Yes | Internal identifier for the Cost Center |
| Account Title | Yes | Name of the General Ledger Account |
| Entry Type | Yes | Indicates Debit or Credit (Dr/Cr) |
| GL Code | Yes | Internal identifier for GL Account |
| Effective Date | Yes | Date of entry (YYYY-MM-DD) |
| Amount | Yes | Dollar amount of GL entry |
cost_center_gl_balances File Fields
| Field Name | Required | Description |
|---|---|---|
| Cost Center ID | Yes | Internal identifier for the Cost Center |
| Account Title | Yes | Name of the General Ledger Account |
| GL Code | Yes | Internal identifier for GL Account |
| Effective Date | Yes | Date of entry (YYYY-MM-DD) |
| MTD Entry Type | Yes | Indicates Debit or Credit (Dr/Cr) |
| MTD Amount | Yes | Dollar amount of GL entry |
| YTD Entry Type | Yes | Indicates Debit or Credit (Dr/Cr) |
| YTD Amount | Yes | Dollar amount of GL entry |
| Ending Entry Type | Yes | Indicates Debit or Credit (Dr/Cr) |
| Ending Amount | Yes | Dollar amount of GL entry |
settlement_postings File Fields
| Field Name | Required | Description |
|---|---|---|
| Account Title | Yes | Name of the General Ledger Account |
| Entry Type | Yes | Indicates Debit or Credit (Dr/Cr) |
| GL Code | Yes | Internal identifier for GL Account |
| Effective Date | Yes | Date of entry (YYYY-MM-DD) |
| Amount | Yes | Dollar amount of GL entry |
cost_center_settlement_postings File Fields
| Field Name | Required | Description |
|---|---|---|
| Cost Center ID | Yes | Internal identifier for the Cost Center |
| Account Title | Yes | Name of the General Ledger Account |
| Entry Type | Yes | Indicates Debit or Credit (Dr/Cr) |
| GL Code | Yes | Internal identifier for GL Account |
| Effective Date | Yes | Date of entry (YYYY-MM-DD) |
| Amount | Yes | Dollar amount of GL entry |
account_statement_bundle File Fields
The account_statement_bundle is a ZIP file. It includes one PDF per account and a CSV mapping file. It is delivered monthly. See the CSV file mapping file fields below.
| Field Name | Required | Description |
|---|---|---|
| Account ID | Yes | NBID Account Identifier |
institution_sweep_account_id | Yes | Internal institution account ID on the core for the depositor's sweep account |
institution_return_account_id | Yes | ID for the account to which the depositor wants to return funds withdrawn from the network (i.e., the ID on your core for their primary operating account) |
statement_name | Yes | Depositor statement title |
delivery_type | Yes | D (E-delivery) or P (paper statement delivery) |
document_type | Yes | Sweep Account Statement |
statement_date | Yes | Last day of the month of the statement period |