Create or update payable item

Creates or updates a payable item.

A payable item is a gross amount of funds to be paid to a Worker. Creating a payable item places it in a "pending" status and does not automatically pay it out: you need to request the pay-out of Payables in order for them to be paid.

Common examples of payable items include bonuses, stipends, mileage, expense reimbursements, or work performed by contractors.

👍

Use the Timesheets API to record employees' hours

Don't use the Payables API to pay employees for hours worked. Instead, use the Timesheets API to record employees' hourly wages. That allows us to pay them in full compliance with labor law. You should use the Payables API to record any non-hourly wage amounts to employees, like per diems, stipends, or bonuses.

Using the Payables API

  • You assign each payable item a pay code in its payCode field so it can be categorized correctly. We support custom pay codes, and you can use the Pay codes API to create and manage custom pay codes for each company.
  • You provide a unique identifier for each payable item in its externalId field. This ID should be meaningful to you, because we use this ID as an idempotency key to prevent creating multiple payable items that represent the same amount. See the Payables API guide for more information.
  • You can optionally provide the unitRate and unitCount fields as metadata for amounts like miles driven, deliveries completed, or other unit-based pay amounts.

Paying out payable items

There are two ways to pay-out a payable item:

  1. Immediately, which pays it out as quickly as possible (also known as off-cycle).
  2. With payroll, which automatically includes it as part of the worker's regularly scheduled payroll cycle, and pays it out once payroll is approved.
📘

Contractors and employees work differently

Only W-2 employees, not contractors, are included in regularly scheduled payroll cycles, so while you can pay out payable items to employees either "immediately" or "with payroll", contractors can only be paid using the "immediately" option. See the Payables Guide for more information.

Payable items are created in a "pending" state. In this "pending" state, payable items are available to be paid out at a future time, but are not paid out right away. Instead, paying out a payable item to a contractor (or off-cycle to an employee), can be triggered by calling the Process Payable Items for Payout endpoint, which processes payable items into payments.

The following scenarios are an overview of how to pay workers in different classifications:

Are you only paying contractors?

You have to call Process Payable Items for Payout in order for any payable items to be paid out.

Are you only paying employees?

You have to choose whether you want employees' payable items to be paid out immediately or with regular payroll. By default, employees' payable items will wait for regular payroll and won't be paid out immediately.

See the includeWorkersOnRegularPayCycle parameter in the Process Payable Items for Payout API endpoint to control this.

Are you paying both contractors and employees?

You have to call Process Payable Items for Payout in order for any payable items to be paid out to contractors.

For employees, you have to choose whether you want employees' payable items to be paid out immediately, as they are for contractors, or wait for them to be included with regular payroll. By default, employees' payable items will wait for regular payroll and won't be paid out immediately.

See the includeWorkersOnRegularPayCycle parameter in Process Payable Items for Payout to control this.

Updating a payable item (upserting)

To update a payable item, simply call this endpoint again with the updated data structure, including its externalId field. If a payable with that ID exists, it will be automatically updated. If it doesn't, a new payable item will be created. This is an upsert operation.

If you want to allow updating payable items that have already been paid-out, you can pass the correction-authorized=true query parameter when updating a payable item. If authorized, Everee will automatically calculate the difference between the paid-out payable item and the new one, and create either a new amount to pay out, or a one-time deduction to recoup, depending on whether the original payable item was an overpayment or an underpayment.

Query Params
boolean
Defaults to false

Whether to allow processing a correction for a payable item that's already been paid-out. If false, attempting to update a paid-out payable item will fail with an error.

Body Params
string
required

A globally-unique identifier for this payable amount.

string

The unique Everee-generated Worker ID of the worker to pay. Either 'workerId' or 'externalWorkerId' is required.

string

The unique External Worker ID of the worker to pay. Either 'workerId' or 'externalWorkerId' is required.

string
required

A human-readable descriptor for this Payable. This label can appear on worker-facing documents and UIs.

amount
object
required

The currency amount of this payable item. May be a wage amount, reimbursement amount, or one-time deduction amount, depending on the pay code.

string
enum
required

The calculation approach for this payable item. Currently always PRE_CALCULATED, meaning that the payable item's amount field is calculated by you before sending to Everee.

Allowed:
string
required

The pay code for this payable item. See the Pay Codes API for more details.

number
required

Unix epoch timestamp in seconds.

string
required

A custom descriptor for the kind of amount being paid. This could be a category name, a batch ID, or anything else.

unitRate
object

The rate at which the amount was earned, if applicable. Optional.

number

The number of 'units' used to calculate the amount (i.e. hours worked), if applicable. Optional.

number

The ID of the Work Location this payable item is assigned to.

Headers
int64

The company ID to provide for this tenant-scoped endpoint (if applicable)

Responses

400

Bad Request

401

Unauthorized

403

Forbidden

404

Not Found

Language
Credentials
OAuth2
LoadingLoading…
Response
Click Try It! to start a request and see the response here! Or choose an example:
application/json