Skip to main content
ADP provides three business workflow templates: accounts payable, expense reimbursement, and financial reporting. Query each template’s run-readiness state, then process your documents with the same set of workflow APIs.

Template catalog

Query templates and run readiness

Use List business workflow templates:
Select a template by template_key from data.list. The endpoint supports name searches with search and pagination with offset and size.
Use the live query response to determine availability. If can_run=false, add, configure, and publish the corresponding application in the ADP Console, then query again. An application_id or is_added=true alone does not mean the template can run.

Prepare documents

Upload local files with the Upload file endpoint first. Use multipart/form-data, place the file in chunk, set application_id to the value returned by the template query, and use application for sharing_scope. Map data.download_url from the upload response to files[].url, data.file_name to name, and data.content_type to mime_type in the run request. Use one file entry per document. If you already have an accessible public HTTP(S) file URL, you can provide url, name, and mime_type directly.

Run with the shared APIs

All three templates use the same endpoint paths and request structure. Select the target template application with application_id: The following example uses the financial reporting template. Confirm that its can_run value is true, replace the file details with your actual document, and submit the same JSON body to either the synchronous or asynchronous run endpoint:
The example application_id is the stable public ID for the financial reporting template. For accounts payable or expense reimbursement, use the corresponding template’s returned application_id and your document files. Each files entry requires url, name, and mime_type, and optionally accepts size and metadata. Set inputs according to the published workflow’s actual input configuration; omit it when no extra parameters are required. You can omit release_version_id to let the service select the published version. The synchronous endpoint waits for execution to finish. After the asynchronous endpoint returns data.run_id, use the query endpoint to retrieve the status and result. Read data.output after confirming HTTP success, a successful top-level code, and data.status=succeeded. For a failed run, inspect data.error.