openapi: 3.0.3 info: title: dLocal KYC Verifications API version: '1.0' description: | Create and manage KYC verifications across payment flows: remittances, payouts on hold, payins on hold, and standalone verifications. Verification results are delivered asynchronously via webhook. servers: - url: https://api.dlocal.com description: Production - url: https://sandbox.dlocal.com description: Sandbox tags: - name: Verifications description: Create and inspect KYC verifications. - name: Documents description: Upload and retrieve verification documents. paths: /verifications: post: tags: [Verifications] operationId: createVerification summary: Create A Verification description: Submit a KYC verification (remitter, beneficiary, or standalone). requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/VerificationRequest' multipart/form-data: schema: $ref: '#/components/schemas/VerificationRequest' responses: '200': description: Verification created content: application/json: schema: $ref: '#/components/schemas/Verification' '400': description: Invalid request format '401': description: Unauthorized '403': description: Forbidden /verifications/{verification_id}: get: tags: [Verifications] operationId: getVerification summary: Get A Verification parameters: - name: verification_id in: path required: true schema: { type: string, format: uuid } responses: '200': description: Verification returned content: application/json: schema: $ref: '#/components/schemas/Verification' /verifications/{verification_id}/state: patch: tags: [Verifications] operationId: updateVerificationState summary: Update Verification State parameters: - name: verification_id in: path required: true schema: { type: string, format: uuid } requestBody: content: application/json: schema: type: object properties: state: { type: string } responses: '200': description: Verification state updated /verifications/{verification_id}/documents: get: tags: [Documents] operationId: getVerificationDocuments summary: Get Verification Documents parameters: - name: verification_id in: path required: true schema: { type: string, format: uuid } responses: '200': description: Documents returned /verifications/{verification_id}/documents/{document_id}: patch: tags: [Documents] operationId: updateVerificationDocument summary: Update A Verification Document parameters: - name: verification_id in: path required: true schema: { type: string, format: uuid } - name: document_id in: path required: true schema: { type: string } requestBody: content: multipart/form-data: schema: type: object properties: file: { type: string, format: binary } responses: '200': description: Document updated components: schemas: VerificationRequest: type: object required: [type, notification_url, attributes] properties: type: type: string enum: [REMITTANCE, STANDALONE] notification_url: type: string format: uri attributes: type: object description: Client information attributes (name, document, country, etc.) flow: type: string enum: [remitter, beneficiary, standalone] Verification: type: object properties: id: { type: string, format: uuid } type: { type: string } status: type: string enum: [PENDING, APPROVED, REJECTED, EXPIRED] status_detail: { type: string } created_date: { type: string, format: date-time } expiration_date: { type: string, format: date-time } attributes: { type: object } securitySchemes: dLocalSignature: type: apiKey in: header name: Authorization security: - dLocalSignature: []