Individual customers only. Request a pre-signed URL to upload a legacy 4-slot KYC file for an individual customer.
For type=business customers, do not use this endpoint. Use the dedicated KYB upload endpoints — POST /api/external/customer/{customer}/owner/{owner}/file/presigned-url for owner ID files and POST /api/external/customer/{customer}/document/presigned-url for KYB documents. See the Business customer KYB guide.
Upload process:
- Make a PUT request to the
upload_url. - Include the headers from the response.
- Send the file as binary data in the request body.
- Once uploaded, use the
file_idto attach the file to the customer record viaPOST /api/external/customer/{id}/files.
IMPORTANT — Accepted identity documents: Only a Driver's License, Passport, or Resident Permit is accepted. ID cards (National Identity Cards) are NOT accepted.
IMPORTANT — Document quality: All uploaded documents must be clear, legible, and authentic. Blurry, cropped, obscured, or unclear images will not be reviewed and will be rejected. Fraudulent or falsified documents will not be tolerated — repeated attempts will result in the customer being permanently blacklisted from the platform. There are no exceptions or compromises.
Required scope: file:upload.
Authorization
oauth2ClientCredentials file:uploadUse your OAuth client credentials to obtain a short-lived Bearer token from POST /oauth/token.
In: header
Scope: file:upload
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Individual customers only. This endpoint provides a presigned URL for uploading legacy 4-slot KYC files (identity, identity_back, proof_of_address, liveness_check) for an individual customer.
Do not use this endpoint for type=business customers. Business-type customers use dedicated upload endpoints — POST /api/external/customer/{customer}/owner/{owner}/file/presigned-url for owner ID files and POST /api/external/customer/{customer}/document/presigned-url for KYB documents. See the Business customer KYB guide.
File Category:
- identity — Identity document. Required to verify an individual customer. Only a Driver's License, Passport, or Resident Permit is accepted. ID cards (National Identity Cards) are NOT accepted.
- identity_back — Back side of the identity document. Use this when the identity document is two-sided (e.g. driver's license).
- proof_of_address — Proof of address.
- liveness_check — Liveness check.
All uploaded documents must be clear, legible, and authentic. Blurry, cropped, obscured, or unclear images will not be reviewed and will be rejected. Fraudulent or falsified documents will not be tolerated — repeated attempts will result in the customer being permanently blacklisted from the platform.
Response Body
application/json
application/json
application/json
curl --request POST \ --url 'https://example.com/api/external/file/get-presigned-url' \ --header 'Content-Type: application/json' \ --data '{ "customer_id": "customer_123", "file_category": "identity"}'{ "message": "Upload URL generated successfully", "file_id": "file_123456789", "url": "https://s3.amazonaws.com/bucket/path?signature=xyz", "headers": { "Content-Type": "image/jpeg" }}POSTSwap money between business wallets
Swap money between two wallets owned by your business. The wallets must exist, belong to the same business, and use different currencies. This endpoint is available only when your business is allowed to perform API-services swaps. Required scope: `swap:create`.
GETGet transaction
Retrieve a completed API transaction by its transaction ID, its reference, or the merchant_reference that you supplied. Required scope: `transaction:read`.