Skip to main content
GET
https://api.sandbox.wepayout.com.br
/
v1
/
kyc
List KYC
curl --request GET \
  --url https://api.sandbox.wepayout.com.br/v1/kyc \
  --header 'Authorization: Bearer <token>'
[
  {
    "id": 1563,
    "origin_request": "PAYIN",
    "description": "test",
    "notes": null,
    "created_at": "2025-05-19 10:53:48",
    "updated_at": "2025-05-19 10:53:48",
    "merchant": "Merchant's name",
    "submerchant": null,
    "status": {
      "id": 1,
      "name": "Waiting Upload Documents"
    },
    "beneficiary": {
      "id": 1691,
      "name": "TEST",
      "document": "12345678987"
    }
  }
]

List KYC

Retrieves a list of pending KYC verifications.
Status: You can filter KYC results by using the status_id query parameter at the KYC listing endpoint. Below are the available status values.

Status Table

TENDER IDSTATUS NAME
1Awaiting Upload Documents
2Awaiting Approval Documents
3Approved
4Pending Regularization
5Canceled

Query Parameters

page
string
The current number you wish to view.
per_page
string
The maximum number of items shown per page.
sort
string
Sort order.Allowed values: 0, 1, 2, 3, 4, 5
status_id
string
Status filter.Allowed values: 1, 2, 3, 4, 5

Response

array
array
Array of KYC records.

Request Example

curl --request GET \
  --url 'https://api.sandbox.wepayout.com.br/v1/kyc' \
  --header 'Accept: application/json' \
  --header 'Authorization: Bearer 123'
[
  {
    "id": 1563,
    "origin_request": "PAYIN",
    "description": "test",
    "notes": null,
    "created_at": "2025-05-19 10:53:48",
    "updated_at": "2025-05-19 10:53:48",
    "merchant": "Merchant's name",
    "submerchant": null,
    "status": {
      "id": 1,
      "name": "Waiting Upload Documents"
    },
    "beneficiary": {
      "id": 1691,
      "name": "TEST",
      "document": "12345678987"
    }
  }
]

Use Cases

Track all KYC verifications that are awaiting document upload:
async function getPendingKYC() {
  const pending = await listKYC({ status_id: 1 });
  
  console.log(`Found ${pending.length} pending KYC verifications`);
  
  pending.forEach(kyc => {
    console.log(`- ${kyc.beneficiary.name}: ${kyc.status.name}`);
  });
  
  return pending;
}
Get KYC records by origin (PAYIN or REQUEST):
async function getKYCByOrigin(origin) {
  const allKYC = await listKYC();
  
  return allKYC.filter(kyc => kyc.origin_request === origin);
}

// Get all PAYIN-related KYC
const payinKYC = await getKYCByOrigin('PAYIN');
Monitor KYC status changes over time:
async function trackKYCStatus(kycId) {
  const allKYC = await listKYC();
  const kyc = allKYC.find(k => k.id === kycId);
  
  if (!kyc) {
    throw new Error('KYC not found');
  }
  
  return {
    id: kyc.id,
    beneficiary: kyc.beneficiary.name,
    currentStatus: kyc.status.name,
    lastUpdate: kyc.updated_at,
    origin: kyc.origin_request
  };
}
Generate a report of all KYC verifications by status:
async function generateKYCReport() {
  const allKYC = await listKYC();
  
  const report = {
    total: allKYC.length,
    byStatus: {},
    byOrigin: {}
  };
  
  allKYC.forEach(kyc => {
    // Count by status
    const statusName = kyc.status.name;
    report.byStatus[statusName] = (report.byStatus[statusName] || 0) + 1;
    
    // Count by origin
    const origin = kyc.origin_request;
    report.byOrigin[origin] = (report.byOrigin[origin] || 0) + 1;
  });
  
  return report;
}

// Usage
const report = await generateKYCReport();
console.log('KYC Report:', report);
// Output: { total: 50, byStatus: { 'Approved': 30, 'Pending': 20 }, byOrigin: { 'PAYIN': 35, 'REQUEST': 15 } }

Status Workflow

Best Practices

Pagination: Always use pagination when listing KYC records to avoid performance issues. The default page size is 10.
Status Monitoring: Regularly check KYC status to ensure timely document uploads and approvals.
Filter by Status: Use the status_id parameter to filter KYC records by specific statuses and reduce response size.