Endpoint
Local development endpoint:
https://netra.ee/api/mcp
Netra MCP server reference and practical usage patterns.
This page shows how to connect an AI (like ChatGPT) to Netra so it can help you with everyday accounting tasks — safely and step by step. It can create invoices, record payments, import bills, reconcile bank transactions, and generate reports. Think of it as giving your AI a “remote control” to Netra, while keeping everything saved in the same accounting system your bookkeeper understands.
You can type or speak in a chat interface, describe what you need, and Netra will turn that into proper accounting transactions behind the scenes.
If you’re searching for “MCP accounting” or “AI accounting API”, this is Netra’s MCP integration page.
Local development endpoint:
https://netra.ee/api/mcp
Use API token as Bearer token (or x-api-key for direct calls).
[mcp_servers.netra]
url = "https://netra.ee/api/mcp"
bearer_token_env_var = "NETRA_MCP_TOKEN"
netra_whoami to confirm active org + role.netra_list_organizations
+ netra_switch_organization
when needed.
{"error":{"code":-32602,"message":"Missing required arguments"}}
Common codes: -32602
invalid/missing params, -32601
unknown method, -32603
server error.
Reads are safe to retry. For writes, retry only when you are sure the request did not reach Netra (e.g., network drop). If you receive a validation error, fix the input and send a new request rather than retrying the same one.
List tools support limit
(default 20, max 100). Use search
and filters
to narrow. Page/offset is not currently exposed.
Use netra_prepare_bill_upload
to get a presigned URL, upload the file, then call netra_create_bill_import_from_upload.
Use netra_import_bill_from_base64
for small files and quick tests.
Use netra_import_bill_files_from_base64
when the user sends multiple small files at once.
Verify tools:
curl -X POST https://netra.ee/api/mcp \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $NETRA_MCP_TOKEN" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}'
Start with netra_review_books
when you want ChatGPT to inspect the company books. The tool is read-only and returns
bank accounts, unreconciled bank transactions, match suggestions, and pending bill
imports. ChatGPT should ask for approval before it creates rules, imports documents,
or confirms reconciliation.
{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{
"name":"netra_review_books",
"arguments":{"limit":10,"include_suggestions":true}
}}
netra_suggest_matches for deeper matching on one bank account.netra_prepare_reconciliation before confirming a specific match.
netra_request_document_for_transaction
when a bank payment is missing a source document.
netra_verify_document_for_transaction
after bill import processing finishes.
netra_preview_bill_import_resolution
to show the proposed supplier, expense account, tax, rows, and VAT notes before
posting the bill.
netra_confirm_reconciliation only after approval.netra_create_bill_from_verified_document
only after the user approves creating a bill from a recognized document. Pass default_account_id, default_tax_id, or
row_overrides
when the user changes the proposed accounting treatment.
If setup is missing, it returns blockers with suggested contact or chart-of-account
tool arguments.
netra_whoaminetra_switch_organizationnetra_review_booksnetra_request_document_for_transaction
→ bill import → netra_verify_document_for_transaction
→ netra_preview_bill_import_resolution
→ approve account/tax →
netra_create_bill_from_verified_document
netra_reconcile_autonetra_set_opening_balancenetra_create_contact_from_registrynetra_receive_invoice_paymentExample uses minimum wage as the gross salary. Verify the current rate and tax rules before posting. This is a full template with the core payroll accounts.
Netra will store the result as standard payroll journals so accountants can audit, reconcile, and report them normally.
Step 1: Ensure payroll accounts (create if missing)
{"jsonrpc":"2.0","id":20,"method":"tools/call","params":{"name":"netra_create_account","arguments":{
"code":"611","name":"Salary Expense","group":"expense","group_type":"salary","report":"Profit & Loss"
}}}
{"jsonrpc":"2.0","id":21,"method":"tools/call","params":{"name":"netra_create_account","arguments":{
"code":"612","name":"Employer Social Tax Expense","group":"expense","group_type":"payroll_tax","report":"Profit & Loss"
}}}
{"jsonrpc":"2.0","id":22,"method":"tools/call","params":{"name":"netra_create_account","arguments":{
"code":"613","name":"Employer Unemployment Insurance Expense","group":"expense","group_type":"payroll_tax","report":"Profit & Loss"
}}}
{"jsonrpc":"2.0","id":23,"method":"tools/call","params":{"name":"netra_create_account","arguments":{
"code":"614","name":"Employer Funded Pension Expense","group":"expense","group_type":"payroll_tax","report":"Profit & Loss"
}}}
{"jsonrpc":"2.0","id":24,"method":"tools/call","params":{"name":"netra_create_account","arguments":{
"code":"240","name":"Wages Payable","group":"liabilities","group_type":"payroll","report":"Balance Sheet"
}}}
{"jsonrpc":"2.0","id":25,"method":"tools/call","params":{"name":"netra_create_account","arguments":{
"code":"241","name":"Payroll Taxes Payable (TSD)","group":"liabilities","group_type":"payroll","report":"Balance Sheet"
}}}
{"jsonrpc":"2.0","id":26,"method":"tools/call","params":{"name":"netra_create_account","arguments":{
"code":"242","name":"Employee Pension Withholding Payable","group":"liabilities","group_type":"payroll","report":"Balance Sheet"
}}}
{"jsonrpc":"2.0","id":27,"method":"tools/call","params":{"name":"netra_create_account","arguments":{
"code":"243","name":"Employee Unemployment Withholding Payable","group":"liabilities","group_type":"payroll","report":"Balance Sheet"
}}}
Step 2: Create employee contact
{"jsonrpc":"2.0","id":30,"method":"tools/call","params":{"name":"netra_create_contact","arguments":{
"name":"Employee Name","email":"employee@example.com","kind":"person"
}}}
Step 3: Post payroll journal (fill amounts)
{"jsonrpc":"2.0","id":31,"method":"tools/call","params":{"name":"netra_create_manual_journal","arguments":{
"date":"2026-02-01",
"description":"Payroll - minimum wage",
"lines":[
{"account_id":"611_ACCOUNT_ID","debit":"GROSS","description":"Gross salary"},
{"account_id":"612_ACCOUNT_ID","debit":"EMP_SOC_TAX","description":"Employer social tax"},
{"account_id":"613_ACCOUNT_ID","debit":"EMP_UNEMP_TAX","description":"Employer unemployment insurance"},
{"account_id":"614_ACCOUNT_ID","debit":"EMP_PENSION","description":"Employer funded pension"},
{"account_id":"240_ACCOUNT_ID","credit":"NET_PAYABLE","description":"Net payable to employee"},
{"account_id":"241_ACCOUNT_ID","credit":"PAYROLL_TAX","description":"Payroll taxes payable (TSD)"},
{"account_id":"242_ACCOUNT_ID","credit":"EMP_PENSION_WHT","description":"Employee pension withholding"},
{"account_id":"243_ACCOUNT_ID","credit":"EMP_UNEMP_WHT","description":"Employee unemployment withholding"}
]
}}}
Replace placeholders (GROSS, NET_PAYABLE, EMP_*). Debits must equal credits.
Netra will create a normal invoice entry so it appears in sales, reports, and accounts receivable as usual.
Step 1: Get source invoice
{"jsonrpc":"2.0","id":10,"method":"tools/call","params":{"name":"netra_get_invoice","arguments":{"id":"INV_PUBLIC_ID"}}}
Step 2: Create new invoice with shifted dates
{"jsonrpc":"2.0","id":11,"method":"tools/call","params":{"name":"netra_create_invoice","arguments":{
"contact_id":"CONTACT_ID",
"date":"2026-03-05",
"due_date":"2026-03-05",
"rows":[{"account_id":"ACCOUNT_ID","description":"Invoice line","qty":"1","unit_price":"100"}]
}}}
Netra will record a proper payment journal and keep accounting consistent.
{"jsonrpc":"2.0","id":12,"method":"tools/call","params":{"name":"netra_receive_invoice_payment","arguments":{
"invoice_id":"INV_PUBLIC_ID",
"bank_account_id":"BANK_ACCOUNT_ID",
"amount":"210.00",
"date":"2026-02-05"
}}}
Overpayments are automatically posted to Customer Prepayments (account 215).
Netra can create contacts directly from the Estonian Business Register. This keeps legal names, registry codes, and addresses consistent.
You can also use the regular contact tools to edit or add missing fields afterwards.
netra_report_trial_balancenetra_report_balance_sheetnetra_report_profit_and_lossnetra_report_tax (summary/legacy)netra_report_tax_kmd_csvnetra_report_annual_zipMCP tool names are stable. Breaking changes are announced in the changelog before deployment.
Full tool list exposed by tools/list in the Netra MCP server.
netra_whoaminetra_list_organizationsnetra_switch_organizationnetra_review_booksnetra_request_document_for_transactionnetra_list_pending_document_importsnetra_verify_document_for_transactionnetra_preview_bill_import_resolutionnetra_list_quotesnetra_list_ordersnetra_list_projectsnetra_list_invoicesnetra_get_invoicenetra_create_invoicenetra_update_invoicenetra_update_invoice_statusnetra_receive_invoice_paymentnetra_list_contactsnetra_get_contactnetra_create_contactnetra_update_contactnetra_registry_autocompletenetra_create_contact_from_registrynetra_prepare_bill_uploadnetra_create_bill_import_from_uploadnetra_import_bill_from_base64netra_import_bill_files_from_base64netra_get_bill_import_statusnetra_preview_bill_import_resolutionnetra_create_bill_from_verified_documentnetra_list_billsnetra_list_bank_transactionsnetra_suggest_matchesnetra_reconcile_autonetra_prepare_reconciliationnetra_confirm_reconciliationnetra_undo_reconciliationnetra_allocate_paymentnetra_receive_invoice_paymentnetra_list_bank_rulesnetra_get_bank_rulenetra_create_bank_rulenetra_update_bank_rulenetra_delete_bank_rulenetra_create_bank_rule_from_transactionnetra_apply_bank_rulenetra_preview_bank_rulenetra_list_journalsnetra_get_journalnetra_update_journal_statusnetra_create_manual_journalnetra_set_opening_balancenetra_get_opening_balancenetra_delete_opening_balancenetra_list_accountsnetra_list_unitsnetra_list_unit_invoicesnetra_get_accountnetra_get_unitnetra_get_unit_last_meter_readingnetra_upsert_meter_readingnetra_create_accountnetra_update_accountnetra_list_taxesnetra_get_taxnetra_create_taxnetra_update_taxnetra_delete_taxnetra_report_trial_balancenetra_report_balance_sheetnetra_report_profit_and_lossnetra_report_taxnetra_report_tax_kmd_csvnetra_report_annual_zipWe can't find the internet
Attempting to reconnect
Something went wrong!
Attempting to reconnect