Markdown Invoice System / Workflow

Create new invoice based off of the invoice template

Generate html + pdf invoice with pandoc the transmit invoice to customer.

Once cleared payment update watermark re generate invoices as above and transmit to customer as receipt.

Commands to produce invoice outputs


#Produces HTML Invoice
pandoc invoice.md -o invoice.html

#Produces PDF Invoice
pandoc invoice.md --css=print.css -o invoice.pdf --pdf-engine=weasyprint

Invoice Template


::: content

# Invoice

**Invoice Number:** INV-1001  
**Date:** 2025-06-27  
**Due Date:** 2025-07-27

::: watermark
# PAID
:::

::: bill-to
## Bill To

**Name:** Customer Name  
**Address:** Street Address  
**City:** City  
**State:** State  
**ZIP:** Postal Code  
**Country:** Country  
**Email:** email@example.com  
**Phone:** +00-000-0000
:::

::: ship-to
## Ship To

**Name:** Recipient Name  
**Address:** Street Address  
**City:** City  
**State:** State  
**ZIP:** Postal Code  
**Country:** Country
:::

::: items
## Items

| Description       | Quantity | Unit Price | Total      |
|-------------------|----------|------------|------------|
| Item 1            | 5        | $10.00     | $50.00     |
| Item 2            | 2        | $20.00     | $40.00     |
| Item 3            | 1        | $30.00     | $30.00     |
| **Subtotal**      |          |            | **$120.00**|
| **Tax**           |          |            | **$12.00** |
| **Total**         |          |            | **$132.00**|
:::

::: notes
## Notes
- Payment is due within 30 days from the date of the invoice.
- Please make direct payment to Robert Manietta BSB:xxx-xxx Acc 13800027.
- If you have any questions concerning this invoice, contact Robert Manietta - sales@mannet.xyz
:::

---

Thank you for your business!

Robert Manietta    
Rosewood, QLD, 4340  
(07) 3280 9999  
sales@mannet.xyz  
www.mannet.xyz

:::

<style>
  body {
    font-family: Arial, sans-serif;
  }
  .content {
   max-width: 600px;
   margin: auto;
  }
  .watermark h1 {
    -webkit-transform: rotate(331deg);
    -moz-transform: rotate(331deg);
    -o-transform: rotate(331deg);
    transform: rotate(331deg);
    font-size: 12em;
    color: rgba(255, 5, 5, 0.17);
    position: absolute;
    font-family: 'Denk One', sans-serif;
    text-transform:uppercase;
    padding-left: 5%;
  }

  .section {
    margin-bottom: 20px;
  }

  .bill-to, .ship-to {
    display: inline-block;
    width: 48%;
  }

  .bill-to {
    float: left;
  }

  .ship-to {
    float: right;
  }

  .items::before {
    content: "";
    clear: both;
    display: table;
  }

  .items {
    margin-top: 10px;
  }

  .items table {
    width: 100%;
    border-collapse: collapse;
  }

  .items th, .items td {
    border: 1px solid #000;
    padding: 5px;
  }

  .notes {
    font-style: italic;
  }

  @media print {
    .bill-to, .ship-to {
      width: 48%;
    }
  }
</style>