App settings: SimpleBooks

Companies, who can access each company and with what role, and the receipts email address.

MethodPathSummary
GET/v1/admin/simplebooks/companiesEvery SimpleBooks company in the tenant, with modules, access and receipt counts
POST/v1/admin/simplebooks/companiesCreate a company
PUT/v1/admin/simplebooks/companies/:idRename, change business type, archive/unarchive, or switch modules on/off
GET/v1/admin/simplebooks/principalsTenant users (with whether each has a SimpleBooks licence) and groups, for the access picker
GET/v1/admin/simplebooks/companies/:id/accessWho can open this company, and with which role
POST/v1/admin/simplebooks/companies/:id/accessAccess a company
PUT/v1/admin/simplebooks/companies/:id/access/:accessIdUpdate an access
DELETE/v1/admin/simplebooks/companies/:id/access/:accessIdDelete an access
GET/v1/admin/simplebooks/emailThe SMTP account SimpleBooks emails invoices through (password never returned)
PUT/v1/admin/simplebooks/emailUpdate the email
POST/v1/admin/simplebooks/email/testSend a test email to the signed-in admin through the saved SMTP account

#Every SimpleBooks company in the tenant, with modules, access and receipt counts

GET/v1/admin/simplebooks/companies
Address
https://<your-org>.brambleit.cloud/api/v1/admin/simplebooks/companies
Requires
Signed-in session, X-API-Key, or a Bramble app access token (Authorization: Bearer).
Role: GLOBAL_ADMIN.

Response 200

FieldTypeDescription
companiesarray of object
companies[].idinteger
companies[].namestring
companies[].trading_namestring, or null
companies[].business_typestring: "sole_trader" | "partnership" | "limited"
companies[].year_endstring: "mar31" | "apr5"
companies[].created_atstring (date-time)
companies[].archived_atstring (date-time), or null
companies[].receiptsboolean
companies[].to_reviewboolean
companies[].last_receipt_atany
companies[].access_countany
companies[].owner_countany
companies[].modulesarray of any
licensed_usersinteger
Example response
JSON
{
  "companies": [
    {
      "id": 42,
      "name": "Example name",
      "trading_name": "Example trading name",
      "business_type": "sole_trader",
      "year_end": "mar31",
      "created_at": "2026-11-12T09:30:00.000Z",
      "archived_at": "2026-11-12T09:30:00.000Z",
      "receipts": false,
      "to_review": false,
      "last_receipt_at": null,
      "access_count": null,
      "owner_count": null,
      "modules": []
    }
  ],
  "licensed_users": 1
}

Example request

Bash
curl -X GET 'https://<your-org>.brambleit.cloud/api/v1/admin/simplebooks/companies' \
  -H "X-API-Key: $BRAMBLE_KEY"

#Create a company

POST/v1/admin/simplebooks/companies
Address
https://<your-org>.brambleit.cloud/api/v1/admin/simplebooks/companies
Requires
Signed-in session, X-API-Key, or a Bramble app access token (Authorization: Bearer).
Role: GLOBAL_ADMIN.

Request body JSON

NameTypeDescription
namestring
business_typestring: "sole_trader" | "partnership" | "limited"
trading_namestring
owner_namestring
modulesarray of any

Response 201

FieldTypeDescription
idinteger
Example response
JSON
{
  "id": 42
}

Errors

StatusMessage
400Give the company a name

Example request

Bash
curl -X POST 'https://<your-org>.brambleit.cloud/api/v1/admin/simplebooks/companies' \
  -H "X-API-Key: $BRAMBLE_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name":"Example name","business_type":"sole_trader","trading_name":"Example trading name","owner_name":"Example owner name","modules":[]}'

#Rename, change business type, archive/unarchive, or switch modules on/off

PUT/v1/admin/simplebooks/companies/:id
Address
https://<your-org>.brambleit.cloud/api/v1/admin/simplebooks/companies/:id
Requires
Signed-in session, X-API-Key, or a Bramble app access token (Authorization: Bearer).
Role: GLOBAL_ADMIN.

Path parameters

NameTypeDescription
idrequiredinteger

Request body JSON

NameTypeDescription
namestring
trading_namestring
business_typestring: "sole_trader" | "partnership" | "limited"
archivedany
modulesobject

Response 200

FieldTypeDescription
messagestring
Example response
JSON
{
  "message": "Saved"
}

Errors

StatusMessage
400Give the company a name
400Unknown business type

Example request

Bash
curl -X PUT 'https://<your-org>.brambleit.cloud/api/v1/admin/simplebooks/companies/42' \
  -H "X-API-Key: $BRAMBLE_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name":"Example name","trading_name":"Example trading name","business_type":"sole_trader","archived":"…","modules":{}}'

#Tenant users (with whether each has a SimpleBooks licence) and groups, for the access picker

GET/v1/admin/simplebooks/principals
Address
https://<your-org>.brambleit.cloud/api/v1/admin/simplebooks/principals
Requires
Signed-in session, X-API-Key, or a Bramble app access token (Authorization: Bearer).
Role: GLOBAL_ADMIN.

Response 200

FieldTypeDescription
usersarray of object
users[].idinteger
users[].namestring
users[].emailstring
users[].licensedboolean
groupsarray of any
Example response
JSON
{
  "users": [
    {
      "id": 42,
      "name": "Example name",
      "email": "alex@example.com",
      "licensed": false
    }
  ],
  "groups": []
}

Example request

Bash
curl -X GET 'https://<your-org>.brambleit.cloud/api/v1/admin/simplebooks/principals' \
  -H "X-API-Key: $BRAMBLE_KEY"

#Who can open this company, and with which role

GET/v1/admin/simplebooks/companies/:id/access
Address
https://<your-org>.brambleit.cloud/api/v1/admin/simplebooks/companies/:id/access
Requires
Signed-in session, X-API-Key, or a Bramble app access token (Authorization: Bearer).
Role: GLOBAL_ADMIN.

Path parameters

NameTypeDescription
idrequiredinteger

Response 200

FieldTypeDescription
accessarray of object
access[].idinteger
access[].principal_typestring: "user" | "group"
access[].principal_idinteger
access[].rolestring: "owner" | "bookkeeper" | "submitter" | "viewer"
access[].created_atstring (date-time)
access[].namestring
access[].emailany, or null
Example response
JSON
{
  "access": [
    {
      "id": 42,
      "principal_type": "user",
      "principal_id": 7,
      "role": "owner",
      "created_at": "2026-11-12T09:30:00.000Z",
      "name": "Example name",
      "email": null
    }
  ]
}

Example request

Bash
curl -X GET 'https://<your-org>.brambleit.cloud/api/v1/admin/simplebooks/companies/42/access' \
  -H "X-API-Key: $BRAMBLE_KEY"

#Access a company

POST/v1/admin/simplebooks/companies/:id/access
Address
https://<your-org>.brambleit.cloud/api/v1/admin/simplebooks/companies/:id/access
Requires
Signed-in session, X-API-Key, or a Bramble app access token (Authorization: Bearer).
Role: GLOBAL_ADMIN.

Path parameters

NameTypeDescription
idrequiredinteger

Request body JSON

NameTypeDescription
principal_typestring
principal_idnumber
roleany

Response 201

FieldTypeDescription
messagestring
Example response
JSON
{
  "message": "Saved"
}

Errors

StatusMessage
400Choose a …
400Unknown …

Example request

Bash
curl -X POST 'https://<your-org>.brambleit.cloud/api/v1/admin/simplebooks/companies/42/access' \
  -H "X-API-Key: $BRAMBLE_KEY" \
  -H "Content-Type: application/json" \
  -d '{"principal_type":"string","principal_id":12.5,"role":"…"}'

#Update an access

PUT/v1/admin/simplebooks/companies/:id/access/:accessId
Address
https://<your-org>.brambleit.cloud/api/v1/admin/simplebooks/companies/:id/access/:accessId
Requires
Signed-in session, X-API-Key, or a Bramble app access token (Authorization: Bearer).
Role: GLOBAL_ADMIN.

Path parameters

NameTypeDescription
idrequiredinteger
accessIdrequirednumber

Request body JSON

NameTypeDescription
roleany

Response 200

FieldTypeDescription
messagestring
Example response
JSON
{
  "message": "Saved"
}

Errors

StatusMessage
400Unknown role
404Access not found

Example request

Bash
curl -X PUT 'https://<your-org>.brambleit.cloud/api/v1/admin/simplebooks/companies/42/access/12.5' \
  -H "X-API-Key: $BRAMBLE_KEY" \
  -H "Content-Type: application/json" \
  -d '{"role":"…"}'

#Delete an access

DELETE/v1/admin/simplebooks/companies/:id/access/:accessId
Address
https://<your-org>.brambleit.cloud/api/v1/admin/simplebooks/companies/:id/access/:accessId
Requires
Signed-in session, X-API-Key, or a Bramble app access token (Authorization: Bearer).
Role: GLOBAL_ADMIN.

Path parameters

NameTypeDescription
idrequiredinteger
accessIdrequirednumber

Response 200

FieldTypeDescription
messagestring
Example response
JSON
{
  "message": "Saved"
}

Example request

Bash
curl -X DELETE 'https://<your-org>.brambleit.cloud/api/v1/admin/simplebooks/companies/42/access/12.5' \
  -H "X-API-Key: $BRAMBLE_KEY"

#The SMTP account SimpleBooks emails invoices through (password never returned)

GET/v1/admin/simplebooks/email
Address
https://<your-org>.brambleit.cloud/api/v1/admin/simplebooks/email
Requires
Signed-in session, X-API-Key, or a Bramble app access token (Authorization: Bearer).
Role: GLOBAL_ADMIN.

Response 200

FieldTypeDescription
emailobject
email.enabledinteger
email.smtp_portinteger
email.smtp_secureinteger
email.has_passwordboolean
Example response
JSON
{
  "email": {
    "enabled": 1,
    "smtp_port": 1,
    "smtp_secure": 1,
    "has_password": true
  }
}

Example request

Bash
curl -X GET 'https://<your-org>.brambleit.cloud/api/v1/admin/simplebooks/email' \
  -H "X-API-Key: $BRAMBLE_KEY"

#Update the email

PUT/v1/admin/simplebooks/email
Address
https://<your-org>.brambleit.cloud/api/v1/admin/simplebooks/email
Requires
Signed-in session, X-API-Key, or a Bramble app access token (Authorization: Bearer).
Role: GLOBAL_ADMIN.

Request body JSON

NameTypeDescription
enabledboolean
smtp_hoststring
smtp_portnumber
smtp_secureany
smtp_userstring
from_emailstring
from_namestring
smtp_passstring
clear_passwordany

Response 200

FieldTypeDescription
messagestring
Example response
JSON
{
  "message": "Saved"
}

Errors

StatusMessage
400Port must be a number, usually 587 or 465
400The 'from' address doesn't look right
400To switch email on, fill in the server and the 'from' address

Example request

Bash
curl -X PUT 'https://<your-org>.brambleit.cloud/api/v1/admin/simplebooks/email' \
  -H "X-API-Key: $BRAMBLE_KEY" \
  -H "Content-Type: application/json" \
  -d '{"enabled":true,"smtp_host":"string","smtp_port":12.5,"smtp_secure":"…","smtp_user":"string","from_email":"alex@example.com","from_name":"Example from name","smtp_pass":"string","clear_password":"…"}'

#Send a test email to the signed-in admin through the saved SMTP account

POST/v1/admin/simplebooks/email/test
Address
https://<your-org>.brambleit.cloud/api/v1/admin/simplebooks/email/test
Requires
Signed-in session, X-API-Key, or a Bramble app access token (Authorization: Bearer).
Role: GLOBAL_ADMIN.

Response 200

FieldTypeDescription
messagestring
Example response
JSON
{
  "message": "Saved"
}

Errors

StatusMessage
400Save the email settings first
502The test email couldn't be sent: …

Example request

Bash
curl -X POST 'https://<your-org>.brambleit.cloud/api/v1/admin/simplebooks/email/test' \
  -H "X-API-Key: $BRAMBLE_KEY"