---
title: "Update a company's onboarding checklist"
method: PATCH
path: "/companies/{companyId}/onboarding"
tags: ["Client Onboarding"]
---

# Update a company's onboarding checklist

`PATCH /companies/{companyId}/onboarding`

## Request

- Base URL: `https://ledgerhq.pro/api/v1`
- URL: `https://ledgerhq.pro/api/v1/companies/{companyId}/onboarding`
- Auth: one of:
  - HTTP bearer and API key in header `x-organization-id`
  - HTTP bearer and API key in header `x-organization-id`

One action per call. details updates the client name and contact. agreement chooses esign (send the firm's engagement letter for signature), uploaded (use a signed letter already on the company), or not_needed. billing chooses checkout (a pay link that charges the first month plus any setup fee and starts a monthly subscription), linked_stripe (an existing Stripe subscription linked on the company), outside (billed outside LedgerHQ), or none. Billing cannot change once the client opened or paid the pay link, and checkout is refused while a linked subscription exists, so a company is never billed twice. mark marks a step done or not needed; undo reopens a hand-marked step. finish completes the onboarding; abandon closes it.

## Path parameters

- `companyId` string, uuid, required

## Request body

- union
  - object
    - `action` 'details', required
    - `businessLegalName` string
    - `contact` object
      - `name` string, required
      - `title` string
      - `email` string, required: Email or empty string
      - `mobilePhone` string
  - object
    - `action` 'agreement', required
    - `method` 'esign' | 'uploaded' | 'not_needed', required
    - `importedEngagementId` string, uuid: Uploaded letter; defaults to the company's current one
  - object
    - `action` 'billing', required
    - `method` 'checkout' | 'linked_stripe' | 'outside' | 'none', required
    - `monthlyPriceCents` integer: Required for checkout
    - `setupFeeCents` integer
  - object
    - `action` 'mark', required
    - `step` 'firm:details' | 'firm:agreement' | 'firm:billing' | 'firm:portal' | 'firm:books', required
    - `notNeeded` boolean
  - object
    - `action` 'undo', required
    - `step` 'firm:details' | 'firm:agreement' | 'firm:billing' | 'firm:portal' | 'firm:books', required
  - object
    - `action` 'finish', required
  - object
    - `action` 'abandon', required

## Response `200`

{onboarding}

## Other responses

- `404`: Onboarding not started
- `409`: Closed onboarding, website onboarding, or billing locked
- `default`: Error response

---

[API](https://skmtc.dev/ledgerhq-pro/apis/ledgerhq-bookkeeping-api.md) · [All operations](https://skmtc.dev/ledgerhq-pro/apis/ledgerhq-bookkeeping-api/llms.txt) · [OpenAPI document](https://skmtc.dev/ledgerhq-pro/apis/ledgerhq-bookkeeping-api/revisions/9a8269f0a586?raw)
