Onboarding Statuses

The boarding lifecycle — how a business moves from requirements to underwriting to active, and how PCE surfaces what's still outstanding.

Onboarding is not instant. A business you create starts incomplete, gathers its required data and documents, goes through underwriting, and only then becomes ACTIVE and able to accept payments. This page is the shared reference for those statuses — every action page links here instead of repeating them.


The boarding lifecycle

stateDiagram-v2
    [*] --> PENDING_REQUIREMENTS: POST /v1/businesses
    PENDING_REQUIREMENTS --> PENDING_UNDERWRITING: requirements complete + service enabled
    PENDING_UNDERWRITING --> ACTIVE: underwriting approves
    ACTIVE --> CLOSED: DELETE (soft-close)
    PENDING_REQUIREMENTS --> CLOSED: DELETE (soft-close)
    PENDING_UNDERWRITING --> CLOSED: DELETE (soft-close)
  1. PENDING_REQUIREMENTS — the business exists but is missing data or documents. What's outstanding is surfaced inline (see below).
  2. PENDING_UNDERWRITING — requirements are complete and a service is enabled; underwriting is reviewing.
  3. ACTIVE — approved. The business (and its approved services) can operate.
  4. CLOSED — soft-closed; retained but inactive.

Status by resource

Each resource carries its own status; the business's overall readiness is the combination.

ResourceStatuses
BusinessPENDING_REQUIREMENTS · PENDING_UNDERWRITING · ACTIVE · CLOSED
Service / Feature (e.g. acquiring)PENDING_UNDERWRITING · PENDING_DISABLE · ACTIVE · DISABLED
Owner / SignatoryPENDING_VERIFICATION · VERIFIED · ENDED
IndividualIN_PROGRESS · VERIFIED
LocationPENDING · ACTIVE · CLOSED
🚧

PENDING-PUBLISH

Two status-vocabulary conflicts are unresolved in the source contract: an enabled service appears as both ENABLED and ACTIVE in different examples, and a pending-disable feature as both PENDING and PENDING_DISABLE. This table uses the ACTIVE / PENDING_DISABLE forms. Confirm the authoritative enum against the API Reference before publish.


What's still needed

Onboarding has no separate "requirements" resource to poll. Instead, each service object on the business carries three read-only fields that tell you exactly what's outstanding:

FieldMeaning
missingFieldsData the service still needs before it can go to underwriting.
missingDocumentsDocuments that must be bound before approval.
errorsValidation problems blocking the service.

Read them with GET /v1/businesses/{businessId}?expand=true and inspect services.acquiring:

"services": {
  "acquiring": {
    "uri": "/v1/businesses/bus_42/services/acquiring",
    "enabled": true,
    "status": "PENDING_UNDERWRITING",
    "missingFields": [],
    "missingDocuments": [],
    "errors": []
  }
}

Empty arrays with status: PENDING_UNDERWRITING mean the service has everything it needs and is waiting on a decision. Non-empty arrays tell you precisely what to fix or add.


Tracking progress

Poll GET /v1/businesses/{businessId} to follow status changes as you complete requirements and as underwriting decides.

🚧

PENDING-PUBLISH

Confirm whether onboarding emits webhooks for status transitions (business → underwriting → active, service approved/declined). If it does, document the event names and payload here and switch this section from polling to event-driven. The boarding contract did not model a writable webhook subscription resource; verify current behavior before publish.


Next steps

See also



Did this page help you?
.readme-logo { display: none !important; }