Skip to main content
POST
Add a person to payroll

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

Full name, as on their bank account.

Required string length: 1 - 120
start_date
string<date>
required

Calendar date, interpreted in Africa/Lagos.

Example:

"2026-11-07"

bank_account
object
required

Where the person is paid. Confirmed by name enquiry.

pay_items
object[]
required

Monthly pay. Gross must be above zero.

Required array length: 1 - 20 elements
email
string<email>
Maximum string length: 254
role
string

Job title, e.g. "Dispatch rider".

Maximum string length: 80
team
string

Team, e.g. "Operations".

Maximum string length: 60
confirm_account_name
boolean
default:false

Accept the bank's account name even if it differs from name.

metadata
object

Up to 20 string keys (≤ 40 chars) with string values (≤ 500 chars). Returned on the resource and its events.

Response

The person, with their computed pay.

A person on payroll (ppl_…).

id
string
required

ppl_…

object
string
required

Always payroll_person.

Allowed value: "payroll_person"
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

Full name.

status
enum<string>
required

active is paid; on_leave is on paid leave and still paid ("On leave, paid"); starting has a start date after today ("Starts 1 Nov"); offboarded is past their end date and never paid again.

Available options:
active,
on_leave,
starting,
offboarded
start_date
string<date>
required

Calendar date, interpreted in Africa/Lagos.

Example:

"2026-11-07"

bank_account
object
required

The person's bank account. Only the last four digits are returned.

pay_items
object[]
required

Monthly earnings.

pay
object
required

What the next run would pay, with current deductions (before any one-off bonus).

email
string<email>

Where payslips are sent.

Maximum string length: 254
role
string

Job title.

team
string

Team.

end_date
string<date>

Calendar date, interpreted in Africa/Lagos.

Example:

"2026-11-07"

offboarded_at
string<date-time>

RFC 3339, UTC.

Example:

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

metadata
object

Up to 20 string keys (≤ 40 chars) with string values (≤ 500 chars). Returned on the resource and its events.