---
title: "Resume subscription activation after prospect action"
method: POST
path: "/client-onboarding/public/enrollments/{token}/activate"
tags: ["Client Onboarding"]
---

# Resume subscription activation after prospect action

`POST /client-onboarding/public/enrollments/{token}/activate`

## Request

- Base URL: `https://ledgerhq.pro/api/v1`
- URL: `https://ledgerhq.pro/api/v1/client-onboarding/public/enrollments/{token}/activate`
- Auth: none required

Idempotently resumes a signed enrollment's connected-account subscription. Payment success and company provisioning remain driven by verified Stripe webhook state. When Stripe requires customer action, paymentActionUrl is the connected account invoice's hosted URL. This payment operation is prospect-only and is not exposed through MCP.

## Path parameters

- `token` string, required

## Response `200`

Current activation state and optional Stripe-hosted payment action URL

- PublicClientOnboardingActivation
  - `enrollment` PublicClientOnboardingEnrollment, required
    - `id` string, uuid, required
    - `firmSlug` string, required
    - `status` 'details_submitted' | 'payment_method_pending' | 'payment_method_ready' | 'agreement_presented' | 'signed' | 'payment_pending' | 'payment_failed' | 'paid' | 'provisioning' | 'completed' | 'abandoned', required
    - `package` ClientOnboardingPublicPackage, required
      - `slug` string, required
      - `name` string, required
      - `description` string, required
      - `features` string[], required
      - `monthlyPriceCents` integer, required
      - `setupFeeCents` integer, required
      - `recommended` boolean, required
    - `prospect` ClientOnboardingProspect, required
      - `name` string, required
      - `title` string, required
      - `email` string, email, required
      - `mobilePhone` string, required
    - `questions` ClientOnboardingPublicQuestionSnapshot, required
      - `standard` ClientOnboardingPublicStandardQuestion[], required
        - `key` string, required
        - `prompt` string, required
        - `type` 'short_text' | 'long_text' | 'yes_no' | 'date' | 'single_select' | 'address' | 'contact', required
        - `enabled` boolean, required
        - `required` boolean, required
        - `order` integer, required
        - `options` string[]
      - `custom` ClientOnboardingCustomQuestion[], required
        - `id` string, uuid, required
        - `prompt` string, required
        - `type` 'short_text' | 'long_text' | 'yes_no' | 'single_select', required
        - `required` boolean, required
        - `options` string[], required
        - `order` integer, required
    - `answers` object, required
    - `paymentMethodReady` boolean, required
    - `engagementLetter` object, nullable, required
      - `version` integer, required
      - `renderedHtml` string, required
      - `contentHash` string, required
      - `presentedAt` string, date-time, required
      - `signedAt` string, date-time, nullable, required
      - `signatureName` string, nullable, required
      - `appearance` 'allura-v1'
      - `disclosure` string
      - `copy` object, nullable: Immutable portal-copy status. New copies have delivery=portal, email=not_requested, sealed=false and timestamped=false. Historical seal/email evidence remains available. Signing stays accepted during preparation.
        - `state` 'unsigned' | 'legacy' | 'preparing' | 'ready'
        - `delivery` 'portal'
        - `sealed` boolean
        - `timestamped` boolean
        - `email` 'not_requested' | 'pending' | 'accepted' | 'delivered' | 'bounced' | 'complained' | 'suppressed' | 'delivery_unknown'
        - `sha256` string, nullable
        - `archivedAt` string, date-time, nullable
    - `payment` object, required
      - `status` 'not_started' | 'pending' | 'requires_action' | 'failed' | 'paid', required
      - `amountDueCents` integer, required
    - `companyOrganizationId` string, uuid, nullable, required
    - `completedAt` string, date-time, nullable, required
  - `paymentActionUrl` string, uri, nullable, required

## Other responses

- `409`: A signature or saved payment method is required
- `410`: The resume token is invalid or expired
- `429`: Rate limit exceeded
- `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)
