API Reference

Integrate with the Numbors platform using our REST API. Manage contacts, invoices, inventory, CRM, and more.

OpenAPI 3.0 Download YAML

Base URL

All API requests are relative to:

https://app.numbors.com/api

Authentication

Include a JWT token with every request:

Authorization: Bearer <token>

Company Context

Send your company ID as a header:

X-Company-Id: <id>

Response Format

All responses return JSON with:

{ "success": true, "data": [...] }

Authentication

Register, login, and retrieve the current user.

POST /api/auth/register Public Register a new user
Request Body
FieldTypeDescription
name * string
e.g. Jane Smith
email * string
e.g. jane@example.com
format: email
password * string
e.g. SecurePass!123
format: password
Responses
201 User created
400 Validation error or email already registered
POST /api/auth/login Public Log in and receive a JWT
Request Body
FieldTypeDescription
email * string
e.g. jane@example.com
format: email
password * string
format: password
Responses
200 Login successful
401 Invalid credentials
GET /api/auth/me Get current authenticated user
Responses
200 Current user info

Modules

Query enabled modules and license information.

GET /api/modules/enabled List enabled modules

Returns the list of enabled modules for client-side caching.

Responses
200 Enabled modules
GET /api/modules/check/{alias} Check if a specific module is accessible
Parameters
NameInTypeDescription
alias * path string Module alias (e.g. `crm`, `payroll`, `pos`)
Responses
200 Module accessibility
GET /api/modules/licenses Get detailed license information
Responses
200 License details for all modules

Companies

List companies accessible to the authenticated user.

GET /api/companies List accessible companies
Responses
200 List of companies

Contacts

Manage customers, suppliers, and other contacts.

GET /api/contacts List contacts
Parameters
NameInTypeDescription
type query string Filter by contact type
enabled query boolean
search query string Search by name or email
page query integer Page number (default: 1)
limit query integer Items per page (default: 25)
Responses
200 Paginated contacts
POST /api/contacts Create a contact
Request Body
FieldTypeDescription
name * string
e.g. Acme Ltd
email string
format: email
type string
customer | supplier | both
phone string
taxNumber string
Responses
201 Contact created
GET /api/contacts/{id} Get a contact
Parameters
NameInTypeDescription
id * path string MongoDB ObjectId
Responses
200 Contact details
404 Not found
PUT /api/contacts/{id} Update a contact
Parameters
NameInTypeDescription
id * path string MongoDB ObjectId
Request Body
FieldTypeDescription
name string
email string
type string
Responses
200 Contact updated
DELETE /api/contacts/{id} Delete a contact
Parameters
NameInTypeDescription
id * path string MongoDB ObjectId
Responses
200 Contact deleted

Documents

Create and manage invoices, bills, and other financial documents.

GET /api/documents List documents (invoices, bills)
Parameters
NameInTypeDescription
type query string
status query string
page query integer Page number (default: 1)
limit query integer Items per page (default: 25)
Responses
200 Paginated documents
POST /api/documents Create a document
Request Body
FieldTypeDescription
type * string
invoice | bill
contact * string Contact ObjectId
items array
dueDate string
format: date
Responses
201 Document created
GET /api/documents/{id} Get a document
Parameters
NameInTypeDescription
id * path string MongoDB ObjectId
Responses
200 Document details with populated contact and items
404 Not found
PUT /api/documents/{id} Update a document
Parameters
NameInTypeDescription
id * path string MongoDB ObjectId
Responses
200 Document updated
DELETE /api/documents/{id} Delete a document
Parameters
NameInTypeDescription
id * path string MongoDB ObjectId
Responses
200 Document deleted

Accounts

Bank accounts and cash accounts.

GET /api/accounts List bank and cash accounts
Responses
200 List of accounts
POST /api/accounts Create an account
Request Body
FieldTypeDescription
name * string
e.g. Business Current Account
type * string
bank | cash | credit_card
currency string
e.g. GBP
openingBalance number
Responses
201 Account created

Transactions

Income and expense transactions.

GET /api/transactions List transactions
Parameters
NameInTypeDescription
type query string
account query string Account ObjectId filter
page query integer Page number (default: 1)
limit query integer Items per page (default: 25)
Responses
200 Paginated transactions
POST /api/transactions Create a transaction
Request Body
FieldTypeDescription
type * string
income | expense
account * string Account ObjectId
amount * number
description string
category string Category ObjectId
contact string Contact ObjectId
paidAt string
format: date-time
Responses
201 Transaction created

Items

Products and services used on invoices and bills.

GET /api/items List products and services
Responses
200 List of items
POST /api/items Create an item
Request Body
FieldTypeDescription
name * string
e.g. Web Development
type string
product | service
salePrice number
purchasePrice number
category string Category ObjectId
Responses
201 Item created

Categories

Income and expense categories.

GET /api/categories List categories
Parameters
NameInTypeDescription
type query string
Responses
200 List of categories
POST /api/categories Create a category
Request Body
FieldTypeDescription
name * string
type * string
income | expense | other
Responses
201 Category created
PUT /api/categories/{id} Update a category
Parameters
NameInTypeDescription
id * path string MongoDB ObjectId
Request Body
FieldTypeDescription
name string
type string
Responses
200 Category updated

Taxes

Tax rates applied to line items.

GET /api/taxes List tax rates
Responses
200 List of taxes
POST /api/taxes Create a tax rate
Request Body
FieldTypeDescription
name * string
e.g. Standard Rate
rate * number
e.g. 20
type string
Responses
201 Tax created
PUT /api/taxes/{id} Update a tax rate
Parameters
NameInTypeDescription
id * path string MongoDB ObjectId
Request Body
FieldTypeDescription
name string
rate number
Responses
200 Tax updated

Currencies

Multi-currency support.

GET /api/currencies List currencies
Responses
200 List of currencies
POST /api/currencies Create a currency
Request Body
FieldTypeDescription
code * string
e.g. EUR
name * string
e.g. Euro
rate number
e.g. 1.17
Responses
201 Currency created

Estimates

Quotes and estimates sent to customers.

GET /api/estimates List estimates
Parameters
NameInTypeDescription
status query string
page query integer Page number (default: 1)
limit query integer Items per page (default: 25)
Responses
200 Paginated estimates
POST /api/estimates Create an estimate
Request Body
FieldTypeDescription
contact * string
items array
expiryDate string
format: date
Responses
201 Estimate created
GET /api/estimates/{id} Get an estimate
Parameters
NameInTypeDescription
id * path string MongoDB ObjectId
Responses
200 Estimate details
404 Not found
PUT /api/estimates/{id} Update an estimate
Parameters
NameInTypeDescription
id * path string MongoDB ObjectId
Responses
200 Estimate updated
DELETE /api/estimates/{id} Delete an estimate
Parameters
NameInTypeDescription
id * path string MongoDB ObjectId
Responses
200 Estimate deleted

Credit Notes

Credit notes issued against invoices.

GET /api/credit-notes List credit notes
Responses
200 List of credit notes
POST /api/credit-notes Create a credit note
Request Body
FieldTypeDescription
contact * string
amount number
reason string
Responses
201 Credit note created

Accounting

Chart of accounts and journal entries.

GET /api/accounting/chart-of-accounts List chart of accounts
Responses
200 Chart of accounts sorted by code
POST /api/accounting/chart-of-accounts Create a chart of account entry
Request Body
FieldTypeDescription
name * string
e.g. Office Supplies
code * string
e.g. 6100
type * string
asset | liability | equity | income | expense
Responses
201 Account created
GET /api/accounting/journal List journal entries
Responses
200 Journal entries sorted by date
POST /api/accounting/journal Create a journal entry
Request Body
FieldTypeDescription
date * string
format: date
description string
lines * array
Responses
201 Journal entry created

Inventory

Warehouses, stock transfers, and adjustments.

GET /api/inventory/warehouses List warehouses
Responses
200 List of warehouses
POST /api/inventory/warehouses Create a warehouse
Request Body
FieldTypeDescription
name * string
e.g. Main Warehouse
address string
Responses
201 Warehouse created
GET /api/inventory/transfers List stock transfers
Responses
200 List of stock transfers
POST /api/inventory/transfers Create a stock transfer
Request Body
FieldTypeDescription
fromWarehouse * string
toWarehouse * string
items * array
Responses
201 Transfer created
POST /api/inventory/adjustments Create a stock adjustment
Request Body
FieldTypeDescription
warehouse * string
reason string
items * array
Responses
201 Adjustment created

Projects

Project management and time tracking.

GET /api/projects List projects
Responses
200 List of projects with populated customer
POST /api/projects Create a project
Request Body
FieldTypeDescription
name * string
e.g. Website Redesign
customer string Contact ObjectId
budget number
startDate string
format: date
endDate string
format: date
Responses
201 Project created
GET /api/projects/{id} Get a project
Parameters
NameInTypeDescription
id * path string MongoDB ObjectId
Responses
200 Project details with tasks and customer
404 Not found
PUT /api/projects/{id} Update a project
Parameters
NameInTypeDescription
id * path string MongoDB ObjectId
Responses
200 Project updated
POST /api/projects/{id}/tasks Add a task to a project
Parameters
NameInTypeDescription
id * path string MongoDB ObjectId
Request Body
FieldTypeDescription
name * string
e.g. Design mockups
assignedTo string
dueDate string
format: date
Responses
201 Task added
GET /api/projects/time List time entries
Responses
200 Time entries with populated project and user
POST /api/projects/time Create a time entry
Request Body
FieldTypeDescription
project * string Project ObjectId
startTime * string
format: date-time
endTime * string
format: date-time
description string
Responses
201 Time entry created

Payroll

Departments, employees, and pay runs.

GET /api/payroll/departments List departments
Responses
200 List of departments
POST /api/payroll/departments Create a department
Request Body
FieldTypeDescription
name * string
e.g. Engineering
Responses
201 Department created
GET /api/payroll/employees List employees
Responses
200 Employees with populated department and position
POST /api/payroll/employees Create an employee
Request Body
FieldTypeDescription
firstName * string
lastName * string
email string
format: email
department string Department ObjectId
position string Position ObjectId
salary number
Responses
201 Employee created
GET /api/payroll/pay-runs List pay runs
Responses
200 Pay runs sorted by pay date
POST /api/payroll/pay-runs Create a pay run
Request Body
FieldTypeDescription
payDate * string
format: date
period * string
e.g. 2025-01
employees array
Responses
201 Pay run created

Point of Sale

POS terminals, sessions, orders, and loyalty programmes.

GET /api/pos/terminals List POS terminals
Responses
200 List of terminals
POST /api/pos/terminals Create a POS terminal
Request Body
FieldTypeDescription
name * string
e.g. Checkout 1
location string
Responses
201 Terminal created
GET /api/pos/sessions List POS sessions
Responses
200 Sessions with populated terminal and user
POST /api/pos/sessions/open Open a new POS session
Request Body
FieldTypeDescription
terminal * string Terminal ObjectId
openingFloat number
Responses
201 Session opened
POST /api/pos/orders Create a POS order
Request Body
FieldTypeDescription
session * string Session ObjectId
items * array
paymentMethod string
cash | card | other
Responses
201 Order created
GET /api/pos/loyalty List loyalty programmes
Responses
200 List of loyalty programmes
POST /api/pos/loyalty/programs Create a loyalty programme
Request Body
FieldTypeDescription
name * string
e.g. Points Rewards
pointsPerPound number
e.g. 1
Responses
201 Programme created

CRM

Pipelines, leads, deals, activities, and campaigns.

GET /api/crm/pipelines List pipelines
Responses
200 List of pipelines
POST /api/crm/pipelines Create a pipeline
Request Body
FieldTypeDescription
name * string
e.g. Sales Pipeline
stages * array
Responses
201 Pipeline created
GET /api/crm/leads List leads
Responses
200 List of leads
POST /api/crm/leads Create a lead
Request Body
FieldTypeDescription
name * string
email string
format: email
source string
website | referral | cold_call | social_media | other
Responses
201 Lead created
GET /api/crm/deals List deals
Responses
200 Deals with populated contact and pipeline
POST /api/crm/deals Create a deal
Request Body
FieldTypeDescription
name * string
e.g. Enterprise Contract
pipeline * string Pipeline ObjectId
contact string Contact ObjectId
value number
stage string Stage ObjectId
Responses
201 Deal created
GET /api/crm/activities List activities
Responses
200 Activities sorted by scheduled date
POST /api/crm/activities Create an activity
Request Body
FieldTypeDescription
type * string
call | email | meeting | task | note
subject * string
scheduledAt string
format: date-time
deal string Deal ObjectId
contact string Contact ObjectId
Responses
201 Activity created
GET /api/crm/campaigns List campaigns
Responses
200 List of campaigns
POST /api/crm/campaigns Create a campaign
Request Body
FieldTypeDescription
name * string
e.g. Spring Sale
type * string
email | sms | social
startDate string
format: date
endDate string
format: date
Responses
201 Campaign created

Contracts & Proposals

Manage contracts and send proposals.

GET /api/contracts List contracts
Responses
200 Contracts with populated contact
POST /api/contracts Create a contract
Request Body
FieldTypeDescription
title * string
contact * string Contact ObjectId
startDate string
format: date
endDate string
format: date
value number
Responses
201 Contract created
GET /api/contracts/proposals List proposals
Responses
200 Proposals with populated contact
POST /api/contracts/proposals Create a proposal
Request Body
FieldTypeDescription
title * string
contact * string Contact ObjectId
sections array
value number
Responses
201 Proposal created

Helpdesk

Ticket categories, tickets, SLAs, and knowledge-base articles.

GET /api/helpdesk/categories List ticket categories
Responses
200 List of ticket categories
POST /api/helpdesk/categories Create a ticket category
Request Body
FieldTypeDescription
name * string
e.g. Billing
Responses
201 Category created
GET /api/helpdesk/tickets List tickets
Responses
200 Tickets with populated contact, category, and assignee
POST /api/helpdesk/tickets Create a ticket
Request Body
FieldTypeDescription
subject * string
e.g. Cannot access my account
description string
category string TicketCategory ObjectId
priority string
low | medium | high | urgent
contact string Contact ObjectId
Responses
201 Ticket created
GET /api/helpdesk/slas List SLAs
Responses
200 List of SLAs
POST /api/helpdesk/slas Create an SLA
Request Body
FieldTypeDescription
name * string
e.g. Standard SLA
responseTime integer Hours
resolutionTime integer Hours
Responses
201 SLA created
GET /api/helpdesk/articles List knowledge-base articles
Responses
200 List of articles
POST /api/helpdesk/articles Create an article
Request Body
FieldTypeDescription
title * string
body * string
category string
published boolean
Responses
201 Article created

Orders

Sales orders and purchase orders.

GET /api/sales/orders List sales orders
Responses
200 Sales orders with populated contact
POST /api/sales/orders Create a sales order
Request Body
FieldTypeDescription
contact * string Contact ObjectId
items * array
Responses
201 Sales order created
GET /api/purchases/orders List purchase orders
Responses
200 Purchase orders with populated contact
POST /api/purchases/orders Create a purchase order
Request Body
FieldTypeDescription
contact * string Contact ObjectId
items * array
Responses
201 Purchase order created

Banking

Open-banking feeds, connections, and auto-categorisation rules.

GET /api/banking/feeds List bank feed transactions
Responses
200 Bank feed transactions sorted by date
GET /api/banking/feeds/connections List bank connections
Responses
200 List of bank connections
POST /api/banking/feeds/connections Create a bank connection
Request Body
FieldTypeDescription
provider * string
account * string Account ObjectId
Responses
201 Connection created
GET /api/banking/feeds/rules List auto-categorisation rules
Responses
200 List of bank rules
POST /api/banking/feeds/rules Create an auto-categorisation rule
Request Body
FieldTypeDescription
pattern * string Text pattern to match against transaction descriptions
category * string Category ObjectId
contact string Contact ObjectId (optional auto-assign)
Responses
201 Rule created

Transfers

Inter-account transfers.

GET /api/transfers List inter-account transfers
Responses
200 Transfers with populated accounts
POST /api/transfers Create a transfer
Request Body
FieldTypeDescription
fromAccount * string Source Account ObjectId
toAccount * string Destination Account ObjectId
amount * number
e.g. 500
description string
paidAt string
format: date-time
Responses
201 Transfer created