Journal Entry bulk import — sheet format & AI prompt

Generate LUCA-ready journal-entry spreadsheets from your own tooling or an AI assistant, using the LUCA API to resolve valid accounts and tax codes.

Sheet format

One worksheet. Row 1 is the header row, exactly these nine columns, in this order:

ColHeaderRules
AJournal DateRequired. Any unambiguous date format works, e.g. 2026-05-01 or 01-May-26 — avoid all-numeric text like 01-05-26. All rows with the same date form ONE journal entry. Must fall in an open reporting period.
BAccount CodeOptional — fill B and/or C. Must be a code returned by GET /api/v1/accounts. Control accounts (Accounts Receivable/Payable, Current Year Earnings) are rejected by the import.
CAccount NameOptional — fill B and/or C. Must be a name returned by GET /api/v1/accounts. If several accounts share a name, use the code. If both B and C are filled they must refer to the same account. Control accounts (Accounts Receivable/Payable, Current Year Earnings) are rejected by the import.
DDebitPositive number. Fill exactly one of Debit/Credit per row. Plain values, no formulas.
ECreditPositive number. Fill exactly one of Debit/Credit per row.
FTaxOptional. When used, must be EXACTLY a label from GET /api/v1/tax-codes, e.g. Sale (SR) - 9%.
GCurrencyYour company's default currency code on every row (e.g. SGD).
HNarrationFree text per line — becomes that line item's description on the journal entry.
IDescriptionFree text — becomes the journal entry's transaction-level description (give every row of an entry the same Description).

Balancing rules

Look up valid values over the API

Both endpoints are token-authenticated and scoped to the token's company (create a token in LUCA under Settings → API Tokens).

curl "https://api.luca.pro/api/v1/accounts" -H "Authorization: Bearer YOUR_TOKEN"
curl "https://api.luca.pro/api/v1/tax-codes" -H "Authorization: Bearer YOUR_TOKEN"

Requires the view accounts / view gst permissions respectively.

Ready-to-paste AI prompt

Give this to your AI assistant (with API access) together with your source documents — GL extracts, P&L, balance sheet, bank statements. Replace the {...} placeholders.

You are generating a journal-entry bulk-import spreadsheet for LUCA.

Inputs I will give you: general ledger extracts, P&L, balance sheet, and/or bank statements.

Produce an .xlsx file with a single worksheet where row 1 is exactly these headers, in this order:
Journal Date | Account Code | Account Name | Debit | Credit | Tax | Currency | Narration | Description

Rules:
1. One row = one ledger line. Fill exactly one of Debit or Credit per row (positive numbers, no formulas).
2. All rows with the same Journal Date form ONE journal entry, and each date's lines must
   balance: total debit = total credit (GST-inclusive when a Tax code is used). If you need
   two separate entries, give them different dates.
3. Write dates as YYYY-MM-DD or DD-Mmm-YY (e.g. 2026-05-01 or 01-May-26). Never use
   ambiguous all-numeric formats like 01-05-26.
4. Account Code / Account Name: fill either or both — they must refer to the same account.
   Only use accounts returned by the API below. If two accounts share a name, use the code.
5. Never book to control accounts: skip Accounts Receivable / Accounts Payable and Current Year Earnings even though the accounts API returns them — the import rejects those lines.
6. Tax is optional. When used, its value must be EXACTLY a `label` returned by GET /api/v1/tax-codes.
7. Currency must be {CURRENCY_CODE} on every row.
8. Narration is the per-line memo (it appears on that ledger line). Description is the
   entry-level summary — give every row of the same Journal Date the same Description.
9. Maximum 500 rows per file.

Fetch valid values from the LUCA API using my token (Authorization: Bearer {API_TOKEN}):
- Accounts:  GET https://api.luca.pro/api/v1/accounts   (use the `code` and `name` fields)
- Tax codes: GET https://api.luca.pro/api/v1/tax-codes  (use the `label` field)

Never invent account codes, names, or tax labels — only use values returned by these endpoints.

Upload the finished file in LUCA under Bulk Import → Journal Entry. Validation runs on upload; any problem rows come back with cell comments explaining the fix.