See llms.txt for all machine-readable content.
Transform uploaded sales CSV files into validated, enriched invoices, all handled natively inside n8n using Data tables, validation logic, enrichment, duplicate detection, and automated email notifications.
This workflow demonstrates a full ETL + business automation pattern, turning raw CSV data into structured, auditable records ready for storage and customer notifications.
Products DatatableInvoices DatatableStores your product catalog with SKU-based pricing and tax details.
| Column | Type | Example |
|---|---|---|
| sku | String | PROD-001 |
| name | String | Premium Widget |
| price | Number | 49.99 |
| tax_rate | Number | 0.10 |

Stores validated, calculated invoices created by this workflow.
| Column | Type | Example |
|---|---|---|
| invoice_id | String | INV-20251103-001 |
| customer_email | String | [email protected] |
| order_date | Date | 2025-01-15 |
| subtotal | Number | 99.98 |
| total_tax | Number | 10.00 |
| grand_total | Number | 109.98 |
| created_at | DateTime | 2025-11-03T08:00:00Z |

Import the provided workflow JSON file into your n8n instance.
Use cURL or Postman to send a test CSV to your endpoint.
curl -X POST \
-H "Content-Type: text/csv" \
--data-binary $'sku,quantity,customer_email,order_date\nPROD-001,2,[email protected],2025-01-15\nPROD-002,1,[email protected],2025-01-15' \
https://<your-n8n-url>/webhook/process-sales
{
"success": true,
"processed_at": "2025-11-04T15:36:52.899Z",
"invoice_count": 1,
"invoices": {
"to": "[email protected]",
"subject": "Invoice INV-1762270612772-1 - Order Confirmation",
"body": "Dear Customer,\n\nThank you for your order!\n\nInvoice ID: INV-1762270612772-1\nOrder Date: 1/14/2025\n\nSubtotal: $99.98\nTax: $10.00\nGrand Total: $109.98\n\nThank you for your business!\n\nBest regards,\nSales Team"
},
"email_notifications": [
{
"to": "[email protected]",
"subject": "Invoice INV-1762270612772-2 - Order Confirmation",
"body": "Dear Customer,\n\nThank you for your order!\n\nInvoice ID: INV-1762270612772-2\nOrder Date: 1/14/2025\n\nSubtotal: $89.99\nTax: $9.00\nGrand Total: $98.99\n\nThank you for your business!\n\nBest regards,\nSales Team"
}
],
"message": "All invoices processed and customers notified"
}
Occurs when the CSV file is missing required columns or contains invalid data.
{
"success": false,
"message": "CSV validation failed",
"error": "Validation failed: [ { \"row\": 2, \"errors\": [\"Valid email is required\"] } ]"
}
Browse similar workflows:
Sales & CRM automation templates
Data Processing templates