Company object
Company ID vs. external ID
ArcenPay assigns every company an internal ID with thecm_... prefix. This is separate from the externalId field, which holds the ID from your own system (whatever you pass as id when creating or identifying the company). Most API calls that look up a company — such as GET /api/v1/companies/:id — accept the ArcenPay internal ID. Entitlement checks and access-token minting accept either the external ID, wallet, or email for resolution.
string
ArcenPay’s internal company ID, prefixed
cm_....string | null
Your system’s ID for this company, set via the
id field at creation time.string
Display name for the company.
string | null
Wallet address associated with this company. EVM addresses are stored lowercased; Stellar (
G…/C…) and Solana (base58) addresses are stored exactly as signed.string | null
Billing or contact email for this company.
object | null
The currently assigned catalog plan, or
null if no plan is active.object
Arbitrary key-value metadata. Use this to store attributes from your own system.
array
Resolved entitlements for this company, returned from
GET /api/v1/companies/:id. Each entry contains featureKey, value, reason, allocation, usage, and exceeded.List companies
GET /api/v1/companies returns a paginated list of companies in your team, ordered by most recently seen.
number
Number of results to return. Defaults to 50, maximum 200.
string
Pagination cursor from the previous response’s
nextCursor. Must be a non-empty string.string
Case-insensitive search across name, email, and wallet address.
Get a company
GET /api/v1/companies/:id returns full company detail including active plan, entitlements, add-on grants, users, and overrides.
:id parameter is the ArcenPay internal cm_... company ID.
Create a company
POST /api/v1/companies creates a new company record.
string
required
Display name for the company. Maximum 128 characters.
string
Your system’s external company ID. Stored as
externalId. Maximum 64 characters.string
Wallet address: EVM 20-byte hex (
0x...), Stellar (G... account or C... contract), or Solana base58. Returns 409 if another company in your team already has this wallet.string
Company email address. Maximum 254 characters, must be a valid email format.
object
Arbitrary key-value metadata. Must be a plain object (not an array).
string
URL for the company’s logo.
201 with { "data": { ...company } }.
If you pass a
wallet that already belongs to another company in your team, the endpoint returns 409 with the conflicting companyId so you can resolve the mapping.Update a company
PATCH /api/v1/companies/:id updates the company’s name, traits, active plan assignment, or add-on IDs. All fields are optional — only the fields you include are updated.
string
New display name. Maximum 128 characters.
object
Traits to merge into the existing traits object. Existing keys not included in this update are preserved.
string | null
Assign or unassign the active catalog plan. Pass
null to remove the plan assignment.string[]
Replace the full list of active add-on IDs for the company.
Delete a company (dashboard only)
DELETE /api/v1/companies/:id permanently removes a company and its associated data. This is a dashboard-managed operation — ArcenClient does not expose it, and it should not be scripted from your application. Remove customers from Customers → Companies in the dashboard (requires a catalog:write session role).
Returns { "ok": true } on success. Returns 404 if the company does not exist in your team.

