NuminaDevelopers
Dashboard
Quickstart

Quickstart

Create an API key, read a company's chart of accounts and post your first draft journal entry in about five minutes.

This guide uses an API key, the fastest way to work with your own company’s books. If you are building an app that other Numina companies will connect to, use OAuth instead; the requests are the same.

  1. Create an API key

    In Numina, open Settings → API & apps and create an API key. Name it and give it read and draft permissions: it reads the books and creates drafts, and books nothing. The key is shown once, so store it in your secret manager or an environment variable:

    Terminal
    export NUMINA_API_KEY="numi_..."
  2. Make your first request

    List the company’s chart of accounts. Journal entry lines refer to these accounts by number.

    cURL
    curl https://api.numina.app/v1/accounts \
      -H "Authorization: Bearer $NUMINA_API_KEY"
    JavaScript
    const response = await fetch("https://api.numina.app/v1/accounts", {
      headers: { Authorization: `Bearer ${process.env.NUMINA_API_KEY}` },
    });
    const { accounts } = await response.json();
    Python
    import os
    
    import requests
    
    response = requests.get(
        "https://api.numina.app/v1/accounts",
        headers={"Authorization": f"Bearer {os.environ['NUMINA_API_KEY']}"},
    )
    accounts = response.json()["accounts"]
    Response
    {
      "accounts": [
        {
          "id": "0b7c1f2e-8f4a-4c2b-9d3e-6a5f4e3d2c1b",
          "account_number": 2450,
          "name": "Kontorartikler",
          "description": "",
          "account_type": "profit_loss",
          "default_vat_code": "I25"
        },
        {
          "id": "3f9e8d7c-6b5a-4f3e-8d2c-1b0a9f8e7d6c",
          "account_number": 6480,
          "name": "Bankkonto",
          "description": "",
          "account_type": "status",
          "default_vat_code": null
        }
      ]
    }
  3. Post a draft journal entry

    Book 500 DKK of office supplies paid from the bank. The lines are signed: the expense is a debit (positive), the bank a credit (negative), and together they sum to zero.

    cURL
    curl -X POST https://api.numina.app/v1/journal-entries \
      -H "Authorization: Bearer $NUMINA_API_KEY" \
      -H "Content-Type: application/json" \
      -H "Idempotency-Key: $(uuidgen)" \
      -d '{ "date": "2026-10-29", "text": "Office supplies", "lines": [
        { "account_number": 2450, "amount": 500, "vat_code": "I25" },
        { "account_number": 6480, "amount": -500 }
      ] }'

    The entry arrives as a draft in Numina’s journal. The I25 code splits the 500 DKK into 400 DKK of expense and 100 DKK of deductible VAT when someone books it.

Next steps