For developers & agents

Point your AI at the books.

Luca exposes a clean, token-scoped REST API, the same surface Enston's own automations run on. Give your agent a token and it reads accounts, pulls tax codes, and builds balanced imports.

The agent-ready ledger

We didn't bolt on an API. We built Luca to be run by AI.

The LUCA External API v1 is a clean, token-scoped REST surface: one call, four languages, live example responses in the sandbox. Point your agent at it and it reads and writes the books.

# Find customers by name
curl "https://api.luca.pro/api/v1/customers?search=Acme" \
  -H "Authorization: Bearer $LUCA_TOKEN"
200 OK · application/json
[
  {
    "id": 1042,
    "name": "Acme Pte. Ltd.",
    "email": "ap@acme.com"
  },
  {
    "id": 1043,
    "name": "Acme Labs LLP",
    "email": "billing@acmelabs.co"
  }
]

Authentication

Authorization: Bearer <token>
  • Create a token in Settings → API Tokens inside Luca.
  • Each token is bound to one company and inherits that user's permissions.
Authentication docs

Base URLs

Production
https://api.luca.pro
SandboxTry-It
Try it
https://developer.luca.pro/api/v1

Returns documented example responses: no real data, no side effects; accepts any bearer token.

Coverage
  • Customers
  • Invoices
  • Bills
  • Journal entries
  • Reports
Full API reference
Live endpoints
  • GET/api/v1/customers?search=
  • GET/api/v1/accounts
  • GET/api/v1/tax-codes

Journal-entry import

Live

The proof that Luca is built to be run by AI: your assistant pulls the valid account and tax codes from the API first, then generates a balanced spreadsheet Luca ingests cleanly.

AI IMPORT PROMPTcopy · paste
Fetch valid accounts and tax codes
from the Luca API with my token, then
build a balanced journal-entry .xlsx
for these transactions: 9 columns,
one entry per date, debits = credits.
  1. 1Your assistant calls GET /api/v1/accounts and GET /api/v1/tax-codes with your token to pull the valid codes.
  2. 2It builds a Luca-ready .xlsx: the 9 columns below, with every dated entry balanced.
  3. 3Upload via Bulk Import → Journal Entry. Luca validates on upload and writes cell comments explaining any errors.
Read the import guide
Import format · 9 columns.xlsx
Journal DateAccount CodeAccount NameDebitCreditTaxCurrencyNarrationDescription
2026-07-016100Office Rent2,000.00-SRSGDJuly rentHQ lease
2026-07-011100Bank-2,000.00-SGDJuly rentHQ lease

Illustrative: one balanced entry (S$2,000.00 rent), two rows sharing a date.

  • Rows sharing a date = one entry; debits must equal credits
  • Up to 500 rows per file
  • Control accounts (A/R, A/P, retained earnings) rejected
  • Journal reference auto-generates
MCP

MCP server

In development

Connect Luca to Claude and other AI assistants over the Model Context Protocol, no glue code. Coming soon; not yet shipped.

See what's coming

Luca is being built so your agent can run the books.