Skip to main content
A verification profile is the set of KYC or KYB requirements SpherePay needs to approve a customer — individual or business — for a group of products. Each profile unlocks its own products and assets. A customer can hold several profiles at once, and each one moves through its own statuses independently. Profiles are returned in the verificationProfiles array of GET /v2/customer/{id}. Monitoring them is the primary way to determine whether a customer is ready to transfer on a given rail.

Available profiles

Your application is enabled for a set of profiles by SpherePay. Each customer is evaluated against the profiles you select for them with enabledVerificationProfiles — see Selecting profiles.
When SpherePay enables a new profile for your application, existing customers are not enrolled automatically. Verifying a customer for an additional profile has a cost, so you add the profile explicitly with PATCH /v2/customer/{id}. See Add a profile to an existing customer.
Profile selection applies to customers you onboard through the API. Customers onboarded through hosted KYC links are enrolled in your application’s default profiles; enabledVerificationProfiles is not available on the hosted flow.

Verification statuses

The status field on a verification profile has five possible values.

Status lifecycle

  • The customer starts in incomplete. The criteria.required array lists all outstanding requirements for that profile.
  • Once every requirement is fulfilled, SpherePay submits the customer for review and the profile moves to pending. No submit call is needed.
  • The review completes and the profile moves to approved, rejected, or resubmission_required.
  • Each profile moves on its own. Profile C can reach approved while profile A is still pending on the same customer.
A customer is submitted for review only once every enabled profile has an empty criteria.required. If you enable two profiles, supply the requirements for both before expecting either to leave incomplete.

Verification criteria arrays

Each verification profile contains a criteria object with four arrays. Requirements shared between profiles are satisfied once for all of them. If a customer already holds an approved profile A, adding profile C only asks for the criteria C needs that A did not.

How to check verification status

Poll GET /v2/customer/{id} to detect when a profile reaches approved, then proceed with payment method registration and transfers on the rails that profile unlocks.

Webhook events

Instead of polling, subscribe to customer webhook events. SpherePay emits one event per verification profile per status change — customer.pending, customer.approved and customer.rejected — and data.verificationProfile names the profile that changed, for example kyc_profile_c or ubo_kyc_profile_a. A customer with two profiles produces two independent event streams, so key your handling on the profile name, not only on the customer ID.

Requirements by profile

Each profile evaluates its own set of criteria. Expand a customer type to see which profiles evaluate each item and how to satisfy it.
Each item in the criteria arrays corresponds to a requirement. The columns show which profiles evaluate it.
Each representative has its own ubo_kyc_profile_* entry, returned on GET /v2/business-representative/{id}. Documents for a representative are uploaded with target="business-representative".See EEA+ businesses for the full associated-person requirements.

Handling rejected customers

A rejected status means SpherePay could not approve the customer for that profile. The customer cannot transact on the products that profile unlocks; other approved profiles on the same customer are unaffected. If a customer is incorrectly rejected or requires re-review, contact support@spherepay.co with the customerId and the profile name.

Selecting profiles

How enabledVerificationProfiles works and what the API returns.

Onboard a customer with profiles

Choose profiles at creation and add one to an existing customer.

Remove a profile

Drop a profile a customer no longer needs.

Individual KYC

Step-by-step guide for onboarding individual customers via API.
Last modified on September 30, 2026