Skip to main content
This guide is for Paxos partners who are building products for their own end users using Paxos infrastructure. You are responsible for managing your users’ onboarding experience — including collecting information, presenting the right flows at the right time, and handling lifecycle events on their behalf. Paxos does not interact with your end users directly. The status_details object on GetIdentity and ListIdentities responses gives you a structured breakdown of why an identity is in a given state and what — if anything — needs to happen next. Use it to drive onboarding and lifecycle management flows, surface actionable messaging to your users, and respond to lifecycle events.

➊ Check the Identity Status

The top-level status field tells you the overall state of the identity. Use this to gate access to your integration.
{
  "id": "f190b163-208f-4d73-8deb-4fb8b24add00",
  "status": "PENDING",
  ...
}
StatusMeaning
PENDINGUnder review. The identity cannot transact yet.
APPROVEDPassed all verifications. Full access to integrations.
DENIEDFailed review. Cannot be used with integrations.
DISABLEDPreviously approved but off-boarded. Restricted or entirely disabled access to integrations.
ERRORFrozen for compliance reasons. Entirely disabled access to integrations.
summary_status returns the same values as status and is deprecated. Use status going forward.

➋ Check for Active Controls

status_details.active_controls lists any restrictions currently applied to the identity. An identity can satisfy all requirements and still have controls limiting what it can do.
"active_controls": [
  {
    "id": "ctrl-001",
    "type": "SELL_ONLY",
    "set_by": "SET_BY_PAXOS",
    "is_overridable": false,
    "reason_code": "COMPLIANCE_KYC",
    "reason": "Prohibited risk rating",
    "created_at": "2026-04-10T08:00:00Z"
  }
]
FieldDescription
typeThe restriction applied: SELL_ONLY, FROZEN, DORMANT, or CLOSED.
set_bySET_BY_PAXOS — set by Paxos, contact Support to resolve. SET_BY_CLIENT — set by your application.
is_overridableWhether your application can remove this control via the Identity Controls API.
reasonHuman-readable explanation of why the control was applied.
An empty active_controls array means no controls are in effect.

➌ Read Requirements

status_details.requirements lists all outstanding requirements — both pending and failed — that are affecting the identity’s status.
"requirements": [
  {
    "type": "KYC_REFRESH",
    "status": "FAILED",
    "awaiting_action_from": "CLIENT",
    "errors": [
      {
        "code": "kyc_refresh_overdue",
        "description": "KYC refresh has expired."
      }
    ]
  },
  {
    "type": "SCREENING_CHECK",
    "status": "PENDING",
    "awaiting_action_from": "PAXOS",
    "errors": [
      {
        "code": "screening_in_progress",
        "description": "Screening check is in progress."
      }
    ]
  }
]

Determine who needs to act

Use awaiting_action_from to decide whether your application needs to do something or simply wait:
awaiting_action_fromWhat to do
CLIENTYour application needs to take action — for example, initiating a KYC refresh flow or submitting additional documentation.
PAXOSPaxos is processing. No action is needed from your side.
Not presentApplies to MEMBERS type only — check institution_members in the response for member-level detail.

Understand the requirement status

statusMeaning
PENDINGNot yet resolved. Could be under Paxos review (awaiting_action_from: PAXOS) or waiting on your application (awaiting_action_from: CLIENT).
FAILEDA verification did not pass. May or may not require action — check awaiting_action_from.

Use errors for debugging — not user messaging

The errors array is intended for developer use. The code field is a machine-readable enum useful for logging and routing logic. Do not expose code or description directly to end users.
Additional error codes may be added in the future. Build your integration to handle unknown codes gracefully.

Available error codes

  • identity_verification_required
  • identity_verification_failed
  • document_upload_required
  • document_verification_failed
  • screening_in_progress
  • screening_failed
  • compliance_review_required
  • compliance_review_failed
  • edd_documentation_required
  • member_verification_pending
  • member_verification_failed
  • tin_not_found
  • kyc_refresh_required
  • kyc_refresh_overdue
{
  "type": "KYC_REFRESH",
  "status": "FAILED",
  "awaiting_action_from": "CLIENT",
  "errors": [
    {
      "code": "kyc_refresh_overdue",
      "description": "KYC refresh has expired."
    }
  ]
}
As the partner, you are responsible for crafting user-facing copy. Use the combination of type, awaiting_action_from, and status to determine what to show. See some examples below:
typeawaiting_action_fromstatusExample user-facing message
AnyPAXOSPENDING”Your account is under review.”
ID_VERIFICATIONCLIENTPENDING”Please complete identity verification.”
DOCUMENT_VERIFICATIONCLIENTFAILED”Document verification was not successful. Please resubmit.”
KYC_REFRESHCLIENTFAILED”Your information needs to be updated.”
ENHANCED_DUE_DILIGENCECLIENTPENDING”Additional documentation is required to continue.”
TAX_DETAILS_VERIFICATIONCLIENTFAILED”Please verify your tax details.”
MEMBERSFAILED”One or more account members require attention.”

Requirement types

TypeApplies toDescription
ID_VERIFICATIONPersonGovernment-issued ID verification. Required to confirm the identity of the person. See Required Details.
DOCUMENT_VERIFICATIONInstitutionBusiness document review. Required to verify the legal entity. See Required Details.
SCREENING_CHECKBothBackground screening check. Paxos screens identities as part of the onboarding process. No action is typically required from the client.
COMPLIANCE_CHECKBothInternal compliance review. Paxos is reviewing the identity and no action is required from the client.
ENHANCED_DUE_DILIGENCEBothEnhanced due diligence review. Required for higher-risk identities. Your application must submit additional documentation to proceed. See Enhanced Due Diligence.
KYC_REFRESHBothPeriodic re-verification of identity information. Required when an identity’s information has expired. See Periodic KYC Refresh.
TAX_DETAILS_VERIFICATIONBothTax identification number verification. Required to validate the identity’s tax details on file.
MEMBERSInstitutionOne or more institution members have outstanding requirements. Check institution_members in the response for details on which members are failing or pending.

Handling the MEMBERS requirement

When type is MEMBERS, check the top-level institution_members array in the response to see which members are failing or pending:
"institution_members": [
  {
    "id": "m1",
    "identity_id": "b8e1f234-0011-4abc-9900-aabbccddeeff",
    "name": "John Doe",
    "roles": ["BENEFICIAL_OWNER"],
    "summary_status": "DENIED"
  },
  {
    "id": "m2",
    "identity_id": "c9f2a345-1122-5bcd-aa11-bbccddeeff00",
    "name": "Jane Doe",
    "roles": ["CONTROL_PERSON"],
    "summary_status": "APPROVED"
  }
]
Call Get Identity on each member’s identity_id to retrieve their individual status_details and requirements.

Staying up to date with webhooks

The identity_summary_status_change webhook fires when an identity’s overall status changes and includes status_details.requirements in the Event API response.
Note: this webhook fires on status changes only — not every time an individual requirement changes within a stable status. Call Get Identity to retrieve the latest requirements at any point.

Migration from Deprecated Fields

The following fields are deprecated and will be removed in a future release. Migrate to status and status_details.requirements instead.
Deprecated fieldReplacement
summary_statusstatus
user_disabledstatus_details.active_controls
admin_disabledstatus_details.active_controls
id_verification_statusstatus_details.requirements
sanctions_verification_statusstatus_details.requirements
document_verification_statusstatus_details.requirements
summary_tin_verification_statusstatus_details.requirements
Questions? Contact Support.