ASHDOCS for Make
Turn the bundles in a Make scenario into numbered invoices with a PDF, a hosted page and an email to the customer.
Make.com invoice automation with ASHDOCS turns sheet rows, Airtable records, form answers or webhook calls into numbered invoices. A Create an invoice module, or Make's own HTTP module, sends the customer and the line items to POST /api/v1/invoices, and ASHDOCS returns the invoice number, the PDF link and the hosted invoice page in the same run.
Today you connect ASHDOCS to Make with the HTTP "Make a request" module, which calls the invoice endpoint with your API key in the X-API-Key header; the request below is what it sends for a two-line invoice that is emailed at once. An ASHDOCS Make app with modules for the whole invoice cycle (Create an invoice, Send an invoice, Get an invoice, Search invoices, Create a customer, Search customers, Generate a PDF, Redact a document, Watch invoice events and Make an API call) is built but hasn't been submitted to Make yet, so it isn't available.
curl -X POST https://www.ashdocs.com/api/v1/invoices \
-H "X-API-Key: ash_test_..." \
-H "Content-Type: application/json" \
-d '{
"customer": { "name": "Northwind Studio", "email": "accounts@northwind.example" },
"line_items": [
{ "description": "Website redesign", "quantity": "1", "unit_price": "1200.00", "tax_rate": "10" },
{ "description": "Hosting, monthly", "quantity": "12", "unit_price": "15.00", "tax_rate": "10" }
],
"currency": "USD",
"reference": "recA1b2C3d4E5f6G7",
"issue": true,
"send": { "channels": [{ "type": "email" }] }
}'const body = {
"customer": { "name": "Northwind Studio", "email": "accounts@northwind.example" },
"line_items": [
{ "description": "Website redesign", "quantity": "1", "unit_price": "1200.00", "tax_rate": "10" },
{ "description": "Hosting, monthly", "quantity": "12", "unit_price": "15.00", "tax_rate": "10" }
],
"currency": "USD",
"reference": "recA1b2C3d4E5f6G7",
"issue": true,
"send": { "channels": [{ "type": "email" }] }
};
const res = await fetch("https://www.ashdocs.com/api/v1/invoices", {
method: "POST",
headers: { "X-API-Key": "ash_test_...", "Content-Type": "application/json" },
body: JSON.stringify(body),
});
const invoice = await res.json();
console.log(invoice.number, invoice.hosted_url);import requests
body = {
"customer": {"name": "Northwind Studio", "email": "accounts@northwind.example"},
"line_items": [
{"description": "Website redesign", "quantity": "1", "unit_price": "1200.00", "tax_rate": "10"},
{"description": "Hosting, monthly", "quantity": "12", "unit_price": "15.00", "tax_rate": "10"},
],
"currency": "USD",
"reference": "recA1b2C3d4E5f6G7",
"issue": True,
"send": {"channels": [{"type": "email"}]},
}
r = requests.post(
"https://www.ashdocs.com/api/v1/invoices",
headers={"X-API-Key": "ash_test_..."},
json=body,
)
invoice = r.json()
print(invoice["number"], invoice["hosted_url"]){
"id": "inv_8df41725d6d0490d834c",
"kind": "invoice",
"status": "issued",
"number": "INV-0002",
"customer": { "name": "Northwind Studio", "email": "accounts@northwind.example", "id": "cus_da4dddf61db945fc9e5c" },
"line_items": [
{ "description": "Website redesign", "quantity": "1", "unit_price": "1200.00", "tax_rate": "10", "amount_formatted": "$1,200.00" },
{ "description": "Hosting, monthly", "quantity": "12", "unit_price": "15.00", "tax_rate": "10", "amount_formatted": "$180.00" }
],
"currency": "USD",
"issue_date": "2026-10-05",
"due_date": "2026-11-04",
"testing": true,
"totals": { "subtotal_formatted": "$1,380.00", "tax_formatted": "$138.00", "total_formatted": "$1,518.00", "balance_formatted": "$1,518.00" },
"credits_cost": 0,
"pdf_url": "https://api.ashdocs.com/api/v1/invoices/inv_8df41725d6d0490d834c/pdf",
"hosted_url": "https://api.ashdocs.com/i/b-CdSudfXKbeIFNXDPWQFLY9nT-ICHr2KFVyzR8Chu4"
}Response from a test key, trimmed. pdf_url is a temporary link; hosted_url does not expire.
Line items as an array
Line items is an array field. Add lines one by one, or map an array from an Array aggregator whose items have Description, Quantity, Unit price and Tax rate (%).
Instant invoice events
Watch invoice events starts a scenario when an invoice is sent, viewed, paid or overdue. It subscribes through ASHDOCS webhooks, which are on paid plans.
A blueprint to start from
The scenario blueprint at /workflows/ashdocs-invoice.make.blueprint.json holds a webhook, an HTTP request to POST /api/v1/invoices and a reply with the invoice number and link.
Make.com invoice automation in four steps
The same four steps work with the ASHDOCS app or with the HTTP module; only the field names in step 3 differ.
- 1. Start the scenario with any trigger: a Google Sheets or Airtable watch module, a form app, a schedule or a Custom webhook.
- 2. Add Create an invoice and create an ASHDOCS connection with an API key. Use a test key while you build, so test runs of the scenario never use credits.
- 3. Map Customer name, Customer email and Line items (Description, Quantity, Unit price, Tax rate (%)). Set Issue invoice to number the invoice now, and Email to customer to send it in the same call.
- 4. Run the scenario once, check the output, then switch it on. The module returns Invoice number, Status, Totals, Payment page URL and PDF URL for the modules after it.
Multiple line items on one invoice in a Make scenario
Make runs each module once per bundle. A search that returns five sheet rows gives five bundles, and five runs of Create an invoice would make five one-line invoices. To put the rows on one invoice, add Make's Array aggregator after the search, aggregate the rows into the Line items structure of Create an invoice, and map the result into Line items. The module then runs once and sends every row as a line of the same invoice.
With the HTTP module, build the same array in the JSON body as line_items: each item needs description and unit_price, and quantity (default 1), tax_rate and unit are optional. ASHDOCS calculates tax on each line and adds up the totals, so the scenario never has to.
Modules and fields
These are the API fields to send from the HTTP module, with the labels the ASHDOCS Make app will use once it is available. Make uses sentence case; the words match the Zapier and n8n apps.
| Kind | Module | Fields | API |
|---|---|---|---|
| Trigger | Watch invoice events | Events: Invoice sent, Invoice viewed, Invoice paid, Invoice overdue | invoice.sent, invoice.viewed, invoice.paid, invoice.overdue (webhooks, paid plans) |
| Action | Create an invoice | Saved customer ID or Customer name, Customer email, Customer phone (optional, needed for SMS reminders), Customer tax ID, Customer address | customer |
| Action | Create an invoice: Line items | Description, Quantity, Unit price, Tax rate (%), Unit | line_items[] |
| Action | Create an invoice: details | Currency, Due terms, Issue date, Due date, Reference, PO number, Notes, Terms, Template, Document type, Issue invoice | currency, due_terms, issue_date, due_date, reference, po_number, notes, terms, template, kind, issue |
| Action | Create an invoice: delivery | Email to customer, Email CC, Email subject, Email message, Idempotency key | send.channels[0], Idempotency-Key header |
| Action | Send an invoice | To, CC, Subject, Message | POST /api/v1/invoices/{id}/send |
| Search | Get an invoice, Search invoices | Invoice ID or Invoice number; status, customer email, search text, issue and due date filters | GET /api/v1/invoices |
| Action | Create a customer, Search customers | Name, Email, Phone, Tax ID, address; Email or name | /api/v1/customers |
| Action | Generate a PDF, Redact a document, Make an API call | Source, HTML / URL, Page size; File URL, Redact; any ASHDOCS endpoint | /api/v1/tools/*, any /api/v1 route |
Status and the HTTP route
The ASHDOCS app for Make isn't available yet: it hasn't been submitted to Make, so it isn't in Make's app directory and we can't invite you to it. Today you connect through Make's HTTP module, as shown below.
The HTTP route needs nothing from us: in the HTTP "Make a request" module, POST to https://www.ashdocs.com/api/v1/invoices with an X-API-Key header and a raw JSON body like the one above. The blueprint file is set up that way; replace ash_test_REPLACE_WITH_YOUR_KEY with your own key before you run it.
Issuing an invoice uses 1 credit, and test invoices use none. The free plan includes 100 credits per month. Make bills the operations your scenario runs.
Frequently asked questions
How do I create an invoice in Make?
Add the ASHDOCS Create an invoice module, or the HTTP "Make a request" module calling POST /api/v1/invoices with your API key in the X-API-Key header and the invoice as JSON. Either way ASHDOCS numbers the invoice and returns its PDF link and hosted page.
Can the scenario email the invoice?
Yes. Turn on Email to customer in the module, or include send with an email channel in the HTTP body, and ASHDOCS emails the invoice to the customer email in the same call.
How do I put several sheet rows on one invoice in Make?
Aggregate them first. Put an Array aggregator after the module that returns the rows and map its array into Line items, so Create an invoice runs once with one line per row.
Can a scenario start when an invoice is paid?
Yes. Watch invoice events with Invoice paid selected starts the scenario when the invoice is paid. It relies on ASHDOCS webhooks, which are on paid plans (Starter and up).
Plans
- 100 credits per month
- 1 seat
- No webhooks
- 1,500 credits per month
- 1 seat
- Webhooks
- 10,000 credits per month
- 3 seats
- Webhooks
- 30,000 credits per month
- 5 seats
- Webhooks
- 100,000 credits per month
- 10 seats
- Webhooks
Test keys are free, never expire and never use credits; plan rate limits apply. Webhooks are on paid plans. Issuing an invoice uses 1 credit. No per-seat fees. See full pricing.