What a company contains
Company ID vs. external ID
ArcenPay assigns every company an internal ID with thecm_... prefix. When you create a company, you can also pass your own id field — this is stored as the externalId and lets you resolve companies using your own identifiers.
Most API operations accept either the ArcenPay internal ID or the external ID for resolution. Entitlement checks can also resolve by wallet or email.
Creating companies
Companies can be created in three ways:- Via the dashboard — under Companies, click New Company.
- Via the API —
POST /api/v1/companieswith name, wallet, email, and optional traits. - Via
ArcenClient.identify()— the Node SDK’sidentify()call upserts company and user records atomically.
Wallet uniqueness
Each wallet address can only belong to one company in a team. If you try to create a company with a wallet that already exists, the API returns409 with the conflicting companyId.
Plan assignment
A company’sactivePlan determines its subscription. You can assign or change plans via:
PATCH /api/v1/companies/:idwithactivePlanIdfor manual assignmentPOST /api/v1/companies/planfor subscription plan changes (upgrade/downgrade)POST /api/v1/subscriptions/activatefor first-time on-chain activation
Traits and targeting
Traits are arbitrary key-value pairs stored on the company record. They’re used by feature flag rules for conditional targeting — for example, enabling a feature only for companies wheretraits.plan === "enterprise".
SDK methods
Company deletion is dashboard-managed;
ArcenClient does not expose a delete method.
See the Companies API reference for full endpoint details.
Next steps
- Subscriptions — understand how subscriptions activate against a company
- Entitlements — how a company’s access is resolved at runtime
- Feature flags — target companies with flag rules and overrides

