KYC Submissions & Documents: Troubleshooting
KYC work in Orbit happens in three stages, and each one fails differently: the organization KYC form (who you are, reviewed by the Orbit ops team), the document library (the files carriers and regulators want, uploaded at Settings → Compliance → Documents), and the carrier-facing profile (the structured identity a carrier approves for a country and use case). This page maps the symptoms you actually see to the stage that emits them, and to the first check that resolves them. For the conceptual model see KYC Identity Model; for the happy-path walkthrough see KYC Profile Submission Runbook and KYC Documents & the Compliance-Profile Lifecycle.Symptom → stage map
Scan this table first, then jump to the matching section.Upload rejected: type or size
POST /compliance/documents accepts JPEG, PNG, WebP, and PDF, up to
10 MB, and only the eleven document types listed in
KYC Documents (id_card, passport,
business_registration, and so on). A 422 on upload is almost always one
of:
- A HEIC or scanned-TIFF export renamed to
.jpg. Re-export the scan as JPEG or PDF before uploading; the validator reads the file, not the extension. - A PDF export above 10 MB. Print-to-PDF at a lower resolution or split the document; the cap is per file.
- A document type that doesn’t match the file’s content. A VAT certificate
uploaded as
business_registrationis refused by the carrier later, even when the upload itself goes through, so pick the type the document actually is.
doc_… library ID every profile and registration
references, so fix the file before it enters the library rather than
detaching and re-uploading afterwards.
401 ORG_KYC_REQUIRED on send
Two different gates produce “the send failed for a compliance reason,” and they are owned by different stages:- The organization gate: your org’s KYC submission is missing, in
review, or rejected. This is the form at
POST /organization/kyc/submit, reviewed by the Orbit ops team. - The per-number Documents-KYC review: the org is approved, but the specific number or Sender ID lacks an approved compliance profile for its country. This is the surface described in KYC Documents.
If the status is
approved, stop looking at the org form: no amount of
re-submitting it changes a per-number result, and the number-side fix is a
profile and its documents, not your company details.
Profile stuck on pending_review
Org KYC submissions are reviewed by a human, in submission order, against
a one-business-day SLA from submitted_at. The same endpoint as above is
your queue view:
status: "pending_review" together with submitted_at, the
timestamp your current submission entered the queue. Compare
submitted_at against the SLA: inside one business day, the submission is
simply in line; past it with no reviewed_at, contact support with the
request_id rather than submitting again.
A pending_review you never caused is usually the automatic stamp placed
when your account’s email was verified, before any form was submitted.
The status response marks that case with a source field; it clears the
moment you submit the real form, which replaces the stamp with your
company details.
Carrier rejected: additional docs required
A Sender-ID registration that comes back “rejected — additional docs required” means the carrier reviewed the registration’sdocument_refs
and wants a specific one supplemented or refreshed. The registration
never holds files itself, only doc_… IDs, so the failing document is
always in your library:
- Open Settings → Compliance → Documents and locate the
doc_…ID the registration references for that country. - Re-upload the refreshed or corrected file against that same
doc_…entry so every profile and registration that references the ID keeps pointing at the current file. Correct the thing the carrier named: wrong document type, unreadable scan, or an address that no longer matches the registered business name. - Confirm the document’s role (
id_proof,address_proof,business_doc,authorization,other) matches the requirement the carrier flagged, then watch the registration status move back through review.
The
doc_… ID is the single pointer shared by every profile and
registration in your organization. That is why the fix is to refresh the
document behind the ID, not to delete and recreate it: a deleted ID
leaves dangling references on every profile that used it, and deletion
is refused while any profile still attaches the document.doc_… entry and attach it in the role the carrier asked for, per
KYC Documents.
10DLC brand rejection that is really KYC
A US 10DLC brand rejection is a verdict on your business identity, so a share of brand rejections are KYC/KYB misses wearing a brand-error costume. Two tells:- EIN / registration-number mismatch. The
registration_numberandcompany_nameon your KYC submission must match what the EIN lookup returns, character for character. “Acme GmbH” submitted while the registration says “ACME GMBH” fails the brand vet the same way it fails a bank’s check. Fix the org details and resubmit the KYC form (resubmission is open while your status isrejected), then re-file the brand. - Sanctioned-party screen. The denied-parties screen runs against your
legal name and declared beneficial owners at KYC submit. A match puts
the org into manual review, and the brand follows the org. This is not
something you fix by editing campaign text; contact support with your
request_id.
Renewal and expiry
Documents age out. Orbit stores anexpires_at per attached document,
and once a document lapses it stops counting toward the country’s
requirements, even though the file is still in your library. The visible
symptom is that numbers which used to send fine start failing preflight:
the regulatory preview flips
compliance_profile_satisfies to false, and a number waiting on that
profile can sit at pending_compliance or be auto-released if the
carrier’s verify-by deadline passes. See
Number Lifecycle for the release side.
Find what is expiring before or after the fact with the expiry feed:
suggested_action of renew (inside your alert window) or
renew_or_release (already lapsed). The recovery path is the renewal
flow from KYC Documents:
- Upload the current replacement document.
- Attach it to the affected profile in the same role as the one expiring.
- Detach the expired document (and delete it only after detaching).
renew prompts without
curl.
See also
- KYC Profile Submission Runbook — the submit-to-approval walkthrough this page troubleshoots.
- KYC Documents & the Compliance-Profile Lifecycle — the document library, roles, and renewal model.
- Regulatory Preview — see which fields and documents a country requires before a purchase or send fails on them.
- 10DLC Rejections & Revet — the carrier verdict-code decoder for US brands and campaigns.