Run the workflow by hand while testing.
Platform guide
n8n
Create your first receipt with a Manual Trigger, Edit Fields, and one HTTP Request node.
Start with sample data
For your first test, use sample data only. The goal is to confirm that n8n can create a receipt before you connect real emails, tickets, documents, customers, or actions.
Automation Receipts records what happened in the automation. Approval inside Automation Receipts is optional: approval can happen in Automation Receipts, n8n, Slack, email, another tool, or not be required at all.
Add sample receipt values that the HTTP Request node can send.
POST the JSON body to Automation Receipts.
Open the run detail page and confirm the timeline and review state.
HTTP Request settings
- Method
POST- URL
https://automationreceipts.com/api/v1/runs- Body type
- JSON
- Authentication
- Send your API key in the
Authorizationheader.
Required headers
Authorization: Bearer aar_live_REPLACE_ME Content-Type: application/json
Create an API key in Automation Receipts and use the full key value here. Do not paste API keys into screenshots, chat, public docs, or shared examples.
Edit Fields values
Most values in Edit Fields are strings. The exception below is approval_required: send it as a real JSON boolean, not the string "true" or "false".
| Field | Example value | Type | Notes |
|---|---|---|---|
automation_name | n8n First Receipt | String | Name shown in Automation Receipts. |
run_uid | n8n-first-receipt-{{$execution.id}} | String | Must be unique for each run. |
source_type | n8n | String | Use this for n8n workflows. |
trigger_type | manual_test | String | Good label for a Manual Trigger connection test. |
status | completed or needs_review | String | Use needs_review when the run is waiting on a person. |
risk_level | low | String | Use low-risk sample data for the first test. |
input_summary | Manual n8n connection test with sample input. | String | One summary is required. |
output_summary | A sample receipt payload was prepared. | String | Keep it short and plain. |
approval_required | false or true | Boolean | Send a JSON boolean, not a quoted string. |
approval_status | not_required or pending | String | Use pending when review is requested. |
final_action | No real action taken | String | Be clear about what did or did not happen. |
Dynamic run UID
Use a value that changes every time the workflow runs, such as n8n-first-receipt-{{$execution.id}}.
Automation Receipts uses run_uid to prevent duplicate receipts in the same workspace. If you run the same hardcoded run_uid twice, the second request is rejected as a duplicate.
No review needed example
Use this for the first connection test. It records a completed sample run where no review was needed.
{
"automation_name": "n8n First Receipt",
"run_uid": "n8n-first-receipt-{{$execution.id}}",
"source_type": "n8n",
"trigger_type": "manual_test",
"status": "completed",
"risk_level": "low",
"input_summary": "Manual n8n connection test with sample input.",
"output_summary": "A sample receipt payload was sent from n8n to Automation Receipts.",
"model_used": "none",
"approval_required": false,
"approval_status": "not_required",
"final_action": "No real action taken",
"events": [
{
"event_type": "trigger_received",
"event_label": "Manual test started",
"event_summary": "The n8n workflow was started by a Manual Trigger."
},
{
"event_type": "action_taken",
"event_label": "Receipt logged",
"event_summary": "n8n sent a sample receipt to Automation Receipts."
}
]
}
Review requested example
Use this when the workflow output should wait for a recorded review outcome. The review may happen in Automation Receipts or somewhere else.
{
"automation_name": "n8n Review Example",
"run_uid": "n8n-approval-review-{{$execution.id}}",
"source_type": "n8n",
"trigger_type": "manual_test",
"status": "needs_review",
"risk_level": "medium",
"input_summary": "Manual n8n connection test with sample input.",
"output_summary": "A sample draft was created and is waiting for review.",
"model_used": "none",
"approval_required": true,
"approval_status": "pending",
"final_action": "Draft created and waiting for review",
"events": [
{
"event_type": "trigger_received",
"event_label": "Manual test started",
"event_summary": "The n8n workflow was started by a Manual Trigger."
},
{
"event_type": "output_generated",
"event_label": "Sample draft created",
"event_summary": "The workflow prepared sample output for review."
},
{
"event_type": "approval_requested",
"event_label": "Review requested",
"event_summary": "The sample draft is waiting for a review outcome."
}
]
}
n8n save notes
Depending on your n8n version and account, workflows may autosave. Some node panels do not show a separate Save button.
After editing a node, close the node panel and check that the workflow itself is saved or autosaved before running the test again.
Troubleshooting
| Problem | What it usually means | Fix |
|---|---|---|
| 401 unauthorized | The Authorization header is missing, wrong, or uses a revoked key. |
Use Authorization: Bearer aar_live_... with the full active API key. Keep the key out of screenshots, chat, public docs, and shared examples. |
| 422 validation error | A required field is missing or a value is not allowed. | Check automation_name, run_uid, and at least one of input_summary or output_summary. Check allowed values in Payload fields. |
Duplicate run_uid |
A receipt with that run ID already exists in the workspace. | Use a dynamic value such as n8n-first-receipt-{{$execution.id}} instead of a hardcoded ID. |
| Invalid JSON body | The HTTP Request body is not valid JSON. | Use JSON body mode. Check commas, quotes, brackets, and n8n expressions that may output blank or malformed text. |
| Boolean values sent as strings | approval_required was sent as "true" or "false" instead of a JSON boolean. |
Send true or false without quotes. In n8n, make sure the final JSON body contains a real boolean. |