Before you start
- The invoice must be in the
APPROVEDstate. - Your API key needs the Payment permission with Create enabled.
- The
slugyou send for each invoice is the invoiceidreturned by Invoice Creation, Invoice List and Invoice Details.
Partial payments
amount can be less than the invoice’s remaining due amount. The invoice stays open for the balance. An amount above the remaining due returns AMOUNT_EXCEEDS for that invoice.
Small batches (100 invoices or fewer)
These run synchronously. The response contains one result per invoice, in the same order as your request.If every invoice in the batch ends in
ERROR or SKIPPED, the response status is 422 instead of 200. The body shape is the same, so parse results either way.Large batches (more than 100 invoices)
These run asynchronously. The response comes back immediately withstatus: "PENDING" and a bulkActionSlug.
1
Submit the batch
Send the request as usual. Save
data.bulkActionSlug from the response.2
Poll for progress
Call the Batch Status API with the slug every 10 to 30 seconds.
3
Stop at a terminal status
COMPLETED: every invoice was paid.PROCESSED: finished, but some invoices were skipped. SeediscardedCount.PROCESSING: still running. Keep polling.
4
Confirm skipped invoices
The status API only returns counts. To find out which invoices were skipped, check each one with Invoice Details.
409 MAP_BATCH_IN_PROGRESS. Wait for the first to finish, or split your work into batches of 100 or fewer, which aren’t affected.
Accounting sync
Payments recorded through the API are not pushed to your connected accounting platform. Their sync state is alwaysSKIPPED. If you need the payment in Tally, Zoho Books or another platform, sync it through that platform’s own mechanism.