Skip to main content
Enterprise feature. Contact us for access.
This quickstart guide walks you through registering a user, uploading documents, and fetching document details using Crossmint’s APIs. These steps enable your users to access regulated products like onramp, offramp, and regulated transfers.
1

Create and register user information

Register a user with Crossmint by specifying their userLocator, their personal details, and KYC data using the Create User endpoint
const userLocator = "userId:johnd-123"; 

const options = {
    method: 'PUT',
    headers: {'X-API-KEY': '<x-api-key>', 'Content-Type': 'application/json'},
    body: JSON.stringify({
        userDetails: {
            firstName: "John",
            lastName: "Doe",
            dateOfBirth: "1995-01-01",
            countryOfResidence: "DE"
        },
        kycData: {
            addressOfResidence: {
                line1: "123 Hauptstrasse",
                line2: "Apt 5",
                city: "Berlin",
                postalCode: "10115"
            },
            email: "[email protected]",
            identityDocument: {
                type: "passport",
                number: "AS12321"
            }
        }
    })
};

fetch(`https://staging.crossmint.com/api/2025-06-09/users/${userLocator}`, options)
    .then(response => response.json())
    .then(response => console.log(response))
    .catch(err => console.error(err));
Calling this endpoint again with the same userLocator will update the existing user’s information.
2

Upload a document

Upload identity or supporting documents for the user using the Upload Document endpoint. Documents are associated with the user via their userLocator.
const options = {
    method: 'POST',
    headers: {'X-API-KEY': '<x-api-key>', 'Content-Type': 'application/json'},
    body: JSON.stringify({
        userLocator: "userId:johnd-123",
        documentType: "id-passport",
        data: "<base64-encoded-image>",
        expiresAt: "2026-05-30"
    })
};

fetch('https://staging.crossmint.com/api/2025-06-09/documents', options)
    .then(response => response.json())
    .then(response => console.log(response))
    .catch(err => console.error(err));
Supported document types:
  • Identity documents: id-ssn, id-passport, id-idcard-front, id-idcard-back
  • Supporting documents: proof-of-address, proof-of-income
Calling this endpoint again with the same userLocator and documentType will update the existing document’s registered information.
3

Fetch document details

Retrieve the details of a previously uploaded document using its documentId using the Get Document endpoint.
const documentId = "a123...";
const url = `https://staging.crossmint.com/api/2025-06-09/documents/${documentId}`;

const options = {
    method: 'GET',
    headers: {
        'X-API-KEY': '<x-api-key>'
    }
};

try {
    const response = await fetch(url, options);
    const data = await response.json();
    console.log(data);
} catch (error) {
    console.error(error);
}

Launching in Production

For production, the steps are almost identical, but some changes are required:
  1. Create a developer account on the production console
  2. Create a production server API key on the API Keys page with the API scopes users.create, users.read
  3. Replace your test API key with the production key
  4. Replace staging.crossmint.com with www.crossmint.com in the API URLs

Learn More