Upload owner document
curl --request POST \
--url https://qa-api.endl.xyz/api/v0/customer/{userId}/ubo/{uboRef}/documents \
--header 'API-KEY: <api-key>' \
--header 'Content-Type: multipart/form-data' \
--form document='@example-file' \
--form 'idDocType=<string>' \
--form 'country=<string>' \
--form 'side=<string>'import requests
url = "https://qa-api.endl.xyz/api/v0/customer/{userId}/ubo/{uboRef}/documents"
files = { "document": ("example-file", open("example-file", "rb")) }
payload = {
"idDocType": "<string>",
"country": "<string>",
"side": "<string>"
}
headers = {"API-KEY": "<api-key>"}
response = requests.post(url, data=payload, files=files, headers=headers)
print(response.text)const form = new FormData();
form.append('document', '<string>');
form.append('idDocType', '<string>');
form.append('country', '<string>');
form.append('side', '<string>');
const options = {method: 'POST', headers: {'API-KEY': '<api-key>'}};
options.body = form;
fetch('https://qa-api.endl.xyz/api/v0/customer/{userId}/ubo/{uboRef}/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://qa-api.endl.xyz/api/v0/customer/{userId}/ubo/{uboRef}/documents",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"document\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"idDocType\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"country\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"side\"\r\n\r\n<string>\r\n-----011000010111000001101001--",
CURLOPT_HTTPHEADER => [
"API-KEY: <api-key>",
"Content-Type: multipart/form-data"
],
]);
$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://qa-api.endl.xyz/api/v0/customer/{userId}/ubo/{uboRef}/documents"
payload := strings.NewReader("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"document\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"idDocType\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"country\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"side\"\r\n\r\n<string>\r\n-----011000010111000001101001--")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("API-KEY", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://qa-api.endl.xyz/api/v0/customer/{userId}/ubo/{uboRef}/documents")
.header("API-KEY", "<api-key>")
.body("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"document\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"idDocType\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"country\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"side\"\r\n\r\n<string>\r\n-----011000010111000001101001--")
.asString();require 'uri'
require 'net/http'
url = URI("https://qa-api.endl.xyz/api/v0/customer/{userId}/ubo/{uboRef}/documents")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["API-KEY"] = '<api-key>'
request.body = "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"document\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"idDocType\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"country\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"side\"\r\n\r\n<string>\r\n-----011000010111000001101001--"
response = http.request(request)
puts response.read_body{
"accepted": true,
"status": "SUBMITTED"
}{
"errors": [
{
"code": "400",
"message": "firstName is required",
"name": "PartnerOnboardingCreate failed to process"
},
{
"code": "400",
"message": "country must be an ISO 3166-1 alpha-3 code (e.g. ARE)",
"name": "PartnerOnboardingCreate failed to process"
}
]
}{
"code": "401",
"message": "Authentication Failed!",
"name": "PartnerOnboarding failed to process"
}{
"code": "404",
"message": "Not found",
"name": "PartnerOnboardingUboDocUpload failed to process"
}Upload owner document
Uploads one beneficial owner’s document. Business customers only.
Once the company documents and every owner’s documents are uploaded, the business auto-submits and the company and all owners move to review together.
POST
/
api
/
v0
/
customer
/
{userId}
/
ubo
/
{uboRef}
/
documents
Upload owner document
curl --request POST \
--url https://qa-api.endl.xyz/api/v0/customer/{userId}/ubo/{uboRef}/documents \
--header 'API-KEY: <api-key>' \
--header 'Content-Type: multipart/form-data' \
--form document='@example-file' \
--form 'idDocType=<string>' \
--form 'country=<string>' \
--form 'side=<string>'import requests
url = "https://qa-api.endl.xyz/api/v0/customer/{userId}/ubo/{uboRef}/documents"
files = { "document": ("example-file", open("example-file", "rb")) }
payload = {
"idDocType": "<string>",
"country": "<string>",
"side": "<string>"
}
headers = {"API-KEY": "<api-key>"}
response = requests.post(url, data=payload, files=files, headers=headers)
print(response.text)const form = new FormData();
form.append('document', '<string>');
form.append('idDocType', '<string>');
form.append('country', '<string>');
form.append('side', '<string>');
const options = {method: 'POST', headers: {'API-KEY': '<api-key>'}};
options.body = form;
fetch('https://qa-api.endl.xyz/api/v0/customer/{userId}/ubo/{uboRef}/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://qa-api.endl.xyz/api/v0/customer/{userId}/ubo/{uboRef}/documents",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"document\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"idDocType\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"country\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"side\"\r\n\r\n<string>\r\n-----011000010111000001101001--",
CURLOPT_HTTPHEADER => [
"API-KEY: <api-key>",
"Content-Type: multipart/form-data"
],
]);
$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://qa-api.endl.xyz/api/v0/customer/{userId}/ubo/{uboRef}/documents"
payload := strings.NewReader("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"document\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"idDocType\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"country\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"side\"\r\n\r\n<string>\r\n-----011000010111000001101001--")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("API-KEY", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://qa-api.endl.xyz/api/v0/customer/{userId}/ubo/{uboRef}/documents")
.header("API-KEY", "<api-key>")
.body("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"document\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"idDocType\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"country\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"side\"\r\n\r\n<string>\r\n-----011000010111000001101001--")
.asString();require 'uri'
require 'net/http'
url = URI("https://qa-api.endl.xyz/api/v0/customer/{userId}/ubo/{uboRef}/documents")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["API-KEY"] = '<api-key>'
request.body = "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"document\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"idDocType\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"country\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"side\"\r\n\r\n<string>\r\n-----011000010111000001101001--"
response = http.request(request)
puts response.read_body{
"accepted": true,
"status": "SUBMITTED"
}{
"errors": [
{
"code": "400",
"message": "firstName is required",
"name": "PartnerOnboardingCreate failed to process"
},
{
"code": "400",
"message": "country must be an ISO 3166-1 alpha-3 code (e.g. ARE)",
"name": "PartnerOnboardingCreate failed to process"
}
]
}{
"code": "401",
"message": "Authentication Failed!",
"name": "PartnerOnboarding failed to process"
}{
"code": "404",
"message": "Not found",
"name": "PartnerOnboardingUboDocUpload failed to process"
}Authorizations
Your partner API key. The key must carry the onboarding permission.
Path Parameters
The business customer's id.
The owner's applicantId, returned per beneficiary by create. Owners have no userId of their own.
Body
multipart/form-data
Response
Accepted.