Bank Statement CSV → NetSuite Import Normalizer
Pricing
from $2.00 / 1,000 transaction row normalizeds
Bank Statement CSV → NetSuite Import Normalizer
Turn any bank's CSV export into a clean NetSuite-ready import file: auto-detects columns, dates, debit/credit, flags duplicates, and outputs bank-statement or journal-entry layouts with totals.
Pricing
from $2.00 / 1,000 transaction row normalizeds
Rating
0.0
(0)
Developer
Omar Arida
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
9 days ago
Last modified
Categories
Security
Limited permissionsShare
Every bank exports a different CSV: different column names, semicolons instead of commas, 1.234,56 instead of 1,234.56, debit/credit in two columns or one signed column, dates in three orders. This Actor takes any bank statement CSV and returns a clean, consistent file ready for NetSuite import – plus totals and data-quality flags so month-end reconciliation starts from trustworthy numbers.
Built by a NetSuite-certified consultant who has reconciled too many statements by hand.
What it does
- Detects the structure – delimiter, header row (skips bank metadata lines), and which columns hold date, description, payee, reference, debit, credit, amount, balance. Works with English, German, Spanish, French and Arabic headers.
- Normalizes values – parses
(1,234.56),1.234,56,1 234,56 DR, currency symbols; converts dates from any common order to the format your NetSuite user expects. - Flags issues – unparseable dates, missing amounts, empty descriptions, possible duplicate rows.
- Outputs NetSuite layouts:
- Bank statement import –
Date, Amount, Transaction Type, Transaction ID, Payee, Memo, Account Number, Currency - Journal entry import – balanced two-line journals (bank account vs. suspense/offset account) with an External ID per transaction for easy reversal
- Generic cleaned CSV – all columns plus an Issues column
- Bank statement import –
- Summarizes – money in, money out, net, date range, rows with issues.
Who uses it
- NetSuite admins and accountants doing bank reconciliation or importing historical statements
- Implementation consultants migrating opening transactions
- Bookkeepers serving multiple clients with different banks
- AI agents (via Apify MCP) that need structured bank data from a CSV
Input
{"csvText": "Date;Description;Amount;Balance\n01.10.2026;Gehalt ACME GmbH;5.000,00;12.000,00\n03.10.2026;Kartenzahlung AMAZON;-129,99;11.870,01","outputLayout": "bank_statement","dateOutputFormat": "MM/DD/YYYY","currency": "EUR","accountNumber": "DE89370400440532013000"}
| Field | Description | Default |
|---|---|---|
csvText | Pasted CSV text | – |
csvUrl | URL of the CSV (used if csvText empty) | – |
outputLayout | bank_statement, journal, generic | bank_statement |
dateOutputFormat | MM/DD/YYYY, DD/MM/YYYY, YYYY-MM-DD | MM/DD/YYYY |
dateInputFormat | auto, DMY, MDY, YMD | auto |
delimiter | auto, ,, ;, tab, | | auto |
currency, accountNumber | Stamped on every row | – |
bankAccountGl, suspenseAccount | Accounts for journal layout | Bank, Suspense |
columnMap | Override detection, e.g. {"date":"Booking Date"} | – |
Output
Dataset row:
{"rowNumber": 2,"date": "2026-10-03","dateFormatted": "10/03/2026","description": "Kartenzahlung AMAZON","payee": null,"reference": null,"amount": -129.99,"debit": 129.99,"credit": null,"balance": 11870.01,"currency": "EUR","accountNumber": "DE89370400440532013000","transactionType": "WITHDRAWAL","hash": "3f9a1c2e","issues": []}
Files in the run's key-value store: netsuite_import.csv (the import file) and SUMMARY (totals and detected columns).
Importing into NetSuite
- Bank statement layout → Transactions > Bank > Banking Import History > Import Online Banking Data (CSV format), or map in Setup > Import/Export > Import CSV Records.
- Journal layout → Import CSV Records > Transactions > Journal Entry. Each transaction has an External ID (
BANK-<date>-<hash>), so re-imports update rather than duplicate.
Pricing
Pay per event: a small amount per transaction row processed. Set a max cost per run in the Apify Console.
Use from code or AI agents
curl "https://api.apify.com/v2/acts/omararida~bank-statement-to-netsuite/run-sync-get-dataset-items?token=<APIFY_TOKEN>" \-X POST -H 'Content-Type: application/json' \-d '{"csvText":"Date,Description,Amount\n2026-10-01,Opening,100.00","outputLayout":"generic"}'
Works through the Apify MCP server.
Privacy
Statements are processed in your own Apify run and stored only in your run's storage, which you control and can delete.
Support
Bank format not detected? Open an issue on the Issues tab with the header row (no amounts needed) and it will be added.