Invoice PDFs to data in Make

A Make scenario picks up an invoice PDF, sends it to ConvertPDF.pro with the HTTP module, and gets back the vendor, invoice number, dates, total and every line item. An iterator turns the line items into one bundle each, ready for a sheet or an accounting app.

What you need: a ConvertPDF.pro API key. API access comes with any paid page pack (one-time, no subscription). The free 5-page trial works in the web app only, so you can see the result on a real invoice before you buy. Files can be up to about 3 MB.

How this works: Make sends the PDF to our web address and we send back the data. This is a setup using Make's own web-request step, not an app listed in Make's directory. The steps follow Make's documentation, and the screens change from time to time, so run one test invoice before you rely on it.

Set it up in Make

  1. Get the invoice file

    Use any module that outputs a PDF file, such as a Gmail attachment, a Google Drive file or a webhook upload.

  2. Turn the file into base64 text

    The API takes the PDF as base64 text. Use a Make function that converts the file's data to base64 (people commonly use base64() on the file's data) and check that the output is one long block of letters and numbers. If your file module already returns base64, use that directly.

  3. HTTP: Make a request

    Method POST, URL below, body type Raw, content type JSON. Add the header Authorization with the value Bearer and then your API key (from the Automation page). Paste the body and replace the placeholder with the base64 output from the previous step.

    URL:     https://convertpdf.pro/api/v1-extract
    Header:  Authorization: Bearer YOUR_API_KEY
    Body:    {
               "template": "invoice",
               "pdfBase64": "<the PDF as base64 text>"
             }
  4. Parse the response and use it

    Turn on “Parse response” so Make reads the JSON, and run the module once so Make learns the fields. Map the fields below into your next module. Add an Iterator on data.line_items to get one bundle per line item.

What comes back

One JSON object. These are the values you will use most:

Vendordata.vendor
Invoice numberdata.invoice_number
Invoice datedata.invoice_date
Totaldata.total
Line items (one row each)data.line_items
Needs a person to check?needs_review (true or false), with review_fields

Each PDF page uses one page from your pack. A document where nothing at all is found is not charged (up to 5 a day per account). The full response, error codes and signed webhooks are on the Automation page.

Using another tool?