Document Upload
Upload supporting documents (PDFs, images) and attach them to specific tax filings for compliance verification and audit trails.
Multiple Formats
Support for PDF, JPG, PNG documents
Secure Storage
Encrypted storage with access controls
Auto-Categorization
AI-powered document type detection
HTTP Request
POSThttps://pioe.app/api/v1/documents/upload
Content Type Required
This endpoint requires multipart/form-data content type for file uploads.
Form Data Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| file | File | Yes | The document file (PDF, JPG, PNG). Max 10MB |
| filingId | string | Yes | Filing ID to attach document to |
| documentType | string | Yes | Type: income_proof, expense_receipt, identification, etc. |
| description | string | No | Optional description of the document |
Supported Document Types
income_proof
expense_receipt
identification
bank_statement
tax_clearance
incorporation_cert
payslip
other
Code Examples
const formData = new FormData();
formData.append('file', fileInput.files[0]);
formData.append('filingId', 'fil_abc123...');
formData.append('documentType', 'income_proof');
formData.append('description', 'December 2024 Payslip');
const response = await fetch("https://pioe.app/api/v1/documents/upload", {
method: "POST",
headers: {
"X-API-Key": "your_api_key_here"
// Note: Don't set Content-Type, browser sets it automatically with boundary
},
body: formData
});
const data = await response.json();
console.log("Document ID:", data.documentId);
console.log("URL:", data.url);Success Response
200 OKSuccess response
{
"success": true,
"documentId": "doc_xyz789...",
"filingId": "fil_abc123...",
"documentType": "income_proof",
"fileName": "payslip.pdf",
"fileSize": 245678,
"url": "https://storage.pioe.app/documents/doc_xyz789.pdf",
"uploadedAt": "2024-01-24T15:45:00Z",
"status": "uploaded"
}Error Response
400 Bad RequestError response
{
"success": false,
"error": "File too large",
"message": "File size exceeds 10MB limit. Current size: 12.5MB"
}Try it Live
Use our interactive playground to test requests in real-time.

