{"id":13558983,"url":"https://github.com/mrzool/invoice-boilerplate","last_synced_at":"2025-04-12T18:43:27.571Z","repository":{"id":48826775,"uuid":"45388557","full_name":"mrzool/invoice-boilerplate","owner":"mrzool","description":"Simple automated LaTeX invoicing system","archived":false,"fork":false,"pushed_at":"2024-07-31T13:45:02.000Z","size":1640,"stargazers_count":713,"open_issues_count":8,"forks_count":102,"subscribers_count":27,"default_branch":"master","last_synced_at":"2025-04-03T20:12:10.686Z","etag":null,"topics":["latex","makefile","pandoc","pdf","typesetting","yaml"],"latest_commit_sha":null,"homepage":"http://mrzool.cc/tex-boilerplates/","language":"TeX","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mrzool.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2015-11-02T10:45:54.000Z","updated_at":"2025-03-25T18:52:15.000Z","dependencies_parsed_at":"2024-07-31T17:13:35.724Z","dependency_job_id":null,"html_url":"https://github.com/mrzool/invoice-boilerplate","commit_stats":{"total_commits":76,"total_committers":7,"mean_commits":"10.857142857142858","dds":"0.10526315789473684","last_synced_commit":"8ef13f71b4d63dc29ebb67915fecb35fa3df9be2"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mrzool%2Finvoice-boilerplate","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mrzool%2Finvoice-boilerplate/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mrzool%2Finvoice-boilerplate/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mrzool%2Finvoice-boilerplate/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mrzool","download_url":"https://codeload.github.com/mrzool/invoice-boilerplate/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248617130,"owners_count":21134190,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["latex","makefile","pandoc","pdf","typesetting","yaml"],"created_at":"2024-08-01T12:05:16.269Z","updated_at":"2025-04-12T18:43:27.549Z","avatar_url":"https://github.com/mrzool.png","language":"TeX","funding_links":[],"categories":["TeX","LATEX","latex","Finance \u0026 Business"],"sub_categories":[],"readme":"# Invoice Boilerplate\n\nSimple automated LaTeX invoicing system for freelancers.\n\n## Intro\n\nBuilt along the lines of [cv-boilerplate](https://github.com/mrzool/cv-boilerplate) and [letter-boilerplate](https://github.com/mrzool/letter-boilerplate), this boilerplate contains the bare minimum to produce a professional-looking invoice with the least possible effort.\n\n![preview](preview.png)\n\nThe invoice content lives in `details.yml` and it's structured like so:\n\n```YAML\ninvoice-nr: 2015-11-04\nauthor: Max Mustermann\ncity: Musterstadt\nfrom:\n- Musterstraße 37\n- 12345 Musterstadt\nto:\n- Erika Mustermann\n- Musterallee 1\n- 12345 Musterstadt\n- Germany\nVAT: 20\nservice:\n- description: The first service provided\n  price: 450.00\n- description: And another one, with a list of details\n  price: 245.00\n  details:\n    - Some more detailed explanation\n    - of the service provided\n    - Looking good\n- description: The last service provided\n  price: 245.00\n```\n\nWhen running `make`, [Pandoc](http://pandoc.org/) starts iterating on the YAML file, populates `template.tex` with your data, and pipes the result to XeTeX. XeTeX deals with the typesetting and compiles a PDF ready to be printed/faxed/emailed and archived (see the [output](output.pdf)).\n\nThe math gets handled internally by LaTeX through the `spreadtab` package, Excel-style (mad props to [clemens](http://tex.stackexchange.com/users/5049/clemens) on TeX SE for helping me out with this). You just need to provide a VAT rate and your prices, the boilerplate takes care of the rest.\n\nUnless you plan to edit the template, no particular LaTeX knowledge is required to use this boilerplate. If you need your invoice in a language other than English, finding the relevant strings in `template.tex` and translating them to your language should be easy enough.\n\n## Dependencies\n\n1. LaTeX with the following extra packages: `fontspec` `geometry` `ragged2e` `spreadtab` `fp` `xstring` `arydshln` `hhline` `titlesec` `enumitem` `xunicode` `xltxtra` `hyperref` `polyglossia` `wallpaper` `footmisc`\n2. [Pandoc](http://pandoc.org/), the universal document converter.\n\nI highly recommend [TinyTeX](https://yihui.org/tinytex/) as LaTeX distribution. All additional packages can be installed with `tlmgr` as needed.\n\n## Getting started\n\n1. Open `details.yml` with your text editor and fill it with your details, the invoice recipient's details, services/prices, and the desired settings.\n2. Run `make` to compile the PDF.\n\nSome countries require invoices to be signed. If a file named `signature.pdf` is present in the directory, the boilerplate will automatically print it after the closing note as a final touch. Follow [this method](http://tex.stackexchange.com/a/32940/82423) to import your own signature.\n\n**Note**: this template needs to be compiled with XeTeX.\n\n### Note for Windows users\n\nAlthough I didn't test it, you can probably use this on Windows, too. Both [Pandoc](http://pandoc.org/installing.html) and LaTeX can be installed on Windows and you should be able to run makefiles on Windows through [Cygwin](https://www.cygwin.com/). If that's too much hassle, this command should do the trick in Powershell:\n\n    pandoc details.yml -o output.pdf --template=template.tex --pdf-engine=xelatex\n\n## Available settings\n\n- **`VAT`**: Your VAT rate.\n- **`currency`**: Your currency code (USD, EUR...)\n- **`commasep`**: Set to `true` to use a comma as decimal separator. This is for display purposes only—remember to always use a dot to set the prices in your YAML file.\n- **`lang`**: Sets the main language through the `polyglossia` package. This is important for proper hyphenation and date format.  Use [IETF language tags format](https://tools.ietf.org/html/bcp47), as that is [what Pandoc expects](https://pandoc.org/MANUAL.html#language-variables).\n- **`seriffont`**: Used for the heading and the sender address. Hoefler Text is the default, but every font installed on your system should work out of the box thanks to XeTeX.\n- **`sansfont`**: Used to render the recipient address, the table and the closing note. Defaults to Helvetica Neue.\n- **`fontsize`**: Possible values here are 10pt, 11pt and 12pt.\n- **`geometry`**: A string that sets the margins through `geometry`. Read [this](https://www.sharelatex.com/learn/Page_size_and_margins) to learn how this package works.\n- **`closingnote`**: This gets printed after the table as a closing note. Use it to provide your bank details and a thank you message.\n- **`letterhead`**: include custom letterhead in the PDF (see below).\n\n## Custom letterhead\n\nIf you have already designed your own letterhead and want to use it with this template, including it should be easy enough. Set the `letterhead` option to `true` to activate the `wallpaper` package in the template. `wallpaper` will look for a file named `letterhead.pdf` in the project root folder and print it on the PDF before compiling the document. Change the fonts to match the ones in your letterhead, adjust the margins with `geometry` and you should be all set.\n\n## Recommended readings\n\n- [Typesetting Automation](http://mrzool.cc/writing/typesetting-automation/), my article about this project with in-depth instructions and some suggestions for an ideal workflow.\n- [Grids of Numbers Recommendations](http://practicaltypography.com/grids-of-numbers.html) on Butterick's Practical Typography\n- [Multichannel Text Processing](https://ia.net/topics/multichannel-text-processing/) by iA\n- [Why Microsoft Word must Die](http://www.antipope.org/charlie/blog-static/2013/10/why-microsoft-word-must-die.html) by Charlie Stross\n- [Word Processors: Stupid and Inefficient](http://ricardo.ecn.wfu.edu/~cottrell/wp.html) by Allin Cottrell\n- [Proprietary Binary Data Formats: Just Say No!](https://web.archive.org/web/20170730105025/http://www.podval.org/~sds/data.html) by Sam Steingold\n- [The Beauty of LaTeX](http://nitens.org/taraborelli/latex) by Dario Taraborelli\n\n## Resources\n\n- [TinyTeX](https://yihui.org/tinytex/) is a lightweight, cross-platform, portable, and easy-to-maintain LaTeX distribution based on TeX Live.\n- Refer to [pandoc's documentation](http://pandoc.org/MANUAL.html#templates) to learn more about how templates work.\n- If you're not familiar with the YAML syntax, [here](http://learnxinyminutes.com/docs/yaml/)'s a good overview.\n- If you want to edit the template but LaTeX scares you, these [docs](https://www.sharelatex.com/learn/Main_Page) put together by ShareLaTeX cover most of the basics and are surprisingly kind to the beginner.\n- Odds are your question already has an answer on [TeX Stack Exchange](https://www.sharelatex.com/learn/Main_Page). Also, pretty friendly crowd in there.\n- Need to fax that invoice? Check out [Phaxio](https://www.phaxio.com/) and learn how to send your faxes from the command line with a simple API call.\n\n## See also\n\n- [cv-boilerplate](https://github.com/mrzool/cv-boilerplate) — Easing the process of building and maintaining a CV using LaTeX\n- [letter-boilerplate](https://github.com/mrzool/letter-boilerplate) — Typeset your important letters without leaving your text editor\n\n## License\n\n[GPL](http://www.gnu.org/licenses/gpl-3.0.txt)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmrzool%2Finvoice-boilerplate","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmrzool%2Finvoice-boilerplate","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmrzool%2Finvoice-boilerplate/lists"}