Feed the general ledger: ERP export, columns, and API call
Any ERP that can export rows as a table can feed Ninon. Each imported row becomes a GL line tied to a group entity and a period—the material for intercompany matching. To trigger matching via API afterwards, see the “REST integration” guide in the same guides section.
Minimum business path
(1) Declare the legal entities in scope inside Ninon. (2) Create or open a reconciliation session for the period you are closing (often YYYY-MM, aligned with your close calendar). (3) Load relevant lines with the CSV or Excel import described in this guide (recommended for Sage 1000 and other ERPs without a live connector). (4) Run matching from the dashboard or via the REST integration guide once lines are present.
What each field means for group finance
entityId: Ninon’s technical entity id (see next section)—not necessarily your raw ERP company code from the export. period: the line’s reporting period; in practice aligned with the session (e.g. 2025-03). date: posting date; prefer an ISO-8601 datetime to avoid parsing ambiguity. amount: signed numeric amount (decimal point). currency: line currency (e.g. EUR). accountCode: account or segment as you filter intercompany in extracts. description: wording useful for matching. reference: document or ERP reference (optional). source: provenance label for traceability; if omitted, the server defaults source to csv.
CSV header row
The first row must name columns exactly (case-sensitive): entityId, date, amount, currency, description, accountCode, period — all required on each data row. Optional columns: reference; source. Separator: comma or semicolon; detection uses the header row (if the header contains “;” and no “,”, semicolon is used). Encoding: UTF-8 recommended; a BOM at the start is tolerated on the first key.
Resolve entityId (API)
Rows whose entityId does not belong to your organisation are skipped on insert. List entities via the documented entities API under an authorised user session (admin, member, or viewer for read). Each item includes id (copy into the CSV), name, country, currency. Create entities with the documented admin API (JSON body name, country, currency); erpSystem and erpSecrets are optional for your own bookkeeping.
CSV import endpoint
Two entry points share the same validation rules. (1) Method POST, path /api/integrations/csv: JSON body with a csvText field containing the full CSV as one string (header included). (2) Method POST, path /api/integrations/ledger-import: multipart/form-data with a single field file — UTF-8 .csv or .xlsx (first worksheet only; row 1 must be the same headers as below). Max upload size 10 MB. Authentication: signed-in session. Roles: admin or member (not viewer). When billing enforcement is enabled on this Ninon deployment, an active subscription is required (HTTP 402).
JSON response
inserted: GL rows created. scanned: number of data rows in the file (header excluded from this count). parsedValid: rows that passed field validation. skippedWrongOrg / skippedBadDate: counts of rejected rows after validation. errors: array of objects (line, message, code) for parse-time and insert-time issues; errorsTruncated is true if more than 80 errors were omitted. Malformed CSV/Excel rows appear in errors with a line number when known.