DocMake
The PDF DocMake makes from the Account Statement template

The first page of the document DocMake makes from the sample values on this page.

Finance

Account Statement

An account statement is a period view of one customer ledger. It opens with the balance carried in, lists every invoice, credit note, and payment that touched the account since, and closes with what is still owed. Unlike an invoice it asks for nothing new; it reconciles what both sides already have on file.

The aging summary is the part a collections team reads first. Splitting the closing balance into what is not yet due and three bands of how late the rest is turns one number into a call list, and it gives the customer accounts payable clerk a reason to clear the oldest rows before the newest ones.

Statements go out on a cycle, usually the first working day of the month, one per active customer. Pull the transaction rows straight from the ledger, post them to the render API, and a run of several hundred finishes without anyone opening a spreadsheet.

Blanks to fill

account_number Account number
statement_date Statement date
period_start Period start
period_end Period end
company_name Company
company_address Company address
customer_name Customer
customer_contact Customer contact
customer_address Customer address
opening_balance Opening balance
closing_balance Closing balance
current_due Not yet due
past_due_30 1 to 30 days over
past_due_60 31 to 60 days over
past_due_90_plus Over 60 days
remittance_instructions How to pay
queries_contact Contact for questions
next_step What happens next
transactions[] One per item, so a row is added for every item in the list

The data behind the preview

This is the exact JSON that produced the document above. Change the values, POST them to the API, and you get your version back as DOCX or PDF. Lists grow and shrink with your data; the layout adapts.

  1. 01 Sign up free and duplicate this template into your workspace.
  2. 02 Adjust the wording and branding in the visual editor.
  3. 03 Fill it in the app, share it as a form link, or call the API.
sample-data.json
{
  "company_name": "Northwind Software Inc.",
  "company_address": "1200 Harbor Way, Seattle, WA 98101, United States",
  "statement_date": "September 1, 2026",
  "account_number": "ACC-10428",
  "period_start": "August 1, 2026",
  "period_end": "August 31, 2026",
  "customer_name": "Calderwood Media Group",
  "customer_contact": "Dana Whitfield, Accounts Payable, ap@calderwoodmedia.example",
  "customer_address": "540 Market Street, Floor 9, San Francisco, CA 94104, United States",
  "opening_balance": "$2,150.00",
  "transactions": [
    {
      "date": "Aug 3",
      "reference": "INV-2026-0138",
      "description": "Retainer, August",
      "charges": "$3,200.00",
      "credits": "$0.00",
      "running_balance": "$5,350.00"
    },
    {
      "date": "Aug 6",
      "reference": "PAY-8836",
      "description": "Payment received, bank transfer",
      "charges": "$0.00",
      "credits": "$2,150.00",
      "running_balance": "$3,200.00"
    },
    {
      "date": "Aug 10",
      "reference": "INV-2026-0140",
      "description": "Additional seats, 12",
      "charges": "$1,080.00",
      "credits": "$0.00",
      "running_balance": "$4,280.00"
    },
    {
      "date": "Aug 12",
      "reference": "INV-2026-0141",
      "description": "Data migration, first phase",
      "charges": "$2,400.00",
      "credits": "$0.00",
      "running_balance": "$6,680.00"
    },
    {
      "date": "Aug 17",
      "reference": "PAY-8871",
      "description": "Payment received, bank transfer",
      "charges": "$0.00",
      "credits": "$3,200.00",
      "running_balance": "$3,480.00"
    },
    {
      "date": "Aug 19",
      "reference": "INV-2026-0142",
      "description": "Design and development sprint",
      "charges": "$4,850.00",
      "credits": "$0.00",
      "running_balance": "$8,330.00"
    },
    {
      "date": "Aug 21",
      "reference": "CN-2026-0031",
      "description": "Credit note, hosting billed twice",
      "charges": "$0.00",
      "credits": "$450.00",
      "running_balance": "$7,880.00"
    },
    {
      "date": "Aug 24",
      "reference": "INV-2026-0145",
      "description": "Priority support, August",
      "charges": "$620.00",
      "credits": "$0.00",
      "running_balance": "$8,500.00"
    },
    {
      "date": "Aug 27",
      "reference": "PAY-8902",
      "description": "Payment received, bank transfer",
      "charges": "$0.00",
      "credits": "$1,080.00",
      "running_balance": "$7,420.00"
    },
    {
      "date": "Aug 31",
      "reference": "INV-2026-0149",
      "description": "Hosting, September",
      "charges": "$450.00",
      "credits": "$0.00",
      "running_balance": "$7,870.00"
    }
  ],
  "closing_balance": "$7,870.00",
  "current_due": "$6,320.00",
  "past_due_30": "$1,550.00",
  "past_due_60": "$0.00",
  "past_due_90_plus": "$0.00",
  "remittance_instructions": "Transfer to Northwind Software Inc., account 4412 9087, routing 125000024, quoting the account number above. Card payment is taken on the phone for anything under $2,000.00.",
  "queries_contact": "billing@northwind.example, or call 206 555 0142 on a weekday morning",
  "next_step": "Please settle the amount shown as 1 to 30 days over by September 8, 2026. The rest falls due on the date printed on each invoice."
}

Generate this document via the API

One template plus changing data is the whole point. The list of blanks above is the contract, and every new set of values comes back in the same layout: fill it in the app, hand someone a form link, or POST the JSON and get the file straight back.

The request below carries this page's own values, so it runs as soon as the template exists in your workspace. Swap the values for yours and the response is your document.

make-statement-of-account.sh
curl -X POST https://app.docmake.io/api/v1/render \
  -H "Authorization: Bearer $DOCMAKE_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json" \
  --output statement-of-account.pdf \
  --data-binary @- <<'JSON'
{
  "template_id": "tmpl_your_template_id",
  "format": "pdf",
  "data": {
    "company_name": "Northwind Software Inc.",
    "company_address": "1200 Harbor Way, Seattle, WA 98101, United States",
    "statement_date": "September 1, 2026",
    "account_number": "ACC-10428",
    "period_start": "August 1, 2026",
    "period_end": "August 31, 2026",
    "customer_name": "Calderwood Media Group",
    "customer_contact": "Dana Whitfield, Accounts Payable, ap@calderwoodmedia.example",
    "customer_address": "540 Market Street, Floor 9, San Francisco, CA 94104, United States",
    "opening_balance": "$2,150.00",
    "transactions": [
      {
        "date": "Aug 3",
        "reference": "INV-2026-0138",
        "description": "Retainer, August",
        "charges": "$3,200.00",
        "credits": "$0.00",
        "running_balance": "$5,350.00"
      },
      {
        "date": "Aug 6",
        "reference": "PAY-8836",
        "description": "Payment received, bank transfer",
        "charges": "$0.00",
        "credits": "$2,150.00",
        "running_balance": "$3,200.00"
      },
      {
        "date": "Aug 10",
        "reference": "INV-2026-0140",
        "description": "Additional seats, 12",
        "charges": "$1,080.00",
        "credits": "$0.00",
        "running_balance": "$4,280.00"
      },
      {
        "date": "Aug 12",
        "reference": "INV-2026-0141",
        "description": "Data migration, first phase",
        "charges": "$2,400.00",
        "credits": "$0.00",
        "running_balance": "$6,680.00"
      },
      {
        "date": "Aug 17",
        "reference": "PAY-8871",
        "description": "Payment received, bank transfer",
        "charges": "$0.00",
        "credits": "$3,200.00",
        "running_balance": "$3,480.00"
      },
      {
        "date": "Aug 19",
        "reference": "INV-2026-0142",
        "description": "Design and development sprint",
        "charges": "$4,850.00",
        "credits": "$0.00",
        "running_balance": "$8,330.00"
      },
      {
        "date": "Aug 21",
        "reference": "CN-2026-0031",
        "description": "Credit note, hosting billed twice",
        "charges": "$0.00",
        "credits": "$450.00",
        "running_balance": "$7,880.00"
      },
      {
        "date": "Aug 24",
        "reference": "INV-2026-0145",
        "description": "Priority support, August",
        "charges": "$620.00",
        "credits": "$0.00",
        "running_balance": "$8,500.00"
      },
      {
        "date": "Aug 27",
        "reference": "PAY-8902",
        "description": "Payment received, bank transfer",
        "charges": "$0.00",
        "credits": "$1,080.00",
        "running_balance": "$7,420.00"
      },
      {
        "date": "Aug 31",
        "reference": "INV-2026-0149",
        "description": "Hosting, September",
        "charges": "$450.00",
        "credits": "$0.00",
        "running_balance": "$7,870.00"
      }
    ],
    "closing_balance": "$7,870.00",
    "current_due": "$6,320.00",
    "past_due_30": "$1,550.00",
    "past_due_60": "$0.00",
    "past_due_90_plus": "$0.00",
    "remittance_instructions": "Transfer to Northwind Software Inc., account 4412 9087, routing 125000024, quoting the account number above. Card payment is taken on the phone for anything under $2,000.00.",
    "queries_contact": "billing@northwind.example, or call 206 555 0142 on a weekday morning",
    "next_step": "Please settle the amount shown as 1 to 30 days over by September 8, 2026. The rest falls due on the date printed on each invoice."
  }
}
JSON

tmpl_your_template_id is a stand-in: build this template in the visual editor and copy the id it shows, or create one with POST /api/v1/templates. Keys, formats, strict mode and batches are in the API reference.

Or let an AI assistant do it

The DocMake MCP server lets Claude and other assistants make this document the same way. Install it once:

claude mcp add docmake \
  --env DOCMAKE_API_KEY=dm_your_api_key \
  -- npx -y @docmake/mcp@latest

Then ask for the document in plain words:

Make a PDF from my Account Statement template with account number "ACC-10428" and statement date "September 1, 2026".

How the MCP server works →

More finance templates