Owners & Signatories

Add the people behind a business: beneficial owners and authorized signatories, each backed by a shared Individual, with exactly one control person across the business.

Every business needs the people behind it. An owner links an Individual as a beneficial owner of the business, carrying ownershipPercentage and isControlPerson. A signatory links an Individual as an authorized signer, carrying isPrimary, isGuarantor, and title. The same person can be both: link the same Individual into owners and signatories. For the full field list, jump to the Request reference.

Common use cases

  • Add the beneficial owners of a business and mark the control person.
  • Add an authorized signer who can act for the business.
  • Link one person as both an owner and a signatory.
  • Reuse a person you already created as an owner or signer of another business.
🚧

PENDING-PUBLISH

The boarding API Reference is pending publication; the ref: targets on this page are placeholders. Replace each with the real boarding-spec operationId once the boarding reference ships.


Scenarios

Every owner and signatory links to an Individual. Supply exactly one of three ways to identify that person: an inline individual (create and link in one step), an existing individualId, or the person's externalId (resolve it with ?externalId=, then pass the individualId). Creating a person and linking them are two distinct operations; an inline individual does both in one call.

sequenceDiagram
    participant App as Your application
    participant PCE as PCE

    App->>PCE: POST /individuals (or reuse an existing ind_ id)
    PCE-->>App: 201 Created (ind_ id)
    App->>PCE: POST /owners or /signatories (link by individualId)
    PCE-->>App: 201 Created (own_ / sig_ id, status PENDING_VERIFICATION)
    Note over PCE: Exactly one control person across owners + signatories

Before you begin (all scenarios)

  • You have the businessId of the business you are adding people to.
  • You have each person's identity details, or the individualId of someone already on PCE.
  • Exactly one person across all owners and signatories will be the control person.

Scenario 1: Add a beneficial owner

Add a beneficial owner by individualId, externalId, or an inline individual. Make a POST request to /v1/businesses/{businessId}/owners.

curl -X POST https://sandbox-api.prioritycommerce.com/v1/businesses/{businessId}/owners \
  -H "x-api-key: <your-key>" \
  -H "Content-Type: application/json" \
  -d '{
    "individualId": "ind_def-456",
    "ownershipPercentage": 25.00,
    "isControlPerson": false,
    "title": "Investor"
  }'

Response: 201 Created

{
  "id": "own_92",
  "uri": "/v1/businesses/{businessId}/owners/own_92",
  "individualId": "ind_def-456",
  "ownershipPercentage": 25.00,
  "isControlPerson": false,
  "title": "Investor",
  "status": "PENDING_VERIFICATION"
}

Ownership is re-validated on every write. The total across owners cannot exceed 100%.

Scenario 2: Add an authorized signatory

Link an authorized signer the same three ways as an owner. Make a POST request to /v1/businesses/{businessId}/signatories.

curl -X POST https://sandbox-api.prioritycommerce.com/v1/businesses/{businessId}/signatories \
  -H "x-api-key: <your-key>" \
  -H "Content-Type: application/json" \
  -d '{
    "individualId": "ind_ghi-789",
    "isPrimary": false,
    "isGuarantor": true,
    "title": "CFO"
  }'
📘

One control person, always

Across all owners and signatories, exactly one person must have isControlPerson: true. Zero or more than one is rejected. Ownership percentage is separate from control: a majority owner need not be the control person, and the control person need not own the most.

Scenario 3: Link one person as both owner and signatory

The same person can hold equity and be authorized to sign. Create the Individual once, then link the same individualId into both owners and signatories.

# Link as an owner
curl -X POST https://sandbox-api.prioritycommerce.com/v1/businesses/{businessId}/owners \
  -H "x-api-key: <your-key>" \
  -H "Content-Type: application/json" \
  -d '{ "individualId": "ind_abc-123", "ownershipPercentage": 60.00, "isControlPerson": true, "title": "CEO" }'
# Link the same person as a signatory
curl -X POST https://sandbox-api.prioritycommerce.com/v1/businesses/{businessId}/signatories \
  -H "x-api-key: <your-key>" \
  -H "Content-Type: application/json" \
  -d '{ "individualId": "ind_abc-123", "isPrimary": true, "isGuarantor": true, "title": "CEO" }'

Set isControlPerson on only one of the links; the control person is counted once across owners and signatories.

Scenario 4: Reuse an Individual across businesses

An Individual is shared and standalone: the same person can own one business and sign for another. Look the person up by your own reference, then link the returned individualId to the second business.

# Resolve the person by your external reference
curl "https://sandbox-api.prioritycommerce.com/v1/individuals?externalId=founder-jane-01" \
  -H "x-api-key: <your-key>"
# Link the resolved individualId as an owner of a different business
curl -X POST https://sandbox-api.prioritycommerce.com/v1/businesses/{otherBusinessId}/owners \
  -H "x-api-key: <your-key>" \
  -H "Content-Type: application/json" \
  -d '{ "individualId": "ind_jkl-321", "ownershipPercentage": 100.00, "isControlPerson": true, "title": "Owner" }'

The same SSN cannot back two separate owners on one business; reuse the single Individual instead. See Create an individual for the shared-person model.


Manage owners and signatories

Each person link has its own operations. Owners and signatories behave the same way, on their own paths.

Owners:

Signatories:


Request reference

FieldApplies toDescription
individual | individualIdOwner, signatoryExactly one way to identify the linked person.
ownershipPercentageOwnerThe person's stake, up to two decimals.
isControlPersonOwner, signatoryWhether the person holds significant managerial control. Exactly one across the business.
isPrimarySignatoryWhether this is the primary signer.
isGuarantorSignatoryWhether the signer personally guarantees.
titleOwner, signatoryThe person's role or title.

Owner and signatory KYB rules (identity, ownership totals, control person) are owned on Business validation & KYB rules; the exact rejection messages are on Underwriting exceptions.


Statuses

Each owner or signatory moves PENDING_VERIFICATION → VERIFIED (or ENDED once removed). Re-read the business to follow the change; there are no status webhooks. See Status lifecycle and Underwriting exceptions for resolving a rejected person.


Sandbox testing

Use the sandbox to add and verify people before going live. Re-read the business to confirm each person's status.

ScenarioTest dataExpected result
Add an ownerA valid individualId and a stake under 100%201 Created, status: PENDING_VERIFICATION
Control-person ruleTwo links both isControlPerson: trueSubmit-time validation error
Verification outcomeA test identity that passes or fails verificationstatus: VERIFIED or a rejection to resolve
🚧

PENDING-PUBLISH

The sandbox test identities that drive an owner or signatory to VERIFIED vs. a rejection are pending the boarding sandbox guide. Confirm before publish.


Go live

The shared pre-production checklist is in Getting Started. Specific to owners and signatories:

  • Every owner and signer has a primary ID (SSN or ITIN) plus a secondary government ID.
  • Exactly one person across owners and signatories is the control person.
  • Ownership totals satisfy the rule for the business's businessType.

Best practices

PracticeDescription
Create the person onceReuse a single individualId across owner and signatory roles and across businesses rather than resending identities.
Set the control person deliberatelyMark isControlPerson on exactly one person; it is independent of ownership percentage.
Keep ownership under 100%The total across owners cannot exceed 100%; reconcile stakes before you submit.
Read back to confirm statusRe-read the business to watch each person move to VERIFIED; there are no status webhooks.

Next steps

See also



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