Get started

How ShipRev works

The objects you meet in ShipRev, what the API and the SDK call them, and how they meet on one customer record.

ShipRev keeps identity, subscriptions, metering and entitlements on one customer record: the buyer organization. An end user signs in as a member of it, it holds the subscription, your backend rules on its entitlements, and its usage is counted against the allowance its plan grants. This page names every object involved, in three layers, and follows one request through them.

The object model

Your side, what you sell, and your buyers. Everything in the lower two layers belongs to one application.

The same relations as text:

text
Your side
  Your organization ──▶ Application (project_id)
                         ├──▶ Sign-in gate ──▶ brand domains
                         └──▶ SDK and API keys

What you sell (per application)
  Product ──▶ Plan ──▶ Plan version ──▶ Entitlement rule ──▶ Capability

Your buyers (per application)
  Buyer organization (organization_id)
    ├──▶ Members (end-user accounts)
    ├──▶ Subscription ──▶ Plan version
    ├──▶ Wallet
    ├──▶ Invoices
    └──▶ Entitlement snapshot ──▶ Ruling (in your process)
  Usage event ──▶ Buyer organization, Capability

Your side

These belong to you and your team. On ShipRev Cloud you manage them in the developer console and in each application's operator console.

ObjectWhat it isIn the API and the SDK
Your organizationYour team. Members are invited and hold one of four roles, owner, admin, member or viewer, for all of your applications or for oneRoles OWNER, ADMIN, MEMBER, VIEWER
ApplicationOne product you sell, with its own end users, plans and payments. On ShipRev Cloud it runs in the region it was created in, which cannot be changed laterA project: project_id
Sign-in gate and brand domainsThe sign-in configuration your end users go through, served on a domain of yours. A gate serves one application by default; it can instead serve several of your applications, so that one sign-in covers themPicked from the host name each request arrives on
SDK and API keysMachine credentials. The SDK key is the one credential your backend needs; management API keys are for your own systems. Both can be created, narrowed to one application, rotated and revokedScope SDK for the SDK key

Your team and your end users are kept apart: the operator console does not accept end-user credentials, and your end users' sign-in does not accept your team's.

What you sell

You describe what you sell once per application, in the operator console or through the Management API.

ObjectWhat it isIn the API and the SDK
ProductWhat a plan sells: a base product, or an add-on to oneProduct type base or add-on
CapabilityA key your code rules on and reports, such as report_exports. It is either counted or simply granted, and has an overage policy: what happens beyond the allowancecapability_key; type count or boolean; overage policy block, allow and bill, or prompt to upgrade
PlanA tier of a product, such as Pro, or an add-on plan bought on top of onePlan type primary or add-on
Plan versionThe price, currency and billing interval of a plan, with its entitlement rules. A published version is read-only: a change is a new version, and existing subscribers stay on the version they subscribed toversion
Entitlement ruleWhat one plan version grants for one capability: an allowance, and whether it resets every month or neverAllowance and reset interval

When a payment account is connected, publishing a plan version creates the matching product and price on your Stripe account.

Your buyers

These are created as your end users sign up, subscribe and use your product. Every one of them belongs to a buyer organization.

ObjectWhat it isIn the API and the SDK
Buyer organizationOne customer of your application. Signing up creates an account, a buyer organization and the membership between them; an end user who signs up from an invitation joins the inviting organization insteadorganization_id, in session tokens, rulings and usage events
MembersThe end-user accounts in a buyer organization. One account can belong to several organizations and switch between themaccount_id
Session tokenWhat ShipRev issues to an end user who signs in. It names the account, the buyer organization and the application; your backend verifies itTokenClaims from verifyToken()
SubscriptionThe buyer organization's subscription to one plan versionsubscription_id
InvoicesOne record for each payment collected on the subscription, paid or failed. A record is not changed after it is writtenInvoice records
WalletA prepaid balance the buyer organization tops up, with its transaction historyOne wallet per buyer organization
Usage eventOne report of consumption from your backend: which organization, which capability, how much, whenreportUsage(), usage_event_id
ReservationAn amount held before work whose cost is known only afterwards, then confirmed or released; an unsettled one is reclaimed when it expiresreserve(), confirm(), release()
Entitlement snapshotWhat the buyer organization may use right now: for each capability, the allowance of the current period and what is used. The Server SDK keeps the snapshots of all your buyer organizations in memory, as the mirrorsnapshot_revision
RulingThe answer to "may this organization do this now?", made by the Server SDK in your process from the mirrorRuling: allowed, remaining, limit, source, reason

One request, from sign-in to the usage count

Follow an end user who exports a report in your product:

  1. Sign-in. The end user signs in on your brand domain, through the hosted page or the React components. ShipRev issues a session token for their account, their buyer organization and your application.
  2. The request. Your frontend calls your backend with Authorization: Bearer <session token>.
  3. Who is calling. Your backend verifies the token with verifyToken(), locally, and reads organization_id from the claims. It never takes the organization from anything else the caller sends.
  4. May they do it. Your backend calls adjudicate() for that organization and the capability report_exports. The Server SDK rules from the organization's snapshot in its mirror: the snapshot follows from the organization's subscription, the plan version it is on, and that version's entitlement rules.
  5. Do the work and report it. If the ruling allows it, your backend does the export and calls reportUsage() with the same organization_id.
  6. The count. Your application's region counts the event against the organization's allowance for report_exports. Later rulings show what is left in remaining.

When the organization's subscription changes, for example to a plan with a larger allowance, the region pushes the change and the Server SDK refreshes that organization's snapshot without a restart of your process. Where the rules run explains the mirror, the push and what happens while the region is unreachable; Backend and the Server SDK has the code.

Where each product picks up

© 2026 ShipRev