Skip to main content
POST
/
v1
/
kyc
/
documents
/
{documentId}
/
update
Submit Document For KYC
curl --request POST \
  --url https://api.sandbox.wepayout.com.br/v1/kyc/documents/{documentId}/update \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "value": "<string>"
}
'
import requests

url = "https://api.sandbox.wepayout.com.br/v1/kyc/documents/{documentId}/update"

payload = { "value": "<string>" }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}

response = requests.post(url, json=payload, headers=headers)

print(response.text)
const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({value: '<string>'})
};

fetch('https://api.sandbox.wepayout.com.br/v1/kyc/documents/{documentId}/update', 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.sandbox.wepayout.com.br/v1/kyc/documents/{documentId}/update",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'value' => '<string>'
]),
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.sandbox.wepayout.com.br/v1/kyc/documents/{documentId}/update"

payload := strings.NewReader("{\n \"value\": \"<string>\"\n}")

req, _ := http.NewRequest("POST", 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.post("https://api.sandbox.wepayout.com.br/v1/kyc/documents/{documentId}/update")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"value\": \"<string>\"\n}")
.asString();
require 'uri'
require 'net/http'

url = URI("https://api.sandbox.wepayout.com.br/v1/kyc/documents/{documentId}/update")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"value\": \"<string>\"\n}"

response = http.request(request)
puts response.read_body
{
  "id": 5891,
  "status_id": 2,
  "status_name": "Waiting Approval Documents",
  "document_id": 35,
  "document_name": "kyc/qsa",
  "collection_name": null,
  "collection_id": null,
  "value_field": "https://s3.amazonaws.com/bucket-name/path/to/file",
  "rejection_reason": null,
  "label": "KYC/QSA",
  "type_field": "file",
  "required_field": true,
  "expires_at": null,
  "automaticatic_validation": 0
}

Submit Document For KYC

This route is used to submit documents for a pending KYC. There are two types of documents that can be submitted:
  • Text-type documents
  • File-type documents
Only one document can be updated at a time.
Attention point: Supported extensions for file-type documents: jpg, jpeg, gif, png and pdf

Path Parameters

documentId
integer
required
The ID of the document to update

Body

value
string
required
The value to submit for the document. For file-type documents, provide the file URL. For text-type documents, provide the text value.

Response

id
integer
Unique identifier for the uploaded document record.
status_id
integer
Identifier of the current validation status of the document.
status_name
string
Name of the document’s validation status.
document_id
integer
Identifier of the document.
document_name
string
Name of the document type uploaded.
collection_name
string
Name of the document collection or group.
collection_id
integer
Identifier of the document collection.
value_field
string
URL for downloading the uploaded document file.
rejection_reason
string
Reason for rejection if the document was not approved.
label
string
Label or description used to identify the document field.
type_field
string
Type of input expected for this field.Example: file or text
required_field
boolean
Indicates whether this field is mandatory for completing the KYC process.
expires_at
string
Expiration date of the document, if applicable.Format: <date-time>
automaticatic_validation
integer
Indicates whether the document is eligible for automatic validation.Example: 1 = yes, 0 = no

Request Example

curl --request POST \
  --url https://api.sandbox.wepayout.com.br/v1/kyc/documents/{documentId}/update \
  --header 'Accept: application/json' \
  --header 'Authorization: Bearer 123' \
  --header 'Content-Type: application/json' \
  --data '{
  "value": "string"
}'
async function submitKYCDocument(documentId, value) {
  const response = await fetch(
    `https://api.sandbox.wepayout.com.br/v1/kyc/documents/${documentId}/update`,
    {
      method: 'POST',
      headers: {
        'Accept': 'application/json',
        'Authorization': 'Bearer 123',
        'Content-Type': 'application/json'
      },
      body: JSON.stringify({
        value: value
      })
    }
  );
  
  if (!response.ok) {
    throw new Error(`Failed to submit document: ${response.statusText}`);
  }
  
  return await response.json();
}

// Usage - Submit file URL
const fileResult = await submitKYCDocument(35, 'https://s3.amazonaws.com/bucket/file.pdf');
console.log('File document submitted:', fileResult);

// Usage - Submit text value
const textResult = await submitKYCDocument(36, 'John Doe');
console.log('Text document submitted:', textResult);
import requests

def submit_kyc_document(document_id, value):
    url = f'https://api.sandbox.wepayout.com.br/v1/kyc/documents/{document_id}/update'
    headers = {
        'Accept': 'application/json',
        'Authorization': 'Bearer 123',
        'Content-Type': 'application/json'
    }
    
    data = {
        'value': value
    }
    
    response = requests.post(url, headers=headers, json=data)
    response.raise_for_status()
    
    return response.json()

# Usage - Submit file URL
file_result = submit_kyc_document(35, 'https://s3.amazonaws.com/bucket/file.pdf')
print('File document submitted:', file_result)

# Usage - Submit text value
text_result = submit_kyc_document(36, 'John Doe')
print('Text document submitted:', text_result)
{
  "id": 5891,
  "status_id": 2,
  "status_name": "Waiting Approval Documents",
  "document_id": 35,
  "document_name": "kyc/qsa",
  "collection_name": null,
  "collection_id": null,
  "value_field": "https://s3.amazonaws.com/bucket-name/path/to/file",
  "rejection_reason": null,
  "label": "KYC/QSA",
  "type_field": "file",
  "required_field": true,
  "expires_at": null,
  "automaticatic_validation": 0
}

Best Practices

One Document at a Time: Only one document can be updated per request. To submit multiple documents, make separate API calls for each.
File Extensions: Ensure file-type documents use only supported extensions: jpg, jpeg, gif, png, or pdf.
Document Status: After submission, the document status will typically change to “Waiting Approval Documents” (status_id: 2).

List KYC

List all KYC verifications

Get KYC By ID

Get KYC by ID

Get KYC By Document

Get KYC by document number

Create Payment

Create a payout payment