Skip to main content
Use the identity methods to run KYC for Identity API integrations: capture the required customer data in your own UI, submit it through the SDK, and bring the customer to a verified state. The client handles authentication for you — no raw access token is required.
These identity methods are deprecated. Use the Customer API instead, which keys on customerId instead of a separate identity resource. Build new integrations against the Customer API, and migrate existing integrations before MoonPay removes these methods.
The six methods wrap the Identity API endpoints and follow the same Result pattern as the rest of the client:
The identity methods require an authenticated client. Run client.getConnection() with skipKyc: true first, and authenticate the customer with client.setupAuth() when the status is "connectionRequired".
For the field and document requirements by country, see KYC data requirements.

client.createIdentity()

createIdentity() is deprecated. Customers are created automatically now, so call getCustomer directly instead.
Create an identity for the connected customer. The response lists the requirements you need to fulfil before verification.
Create an identity

createIdentity() parameters

createIdentity() result

Returns a Result<{ data: Identity | null }, DevPlatformApiError>. data is null (HTTP 204) when the customer has no outstanding requirements — they are already onboarded.

client.getIdentity()

getIdentity() is deprecated. Use getCustomer instead.
Fetch the identity, including the current status and requirement states.
Get an identity

getIdentity() parameters

getIdentity() result

Returns a Result<{ data: Identity }, DevPlatformApiError>.

client.updateIdentity()

updateIdentity() is deprecated. Use submitCustomerKyc instead.
Submit one or more outstanding requirements on the identity. Each top-level field maps to a requirement category — submit the categories listed as incomplete in requirements.
Update an identity

updateIdentity() parameters

updateIdentity() result

Returns a Result<{ data: Identity }, DevPlatformApiError> reflecting the updated requirement states.

client.verifyIdentity()

verifyIdentity() is deprecated and has no direct replacement call. Customer API verification starts automatically once you submit the last outstanding requirement. See the Customer API guide for the flow.
Submit the identity for verification once all requirements are complete.
Verify an identity
When the status is "challengeRequired", pass challenge.url to client.setupChallenge(). The challenge completes with flow: "identity" and the identityId.

verifyIdentity() parameters

verifyIdentity() result

Returns a Result<{ data: IdentityVerificationResponse }, DevPlatformApiError>.

client.getIdentityUploadUrl()

getIdentityUploadUrl() is deprecated. Use getCustomerUploadUrl instead. See Upload a file in the Customer API guide for the replacement flow.
Issue a presigned URL to upload an identity document. Upload the file with an HTTP PUT to the returned url, sending the returned headers.
Upload a document

getIdentityUploadUrl() parameters

getIdentityUploadUrl() result

Returns a Result<{ data: IdentityFileUploadUrl }, DevPlatformApiError>.

client.submitIdentityFiles()

submitIdentityFiles() is deprecated. Use submitCustomerFiles instead. See Upload a file in the Customer API guide for the replacement flow.
Confirm one or more uploaded documents so MoonPay processes them against the identity’s requirements.
Submit uploaded documents

submitIdentityFiles() parameters

submitIdentityFiles() result

Returns a Result<{ data: Identity }, DevPlatformApiError> reflecting the updated requirement states.

Shared types

Identity

IdentityStatus

"created", "collecting", "verifying", "challengeRequired", "approved", "rejected", "manualReview", or "blocked".

Requirements

Each category is present when it applies to the customer’s jurisdiction, with a status of "incomplete" or "complete" and, for field-based categories, the requiredFields still outstanding.

Errors

All identity methods return the standard MoonPay Platform API error shape, DevPlatformApiError, with code, message, and optional field-level errors. Notable codes: "requirements_incomplete" when verifying too early, "verification_rejected" on a terminal rejection, and "country_mismatch" when submitted data conflicts with the declared country.