Document Upload
curl --request PUT \
--url https://api.paxos.com/v2/identity/identities/{identity_id}/documents \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "Proof_of_residence.jpg",
"document_types": [
"PROOF_OF_RESIDENCY"
]
}
'import requests
url = "https://api.paxos.com/v2/identity/identities/{identity_id}/documents"
payload = {
"name": "Proof_of_residence.jpg",
"document_types": ["PROOF_OF_RESIDENCY"]
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({name: 'Proof_of_residence.jpg', document_types: ['PROOF_OF_RESIDENCY']})
};
fetch('https://api.paxos.com/v2/identity/identities/{identity_id}/documents', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.paxos.com/v2/identity/identities/{identity_id}/documents",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
'name' => 'Proof_of_residence.jpg',
'document_types' => [
'PROOF_OF_RESIDENCY'
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.paxos.com/v2/identity/identities/{identity_id}/documents"
payload := strings.NewReader("{\n \"name\": \"Proof_of_residence.jpg\",\n \"document_types\": [\n \"PROOF_OF_RESIDENCY\"\n ]\n}")
req, _ := http.NewRequest("PUT", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.put("https://api.paxos.com/v2/identity/identities/{identity_id}/documents")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"Proof_of_residence.jpg\",\n \"document_types\": [\n \"PROOF_OF_RESIDENCY\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.paxos.com/v2/identity/identities/{identity_id}/documents")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"Proof_of_residence.jpg\",\n \"document_types\": [\n \"PROOF_OF_RESIDENCY\"\n ]\n}"
response = http.request(request)
puts response.read_body{
"file_id": "f190b163-208f-4d73-8deb-4fb8b24add00",
"name": "Proof_of_residence.jpg",
"upload_url": "https://s3.amasonaws.com/pax...cec3f64fe20348685a"
}{
"detail": "must provide a file name, up to 260 characters",
"status": 400,
"title": "Bad Request",
"type": "about:blank"
}{
"detail": "document storage not enabled",
"status": 403,
"title": "Forbidden",
"type": "about:blank"
}{
"detail": "identity does not exist",
"status": 404,
"title": "Not Found",
"type": "about:blank"
}{
"detail": "file named \"Proof_of_residence.jpg\" already exists",
"meta": {
"existing": {
"name": "Proof_of_residence.jpg"
}
},
"status": 409,
"title": "Already Exists",
"type": "https://developer.paxos.com/docs/v2/problems/already-exists"
}Identity Documents
Document Upload
This endpoint enables you to receive a URL to upload a document to Paxos for identity verification or enhanced due diligence purposes. When uploading a document you must specify the document type. You will receive a URL where you can upload the document using a POST request.
Requirements:
- Uploaded documents must be less than 100 MB in size
- Supported formats include PDF, JPG, and PNG
For more information on document requirements for enhanced due diligence, see here.
PUT
/
identity
/
identities
/
{identity_id}
/
documents
Document Upload
curl --request PUT \
--url https://api.paxos.com/v2/identity/identities/{identity_id}/documents \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "Proof_of_residence.jpg",
"document_types": [
"PROOF_OF_RESIDENCY"
]
}
'import requests
url = "https://api.paxos.com/v2/identity/identities/{identity_id}/documents"
payload = {
"name": "Proof_of_residence.jpg",
"document_types": ["PROOF_OF_RESIDENCY"]
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({name: 'Proof_of_residence.jpg', document_types: ['PROOF_OF_RESIDENCY']})
};
fetch('https://api.paxos.com/v2/identity/identities/{identity_id}/documents', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.paxos.com/v2/identity/identities/{identity_id}/documents",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
'name' => 'Proof_of_residence.jpg',
'document_types' => [
'PROOF_OF_RESIDENCY'
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.paxos.com/v2/identity/identities/{identity_id}/documents"
payload := strings.NewReader("{\n \"name\": \"Proof_of_residence.jpg\",\n \"document_types\": [\n \"PROOF_OF_RESIDENCY\"\n ]\n}")
req, _ := http.NewRequest("PUT", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.put("https://api.paxos.com/v2/identity/identities/{identity_id}/documents")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"Proof_of_residence.jpg\",\n \"document_types\": [\n \"PROOF_OF_RESIDENCY\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.paxos.com/v2/identity/identities/{identity_id}/documents")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"Proof_of_residence.jpg\",\n \"document_types\": [\n \"PROOF_OF_RESIDENCY\"\n ]\n}"
response = http.request(request)
puts response.read_body{
"file_id": "f190b163-208f-4d73-8deb-4fb8b24add00",
"name": "Proof_of_residence.jpg",
"upload_url": "https://s3.amasonaws.com/pax...cec3f64fe20348685a"
}{
"detail": "must provide a file name, up to 260 characters",
"status": 400,
"title": "Bad Request",
"type": "about:blank"
}{
"detail": "document storage not enabled",
"status": 403,
"title": "Forbidden",
"type": "about:blank"
}{
"detail": "identity does not exist",
"status": 404,
"title": "Not Found",
"type": "about:blank"
}{
"detail": "file named \"Proof_of_residence.jpg\" already exists",
"meta": {
"existing": {
"name": "Proof_of_residence.jpg"
}
},
"status": 409,
"title": "Already Exists",
"type": "https://developer.paxos.com/docs/v2/problems/already-exists"
}OAuth Scope
identity:write_identity
Authorizations
Paxos APIs use OAuth 2 with the client credentials grant flow.
Token URLs:
- Production: https://oauth.paxos.com/oauth2/token
- Sandbox: https://oauth.sandbox.paxos.com/oauth2/token
Learn more in the API credentials guide →
Path Parameters
The id of the identity the document is associated with.
Body
application/json
The file name.
A list of document types contained within the uploaded file.
Available options:
OTHER_DOCUMENTS, APPLICATION, ORGANIZATIONAL_DOCUMENTS, CERTIFICATE_OF_GOOD_STANDING, TAX_IDENTIFICATION, IDENTITY_VERIFICATION, PROOF_OF_RESIDENCY, PROOF_OF_FUNDS, SAMPLE_INVOICE, OPERATING_AGREEMENT, TRUST_DOCUMENTS, MONEY_SERVICE_DOCUMENTS, INVESTMENT_DOCUMENTS, CURP, AML_DOCUMENTS, FUND_STRUCTURE_CHART, FUND_MANAGER_REGISTRATION, MEMORANDUM_OF_ASSOCIATION, ORGANIZATIONAL_CHART, FOUNDATION_BY_LAWS, APPOINTMENT_OF_GUARDIAN_EVIDENCE, LEGAL_DOMICILE_OF_BENEFICIAL_OWNERS, GOVERNING_BODY_MEMBER_NAMES, INDEPENDENT_AUDIT Was this page helpful?