User Identification
Verify user identity by submitting identity documents and face photos to increase transfer limits and unlock features.
User identification is required for increased limits and certain features as per regulatory requirements.
What is User Identification?â
User Identification API allows you to:
- đ Submit identity documents (ID, passport, residence permit)
- đ¸ Provide face photos for identity verification
- â Verify user identity to unlock features
- đ Increase transfer limits after successful verification
Identification Processâ
Workflow
Status Flow
| Status | Description | Next Action |
|---|---|---|
waiting | Request created, awaiting documents | Upload documents & photos |
processing | Documents uploaded, being processed | Wait for review |
pending | Queued for manual review | Wait for support |
reviewed | Reviewed by support | Check comment field |
Quick Start Exampleâ
async function identifyUser(userId) {
// 1. Create identification request
const request = await api.createIdentificationRequest(userId);
console.log(`Request ID: ${request.id}`);
console.log(`Status: ${request.status}`); // "waiting"
// 2. Create identity document
const document = await api.createIdentityDocument(request.id, {
type: 'identity_card',
personal_number: '12345678901',
first_name: 'John',
last_name: 'Doe',
date_of_birth: '1990-01-15',
country: 'LT'
});
// 3. Upload document images (front & back)
await api.uploadDocumentImage(document.id, 0, frontImageBlob);
await api.uploadDocumentImage(document.id, 1, backImageBlob);
// 4. Upload face photo
await api.uploadFacePhoto(request.id, 0, facePhotoBlob);
// 5. Submit for review
await api.submitIdentificationRequest(request.id);
console.log('â
Submitted for review');
// 6. Poll for result
return await waitForReview(request.id);
}
async function waitForReview(requestId) {
while (true) {
const request = await api.getIdentificationRequest(requestId);
if (request.status === 'reviewed') {
console.log(`Review complete: ${request.comment}`);
return request;
}
await new Promise(resolve => setTimeout(resolve, 60000)); // Check every minute
}
}
Supported Documentsâ
Identity Card
- Type:
identity_card - Images Required: Front and back
- Most Common: EU countries
Passport
- Type:
passport - Images Required: Main page with photo
- International: All countries
Residence Permit
- Type:
residence_permit - Images Required: Front and back
- For: Non-citizens residing in country
Image Requirementsâ
Document Photos
- â Clear and legible - All text must be readable
- â Full document - All edges visible
- â Good lighting - No shadows or glare
- â High resolution - Minimum 1200x900 pixels
- â No filters - Original unedited photos only
Face Photos
- â Face clearly visible - Front-facing, eyes open
- â Good lighting - Natural or bright light
- â Neutral background - Plain wall preferred
- â Recent photo - Taken within last 6 months
- â No accessories - Remove sunglasses, hats
Advanced Topicsâ
API Endpoints
Identification Requests
| Endpoint | Method | Description |
|---|---|---|
/rest/v1/user/{id}/identification-request | POST | Create request for user |
/rest/v1/identification-request | POST | Create request with phone |
/rest/v1/identification-request/{id} | GET | Get request details |
/rest/v1/user/{id}/identification-requests | GET | List user's requests |
/rest/v1/identification-request/{id}/submit | PUT | Submit for review |
Identity Documents
| Endpoint | Method | Description |
|---|---|---|
/rest/v1/identification-request/{id}/identity-document | POST | Create document |
/rest/v1/identity-document/{id}/image/{order} | PUT | Upload document image |
Face Photos
| Endpoint | Method | Description |
|---|---|---|
/rest/v1/identification-request/{id}/face-photo/image/{order} | PUT | Upload face photo |
Best Practices
1. Validate Images Before Upload
function validateImage(file) {
// Check file size (max 10MB)
if (file.size > 10 * 1024 * 1024) {
throw new Error('Image too large (max 10MB)');
}
// Check file type
if (!['image/jpeg', 'image/png'].includes(file.type)) {
throw new Error('Only JPEG and PNG allowed');
}
return true;
}
2. Provide User Guidance
const requirements = {
document: [
'Take photo in good lighting',
'Ensure all text is readable',
'Include all document edges',
'Avoid shadows and glare'
],
face: [
'Face directly at camera',
'Remove sunglasses and hat',
'Use neutral background',
'Ensure good lighting'
]
};
3. Handle Upload Errors
async function safeUpload(uploadFn, retries = 3) {
for (let i = 0; i < retries; i++) {
try {
return await uploadFn();
} catch (error) {
if (i === retries - 1) throw error;
await new Promise(r => setTimeout(r, 2000 * (i + 1)));
}
}
}
Relation Status
related
Request is associated with authenticated user.
relating
Request is being associated with user (via SMS code).
unrelated
Request created with phone number, not yet linked to user.
After Review
Successful Verification
When status becomes reviewed with positive outcome:
- â Transfer limits increased
- â Additional features unlocked
- â Comment explains what was granted
Additional Information Needed
If more information required:
- âšī¸ Comment explains what's needed
- đ§ Support may contact you directly
- đ May need to create new request
Security & Privacy
Data Protection
- đ All images encrypted in transit and at rest
- đ Access restricted to authorized support staff
- đ Images deleted after verification (as per policy)
- đ Compliance with GDPR and data protection laws
Best Practices
- â Use HTTPS for all API calls
- â Don't store images on your server
- â Inform users about data usage
- â Implement proper error handling
- â Don't log or cache sensitive data
Common Errors
"invalid_state" Error
Cause: Request not in waiting status
Solution:
const request = await api.getIdentificationRequest(requestId);
if (request.status !== 'waiting') {
throw new Error(`Cannot upload - status is ${request.status}`);
}
Need Help?â
Technical Support: tech_support@paysera.com - Subject: User Identification API
Identification Support: tech_support@paysera.com - For questions about specific identification requests
Related Documentationâ
- User Information - Get user details
- Authentication - OAuth setup
- Payments - Payment limits