Skip to main content
POST
Upload Onboarding Files

Overview

Uploads business documents required for merchant onboarding and KYC (Know Your Customer) verification. This endpoint accepts multiple document types including valid IDs, business permits, certificates, and supporting documents.
Binary File Upload Required: This endpoint expects actual binary file content via multipart/form-data. Do NOT send base64-encoded strings, file paths, or URLs. Upload the actual file data using proper multipart form encoding.
Security: This endpoint implements OWASP File Upload Cheat Sheet best practices including file extension validation, MIME type validation, content validation using magic bytes, file size limits, and secure storage with randomized file names.

Authentication

This endpoint requires JWT Bearer Token authentication.

Authorization Rules

Security Features

This endpoint implements OWASP File Upload Cheat Sheet best practices:

Extension Validation

Only .jpg, .jpeg, .png, .pdf extensions allowed

MIME Type Validation

Validates Content-Type header matches allowed types

Magic Bytes Validation

Uses file-type library to detect actual file content

File Size Limits

Maximum 25MB per file to prevent DoS attacks

File Name Sanitization

Strips dangerous characters from file names

Secure Storage

Files are stored with randomized names to prevent path traversal

Use Cases

Initial Document Upload

Upload required documents when first creating an onboarding application

Document Updates

Replace or add documents after application has been declined

Additional Documents

Submit supplementary documents requested by compliance team

Document Corrections

Re-upload documents with better quality or correct information

Troubleshooting

Error: No files received or Invalid file content typeIssue: Sending file paths, URLs, or base64-encoded strings instead of actual binary file dataIncorrect Examples:
Correct Examples:
Solution: Always use proper file upload mechanisms that send binary data, not text representations
Error: Invalid file content typeIssue: File extension doesn’t match actual file contentCommon Causes:
  • Renamed file with wrong extension (e.g., .txt renamed to .jpg)
  • Corrupted file
  • File created by unsupported software
Solution:
  • Use legitimate image editing or PDF software
  • Don’t just rename file extensions
  • Verify file opens correctly before uploading
  • Try converting file to correct format using standard tools
Error: File size exceeds 25MB limitSolutions:
  • For PDFs: Split multi-page documents across front/back/signature fields
  • For images: Reduce resolution (1920px width is usually sufficient)
  • For images: Convert to JPEG with 80-85% quality
  • For images: Use online compression tools like TinyPNG or Squoosh
  • Consider splitting document into multiple logical files
Issue: Files not being received by server or showing as undefinedSolutions for Different Languages:Node.js:
Python:
PHP:
Issue: Uploaded file name doesn’t match originalExplanation: File names are sanitized for security:
  • Special characters removed
  • Path traversal sequences removed (../, ..)
  • Length truncated to 255 characters
Best Practice:
  • Use simple, descriptive file names
  • Avoid special characters
  • Use the returned id field to reference files, not name
  • Store your own mapping of file IDs to original names if needed

Document Checklist

Use this checklist to ensure you have all required documents before uploading:
  • Valid ID(s) of Signatory
  • Photo of store with store name
  • Barangay Business Permit
  • Incorporator’s Government Issued ID
  • Signatory’s Government Issued ID
  • Authorized Representative Government Issued ID

Next Steps

Onboard Merchant

Submit onboarding application after uploading files

Retrieve Onboarding Status

Check onboarding application status

Update Onboarding Data

Update declined application with corrected documents

Error Handling

Complete error code reference

Authorizations

Authorization
string
header
required

JWT Bearer token authentication

Path Parameters

merchantId
string
required

The merchant's account ID (numeric string)

Pattern: ^\d+$

Body

multipart/form-data
idsOfValidSignatories
file

Valid government-issued IDs of authorized signatories (front side)

idsOfValidSignatoriesBack
file

Back side of valid IDs

idsOfValidSignatoriesSignature
file

Signature specimen from valid IDs

mayorsOrBusinessPermit
file

Mayor's Permit or Business Permit (front)

mayorsOrBusinessPermitBack
file

Back side of Mayor's/Business Permit

mayorsOrBusinessPermitSignature
file

Signature page of Mayor's/Business Permit

birCert2303
file

BIR Certificate of Registration (Form 2303) - front

birCert2303Back
file

Back side of BIR Certificate 2303

birCert2303Signature
file

Signature page of BIR Certificate 2303

secCert
file

SEC Certificate - front

secCertBack
file

Back side of SEC Certificate

secCertSignature
file

Signature page of SEC Certificate

gis
file

General Information Sheet - front

gisBack
file

Back side of GIS

gisSignature
file

Signature page of GIS

aoiAndByLaws
file

Articles of Incorporation and By-Laws - front

aoiAndByLawsBack
file

Back side of AOI and By-Laws

aoiAndByLawsSignature
file

Signature page of AOI and By-Laws

secretarysCert
file

Secretary's Certificate - front

secretarysCertBack
file

Back side of Secretary's Certificate

secretarysCertSignature
file

Signature page of Secretary's Certificate

barangayBusinessPermit
file

Barangay Business Permit - front

barangayBusinessPermitBack
file

Back side of Barangay Business Permit

barangayBusinessPermitSignature
file

Signature page of Barangay Business Permit

storePhoto
file

Photo of the store/business establishment (must show visible store name)

Response

Files uploaded successfully

files
object[]

List of successfully uploaded files