Make (formerly Integromat) is a visual workflow automation tool that connects apps and APIs without requiring code. If you receive invoices by email and want them automatically extracted and routed to a spreadsheet, accounting software, or internal system — this guide shows how to build that workflow from scratch.
No programming required. Total setup time: 20–30 minutes.
What You'll Need
- A Make account (free tier works for testing — make.com)
- A DocuParse API account — sign up free at docuparseapi.com, 20 documents/month, no credit card
- A destination for the extracted data (Google Sheets, Airtable, Xero, or any app Make supports)
The Workflow We're Building
Email arrives with PDF invoice attachment
↓
Gmail / Email module detects the attachment
↓
HTTP module calls DocuParse API with the PDF
↓
JSON response is parsed
↓
Structured data written to Google Sheets
↓
Optional: Slack notification sentStep 1 — Create a New Scenario in Make
- Log into Make and click Create a new scenario
- You'll see a blank canvas with a prompt to choose your first module
Step 2 — Add the Email Trigger
If your invoices arrive by email:
- Search for and select Gmail (or your email provider)
- Choose Watch Emails as the trigger
- Connect your Gmail account when prompted
- Configure the trigger:
- Folder: INBOX (or a dedicated AP folder)
- Criteria: Only emails with attachments
- Maximum number of results: 10 (adjustable)
If you want to trigger manually for testing: Use the Manual trigger (clock icon) while building and switch to email later.
Step 3 — Add the HTTP Module (DocuParse API Call)
This is the core of the workflow. The HTTP module sends your invoice file to DocuParse API and returns the extracted JSON.
- Add a new module after the email trigger
- Search for HTTP and select Make a Request
- Configure it as follows:
URL:
https://docuparseapi.com/api/v1/extract
Method: POST
Headers: Click Add item and add:
- Name:
Authorization - Value:
Bearer YOUR_API_KEY_HERE
(Replace YOUR_API_KEY_HERE with your actual key from the DocuParse API dashboard)
Body type: Multipart/form-data
Fields: Click Add item:
- Key:
file - Value: Click the file icon and map to the attachment from the email trigger (
Attachments[] > Data) - Content type:
application/octet-stream
Parse response: Toggle this to Yes — this tells Make to parse the JSON response automatically so you can map the fields in later modules.
This first request returns a document_id, not the extracted fields. Add two more modules to fetch the result:
- Add Tools → Sleep and set the delay to 10 seconds.
- Add HTTP → Make a request (GET):
URL: https://docuparseapi.com/api/v1/documents/{{document_id from the first HTTP module}}
Method: GET
Headers: Authorization: Bearer YOUR_API_KEY
Parse response: YesOn Starter and Pro you can replace Sleep + GET with a Make Custom webhook trigger that receives the finished result.
Step 4 — Map the Extracted Fields
After adding the GET module, run the scenario once with a test email to populate the response structure. Make will show you all the available fields from the fetched result:
Step 5 — Write to Google Sheets
- Add a Google Sheets module after the GET module
- Choose Add a Row
- Connect your Google account
- Select your spreadsheet and sheet
- Map the columns to the extracted fields:
| Spreadsheet Column | Map to |
|---|---|
| Vendor | data.merchant |
| Invoice # | data.invoice_id |
| Date | data.date |
| Due Date | data.due_date |
| Currency | data.currency |
| Total | data.total |
| Tax | data.tax |
Your invoice spreadsheet now fills itself automatically every time a new email arrives.
Step 6 — Handle Extraction Failures
Not every PDF will extract successfully. Add error handling before the Google Sheets step:
- Add a Router module after the GET module
- Create two routes:
- Route 1: Filter condition:
data.status = completed→ proceed to Google Sheets - Route 2: Filter condition:
data.status = failed→ send a Slack message or email alert
- Route 1: Filter condition:
Slack notification for failures:
Invoice extraction failed.
File: {{1.attachments[].filename}}
Status: {{5.data.status}}
Please review manually.Complete Module Configuration Reference
HTTP Module Settings (submit)
URL: https://docuparseapi.com/api/v1/extract Method: POST Headers: Authorization: Bearer [your API key] Body Type: Multipart/form-data Fields: Key: file Value: [mapped from email attachment Data field] Content-Type: application/octet-stream Parse Response: Yes
HTTP Module Settings (get result)
URL: https://docuparseapi.com/api/v1/documents/{{3.data.document_id}}
Method: GET
Headers:
Authorization: Bearer [your API key]
Parse Response: YesRouter Conditions
Success route:
Condition: {{5.data.status}} Equal to completedFailure route:
Condition: {{5.data.status}} Equal to failed(The 3 refers to the submit HTTP module and 5 to the GET module — adjust if your scenario has a different numbering)
Sending to Xero Instead of Google Sheets
Replace the Google Sheets module with an HTTP module calling the Xero API, or use Make's native Xero module:
- Add a Xero module
- Choose Create Invoice (this creates a payable bill)
- Map the fields:
- Contact Name:
data.merchant - Invoice Number:
data.invoice_id - Date:
data.date - Due Date:
data.due_date - Total:
data.total - Currency Code:
data.currency
- Contact Name:
Make's Xero module handles the authentication; you just connect your Xero account.
Alternative Trigger: Google Drive
If invoices are dropped into a Google Drive folder rather than emailed:
- Replace the Gmail trigger with Google Drive > Watch Files in a Folder
- Set the folder to your invoice intake folder
- The rest of the workflow is identical — map
data(the file content) to the HTTP module'sfilefield
Testing Your Workflow
- Click Run once in Make while in the scenario editor
- Send a test email with a PDF invoice to your Gmail
- Make will process one email and show you the data at each step
- Check the GET module output to see the full API response
- Check Google Sheets to confirm the row was created
If the HTTP module shows an error:
- Verify your API key is correct (check the DocuParse API dashboard)
- Confirm the attachment is being mapped correctly — it should be binary data, not a URL
- Check that
Parse Responseis set toYes
Monthly Cost
- Make free tier: 1,000 operations/month (each module execution = 1 operation; a 3-module workflow uses 3 per invoice)
- DocuParse API free tier: 20 documents/month, no credit card
- For higher volume: the Starter plan (see current pricing)
At 100 invoices/month, the Make Core plan ($9/month) plus DocuParse API free tier (or the Starter plan if over 20) is well under $25/month total.