API reference

Beta

Read programmatic access to your Quoining books. This API is in beta — the surface area will expand before GA, and we will email API-key holders at least 30 days before any breaking change.

Beta caveats

  • Endpoints are read-mostly at launch; write endpoints ship gradually.
  • Rate limit: 120 requests per minute per API key. Exceeding returns429with a Retry-After header.
  • Pagination is 1-indexed; max perPage is 100.
  • All responses are JSON with application/json.
  • Monetary values are returned as strings with 2-4 decimal precision to avoid float drift.

Authentication

Create an API key in Settings › API keys. Keys are company-scoped. Pass the key in theAuthorization header asBearer <key>. Revoke compromised keys immediately from the same page — revocation is effective on the next request.

curl -H "Authorization: Bearer $QUOINING_API_KEY" \
     -H "Accept: application/json" \
     https://quoining.com/api/v1/entities?page=1&perPage=25

Scopes

Each API key carries a list of scopes. A key with scope*has full access. Finer-grained scopes follow the patternresource:action, e.g.invoices:read.

Endpoints

GET/api/v1/entitiesscope: entities:read

List entities visible to the API key.

Query params: pageperPage

curl -H 'Authorization: Bearer $QUOINING_API_KEY' https://quoining.com/api/v1/entities
GET/api/v1/accountsscope: accounts:read

List GL accounts for the caller's company.

Query params: entityIdisActivepageperPage

GET/api/v1/billsscope: bills:read

List bills (AP invoices received).

Query params: entityIdstatusvendorIdpageperPage

GET/api/v1/invoicesscope: invoices:read

List invoices issued to customers.

Query params: entityIdstatuscustomerIdpageperPage

GET/api/v1/journal-entriesscope: journal:read

List posted journal entries.

Query params: entityIdfromtopageperPage

GET/api/v1/journal-entries/{id}scope: journal:read

Fetch a single journal entry with its lines.

GET/api/v1/trial-balancescope: reports:read

Snapshot trial balance as of a given date.

Query params: entityIdasOf

GET/api/v1/sales-receiptsscope: sales:read

List point-of-sale sales receipts.

Query params: entityIdpageperPage

POST/api/v1/sales-receiptsscope: sales:write

Create a sales receipt.

Errors

Errors are returned as JSON with an errorfield and a semantic HTTP status. Common statuses:

  • 401 — missing, invalid, or expired API key.
  • 403 — API key is missing the required scope.
  • 404 — resource not found or not visible to this key’s company.
  • 422 — validation error on a write request.
  • 429 — rate limit exceeded; retry after the header says.
  • 5xx — internal error; please report with the X-Request-Id response header.

Versioning

The current namespace is /api/v1. Breaking changes will ship under /api/v2with at least 180 days of overlap. Additive changes (new fields, new endpoints) land in place without a version bump.

Support

API questions, bug reports, or feature requests: support@quoining.com — include your API key’s last-4 fingerprint (visible in Settings) and any failing request/response, never the raw key itself.