Zapier and Make
Koutei has no Zapier or Make app yet. Their generic HTTP steps can call the API all the same: this page lists what to put in each field.
Before you start
- Create an API key in Settings. A Preview only key makes previews only and can never use a credit: a good key to build with.
- Both recipes ask for the JSON form of the answer, so the totals, the document's id and the PDF arrive as fields the next step can use. The PDF is in base64.
- To check a row first, send the same step to
https://kouteisystems.com/api/v1/documents/validate: nothing is made, no credit is used, and the answer still holds the totals.
Zapier
Add a step with the app Webhooks by Zapier and the action event Custom Request. Fill it in like this:
| Field | Value |
|---|---|
| Method | POST |
| URL | https://kouteisystems.com/api/v1/documents |
| Data Pass-Through? | No |
| Data | The JSON body below, with your own values mapped into it |
| Unflatten | No |
| Basic Auth | Leave it empty: the key goes in a header |
| Headers | The five headers below, each as a name and a value |
| Return Raw Response | No, so Zapier reads the JSON answer into fields |
Zapier sends Data exactly as you type it, so it must be valid JSON once the mapped values are in: keep the quotes around each text value.
Make
Add the HTTP app's module Make a request. Fill it in like this:
| Field | Value |
|---|---|
| Authentication type | API key, sending the header Authorization with the value Bearer, a space, and your key (or No authentication, with the key in Headers) |
| URL | https://kouteisystems.com/api/v1/documents |
| Method | POST |
| Headers | The headers below (Authorization only if it is not in the credentials) |
| Body content type | application/JSON |
| Body input method | JSON string |
| Body content | The JSON body below, with your own values mapped into it |
| Parse response | Yes, so the answer’s values can be mapped |
| Return error if HTTP request fails | Yes (an advanced setting), so a refused request stops the scenario |
Make keeps a key in the module's credentials out of the request settings, which is why it suggests the API key authentication type over a header you type in.
To save the PDF with a later module (Google Drive, Dropbox, email), map its file name to filename and its data to toBinary(file_base64; base64), with file_base64 mapped from this module's answer. Make's toBinary turns the base64 text back into the file.
What comes back
Both tools send the same headers:
| Header | Value | Why |
|---|---|---|
Authorization | Bearer kt_live_… | Bearer, a space, and your whole key. |
Content-Type | application/json | The body is JSON. |
Accept | application/json | The answer comes back as JSON, so each value is a field you can map. |
Koutei-Version | 2026-10-01 | The API version the step was built against. |
Idempotency-Key | INV-0042-r1 | Your own key for this document, such as its number and a revision. The same key and request again within 24 hours return the same document, free. |
And the same body, here in preview mode (watermarked, free):
{
"template": "invoice",
"mode": "preview",
"reference": "JOB-0017",
"fields": {
"seller_name": "Aiko Tanaka Design",
"client_name": "Northwind Pty Ltd",
"invoice_number": "INV-0042",
"date": "2026-10-12",
"currency": "ZAR",
"items": [
{
"description": "Brand workshop",
"quantity": 1,
"unit_price": "6000.00"
},
{
"description": "Design hours",
"quantity": "7.5",
"unit_price": "850.00"
}
]
}
}- Set
modetofinalfor the real document (1 credit), and give each new document its ownIdempotency-Key: running the same step again within 24 hours then returns the same document for free, and an edited request under an old key is refused with422 idempotency_key_reusedinstead of making a second document. totalsholds the figures the document prints, such astotals.totalandtotals.balance_due, as text with a.decimal point: write them back to your sheet rather than working them out again.document.id,filenameandcredit_usedare there too.file_base64is the PDF in base64. Zapier's documentation does not describe turning base64 text into a file for a later step, so if your Zap needs the PDF as an attachment, Make (above) or n8n can take it directly.- A refused request stops the step with the API's message and a code (in Make, with Return error if HTTP request fails set to Yes, as above); Errors explains each one. The API reference lists every field of every template.
Checked against
The field names on this page are the tools' own, as their documentation gave them on 4 October 2026: for Zapier, the Custom Request action's field list on zapier.com, and Zapier's help article on sending webhooks in Zaps (updated 10 August 2026); for Make, Make's HTTP app page (updated 2 October 2026; Return error if HTTP request fails is among its advanced settings), and its text and binary functions page for toBinary (updated 4 June 2026). The tools can rename a field; if one has moved, the values above still apply. Keep your key out of anything you share, such as a shared Zap or a scenario blueprint: it starts with kt_live_.