Olympus PayDevelopers

Arubis overview

Arubis is the Olympus Pay accounting product. Its API lets your own systems read a set of books (invoices, bills, contacts, the chart of accounts and the main reports) and add contacts and draft invoices. Webhooks tell you when invoices, bills, quotes, contacts and leads change.

The Arubis API is separate from the Merchant API. It has its own base URL, its own keys and its own webhooks.

Base URLhttps://arubis.olympuspay.co/api/v1
FormatJSON over HTTPS
AuthenticationAuthorization: Bearer ark_live_...
PlanAPI keys and webhooks are part of the Arubis Premium plan

What the API can and cannot do#

A key belongs to one set of books. Every request reads or writes that organisation only.

  • Read: invoices and credit notes, bills, supplier credits and expense claims, contacts, accounts, profit and loss, balance sheet, trial balance.
  • Write: create contacts and create invoices as drafts.

Issuing an invoice, recording a payment, approving a bill and posting a journal are done by people in Arubis. The API never posts to the ledger.

Create a key#

  1. In Arubis, open Settings, API and webhooks. You need the permission to manage settings (owners and admins have it).
  2. Choose New API key, give it a name, and choose Read only or Read and write.
  3. Copy the key. It starts with ark_live_ and is shown once. Arubis keeps only a fingerprint of it, so a lost key cannot be recovered; revoke it and create another.

The key list shows each key's first characters, its scopes and when it was last used. Revoking a key stops it at once.

Keep keys on your server. Never put one in a browser, a mobile app or a public repository.

Authenticate#

Send the key in the Authorization header on every request.

curl https://arubis.olympuspay.co/api/v1/accounts \
  -H "Authorization: Bearer $ARUBIS_API_KEY"

Rate limits#

Each key can make 600 requests an hour. Over the limit the API answers 429. Wait and retry with backoff. To keep within the limit, read lists with a date range and the largest page size you need rather than fetching documents one by one.

Errors#

Errors return a JSON body with one error field, written to be shown to a person.

{ "error": "That API key is not valid or has been revoked." }
StatusMeaning
400The request was not valid. The message says which field.
401No key, a malformed key, or a revoked key.
402The organisation is not on a plan that includes the API.
403The key is read only and the request writes.
404No such endpoint, or no such record in these books.
429The hourly limit for this key was reached.

Pagination#

List endpoints take limit (1 to 200, default 50) and offset (default 0), and return the total number of matching records.

{
  "data": [],
  "total": 132,
  "limit": 50,
  "offset": 100
}

Amounts and dates#

  • Amounts are decimal numbers in the document's currency, for example 1140.00. This differs from the Merchant API, which uses minor units.
  • Dates are YYYY-MM-DD. Timestamps are ISO 8601 in UTC.
  • Identifiers are UUIDs.

Next: the Arubis API reference and Arubis webhooks.