Olympus PayDevelopers

Arubis API reference

Base URL https://arubis.olympuspay.co/api/v1. Every request needs Authorization: Bearer <key>. See the Arubis overview for keys, limits and errors.

MethodPathScope
GET/invoicesread
GET/invoices/{id}read
POST/invoiceswrite
GET/billsread
GET/bills/{id}read
GET/contactsread
POST/contactswrite
GET/accountsread
GET/reports/profit-and-lossread
GET/reports/balance-sheetread
GET/reports/trial-balanceread

The document object#

Invoices, credit notes, bills, supplier credits and expense claims share one shape.

FieldTypeNotes
iduuid
kindstringinvoice, credit_note, bill, supplier_credit or expense_claim
numberstringSet when the document is issued. null on drafts.
statusstringdraft, awaiting_approval, approved, sent, posted, partially_paid, paid, void or closed
contact_iduuidThe customer or supplier
date, due_datedate
referencestringYour reference, for example an order number
currencystringISO 4217 code
fx_ratenumberRate to the organisation's base currency
subtotal, tax_total, totalnumber
amount_paid, amount_creditednumber
created_attimestamp

A single document also returns its lines: id, position, item_id, description, quantity, unit_price, discount_pct, account_id, tax_code_id, net, tax, gross.

List invoices#

GET /invoices returns invoices and credit notes, newest first.

ParameterDescription
statusOne status from the list above
contact_idOnly this customer
from, toDocument date range, YYYY-MM-DD
limit, offsetSee pagination
curl "https://arubis.olympuspay.co/api/v1/invoices?status=posted&from=2026-10-01&to=2026-10-31" \
  -H "Authorization: Bearer $ARUBIS_API_KEY"

Get an invoice#

GET /invoices/{id} returns one invoice or credit note with its lines.

curl https://arubis.olympuspay.co/api/v1/invoices/7a0c5c1e-2f61-4c0e-a1f0-0d5c9d1b2e33 \
  -H "Authorization: Bearer $ARUBIS_API_KEY"

Create a draft invoice#

POST /invoices creates a draft. A person reviews and issues it in Arubis. Needs a read and write key.

FieldRequiredDescription
contact_idyesA customer in these books
linesyes1 to 200 lines
date, due_datenoYYYY-MM-DD. Defaults: today, and the customer's payment terms.
referencenoYour reference
currencynoDefaults to the customer's currency, then the base currency
notesnoPrinted on the invoice

Each line takes description, quantity (default 1), unit_price, and optionally item_id, discount_pct, account_id and tax_code_id. When account_id or tax_code_id is left out, Arubis uses the item's, then the customer's default.

curl https://arubis.olympuspay.co/api/v1/invoices \
  -X POST \
  -H "Authorization: Bearer $ARUBIS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "contact_id": "3d6f8f8a-0b8e-4f5e-9c2b-6c7a0e0d41aa",
    "reference": "Order 1001",
    "lines": [ { "description": "Game drive", "quantity": 2, "unit_price": 450.00 } ]
  }'

The response is 201 with the new document. A field the books reject (for example an account from another organisation) returns 400 with the reason.

List bills#

GET /bills returns bills, supplier credits and expense claims. It takes the same parameters as list invoices. GET /bills/{id} returns one with its lines.

Contacts#

GET /contacts lists customers and suppliers by name. Filter with type=customer or type=supplier.

Each contact has id, name, is_customer, is_supplier, email, phone, tax_number, currency, payment_terms_days, active and created_at.

POST /contacts creates one. Needs a read and write key.

FieldRequiredDescription
nameyesUp to 160 characters
email, phone, tax_numberno
is_customernoDefault true
is_suppliernoDefault false
curl https://arubis.olympuspay.co/api/v1/contacts \
  -X POST \
  -H "Authorization: Bearer $ARUBIS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "name": "Kalahari Lodges", "email": "accounts@example.com" }'

Accounts#

GET /accounts returns the chart of accounts ordered by code: id, code, name, type, subtype, active. Use these ids for account_id on invoice lines.

Reports#

PathParametersDefault
/reports/profit-and-lossfrom, to1 January this year to today
/reports/balance-sheetas_oftoday
/reports/trial-balanceas_oftoday
curl "https://arubis.olympuspay.co/api/v1/reports/trial-balance?as_of=2026-09-30" \
  -H "Authorization: Bearer $ARUBIS_API_KEY"

Reports return the same figures as the report pages in Arubis, in data, with the period echoed back (from and to, or as_of).