Skip to main content

Regulatory Preview

Many countries regulate who can hold a phone number and require identity or address documentation before activation. The regulatory-preview endpoint surfaces those requirements inline, before checkout — so you can show an at-a-glance “Documents needed” disclosure instead of forcing the buyer into the compliance wizard to discover the list.

Query parameters

How checkout uses this

Call this endpoint before you let a buyer commit to a purchase. The Orbit dashboard does exactly this on the Numbers → Buy page: as soon as you pick a country and number type, it calls GET /numbers/regulatory-preview and renders the response as an inline disclosure on the checkout form — before you click Buy. Build the same flow into any custom purchasing UI:
  1. Buyer picks a country and number type.
  2. Your UI calls regulatory-preview with those two values.
  3. Render one of two panels from the response:
    • unregulated: true → an “instant activation” panel. No documents, no review wait.
    • unregulated: false → a “Documents needed” disclosure listing fields and document_roles, plus the expected review window from activation_eta.
  4. Use compliance_profile_satisfies to decide the call to action:
    • true → show “Your profile covers this” and let the purchase proceed.
    • false → link the buyer into the compliance wizard before they buy, so money is never debited into an inactive number.
Because the endpoint answers “what will this country ask for?” rather than “what did this tenant already submit?”, it is safe to call it as early as the country picker — you do not need a number selected first.

Unregulated vs regulated

The response has two binary shapes. Read unregulated first.

Unregulated — unregulated: true

Some markets (for example the United States) impose no carrier or registry document requirements for local numbers. The preview returns empty requirement lists and no review window:
Render your “instant activation” state and skip the compliance wizard entirely. compliance_profile_satisfies is true here because nothing needs satisfaction.

Regulated — unregulated: false

Most of Europe (and much of APAC/LATAM) requires documentation. Germany is one of the heavier sets — identity, address, and business documents:
Here the buyer needs identity proof, a proof of address, and a business document. Two tenants can both preview Germany and see different compliance_profile_satisfies values: the flag is evaluated against your compliance profiles on every call, while the requirements themselves are tenant-agnostic. A false means “you haven’t completed this country’s profile yet” — not “nobody can buy this number.” You can also pin provider to compare carriers. The default unioned response (provider: "platform") returns the strictest combined requirement set, which is what the purchase gate will actually enforce.

Response

Fields

Field-to-KYC mapping

document_roles names the document categories a country expects; the files themselves live in your KYC document library. Map each role back to the upload type you registered the document with, then attach it to the compliance profile by its doc_… ID under that role: A document only satisfies a role while it is non-expired. When a required document lapses, compliance_profile_satisfies flips to false on the next preview call even if nothing else changed. Structured fields (business name, address, tax ID) map to the profile’s data — set them with PUT /compliance/compliance-profiles/:id/data, and re-run the preview after each update to confirm the flag flipped to true.
Carrier regulatory schemas are cached for 24 hours (they change on quarterly cycles), but the compliance_profile_satisfies check runs on every request against your profiles, scoped to your organization — so attaching a new profile updates the flag immediately.
A compliance_profile_satisfies of false for a regulated country means a purchase would land at pending_compliance and require you to attach an approved compliance profile before the number activates. Check this flag before buying to avoid a debited-but-inactive number.

After purchase: the pending_compliance state

If you do buy with compliance_profile_satisfies: false, the number is debited but held at pending_compliance — it routes nothing until you attach an approved profile. Two follow-on behaviors to plan for:
  • Carrier deadline. The carrier sets a verify-by window on the order. If the window expires while the number still waits, it can be auto-released and the inventory returned. Watch the document-expiry alerts banner to see the deadline before it costs you the number.
  • Recovery. Complete the profile, attach it to the number, and activation proceeds without a second purchase. The lifecycle is documented in Number Lifecycle.
Because the requirements schema is cached for 24 hours, a brand-new carrier requirement may lag behind the preview by up to a day — but your own eligibility (compliance_profile_satisfies) always reflects your profiles as of the current call, never a cached snapshot.

Uploading the documents this check counts

document_roles tells you which document categories the carrier wants (e.g. id_proof, address_proof); the actual files are uploaded once into your KYC document library, attached to a compliance profile by their doc_… IDs, and flagged here as satisfied only while they remain non-expired. See KYC Documents & the Compliance-Profile Lifecycle for upload, reuse, and renewal.