Employees

Update an employee

Partially update an employee; omitted fields keep their value, and the updated employee is returned.

  • hire_date cannot be later than termination_date: 422 parameter_invalid_value, subcode invalid_hire_date.
  • Entries outside the new employment period stay in the ledger, flagged is_outside_employment.
patch/companies/{company}/employees/{employee}

Request

  • Base URL: https://api.factuarea.com/v1
  • URL: https://api.factuarea.com/v1/companies/{company}/employees/{employee}
  • Auth: one of:
    • HTTP bearer
    • API key in header X-API-Key

Path parameters

companystring uuid required

Public identifier (UUID v7) of the company. Get it from GET /v1/me (data.scope[].id).

employeestring uuid required

Public identifier (UUID v7) of the employee.

Headers

Idempotency-Keystring
Example:01928f10-7c0e-7c4a-9b7d-2f8a6e3c1d4b

Client-generated opaque key (up to 255 characters; UUID v7 recommended) that makes retries safe: the first response is cached and replayed for repeats without re-executing the mutation. Reusing a key with a different body returns 422 idempotency_key_reused; the values of secret fields (password, secret…) count as part of the body, so retrying with a corrected secret under the same key is a different request, never the replay of the earlier answer. See the Idempotency guide.

Factuarea-Versionstring date
Example:2026-06-01

Pin the API version (YYYY-MM-DD, Stripe-style date versioning) for this request; omit to use the key's pinned version, or the latest if none. Unsupported version → 400 unsupported_api_version; malformed → 400 parameter_invalid_format. The effective version is echoed in the Factuarea-Version response header. See the Versioning guide.

Request body

first_namestring

Employee first name.

last_namestring

Employee last name.

emailstring email

Employee email (unique within the company).

employment_type'full_time' | 'part_time'

Working-hours arrangement: full_time or part_time.

contract_hoursnumber

Weekly contracted hours (greater than 0 and up to 168).

hire_datestring date

Hire date of the employee (Y-m-d). Must not be later than the termination date; changing it keeps existing time entries and schedule assignments.

ccaa'AN' | 'AR' | 'AS' | 'IB' | 'CN' | 'CB' | 'CL' | 'CM' | 'CT' | 'VC' | 'EX' | 'GA' | 'MD' | 'MC' | 'NC' | 'PV' | 'RI' | 'CE' | 'ML'

Spanish autonomous community or city (ISO 3166-2:ES) used to localise public holidays.

tax_idstring nullable

Spanish fiscal identifier (NIF/NIE) of the employee (optional).

job_titlestring nullable

Role or position of the employee (optional).

external_idstring nullable

External integration key (ERP/CRM), unique per company

metadataMetadata nullable

A free map of up to 50 key→value pairs for storing arbitrary structured data (values are strings up to 500 characters). Unlike custom_fields — an ordered list of typed {field, value} pairs with display semantics, present on the six document resources — metadata is an unordered map for opaque integration data; a document may carry both. The master resources (Client, Supplier) have no custom_fields, so their metadata doubles as the custom-fields store.

Reserved keys (read-only). When the system auto-issues an invoice from a payment correlation (Stripe/GoCardless/MONEI), it writes stripe_subscription_id, stripe_invoice_id, billing_reason, period_start and period_end into that invoice metadata automatically. Do not set or overwrite them by hand — the platform owns them and a manual value may be replaced when the correlation runs.

Example request

{
  "metadata": {
    "erp_code": "IVA-GEN",
    "ledger_account": "477000"
  }
}

Response

Example response

{
  "data": {
    "id": "01933a1f-8c21-7b3d-9e4f-1a2b3c4d5e01",
    "object": "employee",
    "first_name": "Lucía",
    "last_name": "Fernández Ruiz",
    "email": "lucia.fernandez@empresa.com",
    "tax_id": "12345678Z",
    "job_title": "Desarrolladora backend",
    "employment_type": "full_time",
    "contract_hours": 40,
    "hire_date": "2024-09-02",
    "ccaa": "MD",
    "status": "active",
    "external_id": "EMP-1042",
    "metadata": {
      "erp_code": "IVA-GEN",
      "ledger_account": "477000"
    },
    "user_id": "01933a1f-8c21-7b3d-9e4f-1a2b3c4d5e02",
    "created_at": "2024-09-02T08:00:00Z",
    "updated_at": "2026-05-04T09:03:01Z"
  }
}

Changes

No recorded changes to this operation across all 1 revision of this API.