Skip to main content

Overview

Yala does not accept invoice file bytes on the payout API. You:
  1. Call POST /documents/upload-url (JSON: filename + content type).
  2. PUT the invoice file to the returned uploadUrl (Amazon S3). Valid for 15 minutes.
  3. Pass the returned documentUrl on POST /initiate (supportingDocument) or PATCH /:id/documents.
Most payouts need an invoice attached before they can be processed. Withdrawals (to your business account or a UBO account) are the exception.

URLs

Formats and limits

  • PDF, JPEG, or PNG (application/pdf, image/jpeg, image/png)
  • Max 10 MB per file, max 5 files per payout (initiate + PATCH combined)

Multiple files

Recommendation: If you need to send more than one supporting document, merge them into a single PDF before uploading to S3. Then pass that one documentUrl when you initiate the payout or call PATCH.

At payout creation

POST /initiate accepts one supportingDocument URL. If your payment is backed by several files (for example, an invoice and a contract), combine them into one PDF first, upload it via the upload-url flow, and pass the resulting documentUrl on initiate.

When we request additional documents

If a payout is in ADDITIONAL_INFO_REQUIRED status, send further supporting documents with PATCH /:id/documents. Use the same upload-url + S3 PUT flow. If you have multiple files to send, merge them into one PDF before uploading to S3, then include that documentUrl in the PATCH documents array.

Attach at payout creation

1. Get upload URL
2. Upload to S3
Use the headers from the upload-url response on your PUT. Expect HTTP 200 from S3. 3. Create payout
See Initiate Payout.

Attach after payout creation

  1. POST /initiate without supportingDocument. Save payout id.
  2. Same upload-url + S3 PUT as above.
  3. PATCH /v1/payout-api/payouts/{id}/documents with { "documents": ["<documentUrl>"] }.
Allowed until status is SUCCESSFUL, FAILED, or REJECTED. See Add Supporting Documents.

Testing with Postman

Import the Postman collection. Run Get Document Upload URL, then Upload File to S3, then Initiate Payout (uses {{documentUrl}}). Details for the S3 PUT request are in the collection description.

Viewing invoices

Files are private. View them in the dashboard at app.useyala.com by opening the payout.

Common mistakes