Skip to main content
POST
Add a deduction type

Authorizations

Authorization
string
header
required

Server API key, scoped. pk_test_ keys hit the sandbox tenant.

Headers

Idempotency-Key
string

Optional on non-money POSTs; honoured when sent.

Required string length: 1 - 255
X-Request-Id
string

Optional client correlation id, up to 128 characters. It is not echoed: the response's X-Request-Id is always our own req_… id. We log your value with the request as client_request_id, so support can find a request by either id. A longer value is refused with 400 parameter_invalid.

Maximum string length: 128

Body

application/json
name
string
required

Shown on payslips.

Required string length: 1 - 60
kind
enum<string>
required

Kinds a custom type can be.

Available options:
fixed,
percentage,
loan
applies_to
enum<string>
required

everyone is only allowed for percentage.

Available options:
everyone,
selected_people
rate_bps
integer

Required for percentage (250 = 2.5%).

Required range: 0 <= x <= 10000
base
enum<string>

Required for percentage.

Available options:
basic,
basic_housing_transport,
gross
remits_to
string

Where the money goes, listed on the run report. Omit if it stays in the business (e.g. a loan repayment).

Maximum string length: 120

Response

The new deduction type.

A deduction set up once for the business (ded_…).

id
string
required

ded_…

object
string
required

Always deduction_type.

Allowed value: "deduction_type"
created_at
string<date-time>
required

RFC 3339, UTC.

Example:

"2026-10-27T08:41:00Z"

updated_at
string<date-time>
required

RFC 3339, UTC.

Example:

"2026-10-27T08:41:00Z"

name
string
required

Shown on payslips.

kind
enum<string>
required

How a deduction is worked out. tax_table = PAYE from yearly pay and reliefs (built-in only); percentage = rate × base; fixed = same amount each run; loan = same amount each run until a total is repaid; one_off = taken from the next run only (built-in "Salary advance").

Available options:
tax_table,
percentage,
fixed,
loan,
one_off
how
string
required

Human description of how it is worked out.

applies_to
enum<string>
required

Company-wide or added per person.

Available options:
everyone,
selected_people
enabled
boolean
required

Taken from runs when true.

custom
boolean
required

False for built-in types.

people_count
integer
required

People it currently applies to.

short_name
string

Short tag for tables.

rate_bps
integer

For percentage.

Required range: 0 <= x <= 10000
base
enum<string>

For percentage.

Available options:
basic,
basic_housing_transport,
gross
remits_to
string

Where the money goes. Absent when it stays in the business.