EN
Sign up

Template library

Invoice PDF templates you can customize

Choose an invoice template, add your branding, and connect your customer data. Customize line items, payment dates, and totals in the ShipPDF visual editor.

05designs available
06categories

5 templates

Make the invoice yours

Build an invoice around your business

Start with a catalog design and adjust what appears on each invoice. These are the fields to review before publishing your copy.

Branding and contact details

Add your logo, colors, and typography. Check your business details and the customer’s billing address.

Invoice number, dates, and payment terms

Connect the invoice number, issue date, due date, and payment instructions to your data.

Line items and longer documents

Use a dynamic table for descriptions, quantities, and prices. Try an invoice with many rows to check its page breaks.

Currency, tax, and totals

Connect amounts from your billing system and adjust their labels and formatting. Review the calculations configured in the template before using it.

How to use an invoice template

  1. Copy the design

    Open a template from this page, sign in, and choose the project where you want to save your copy.

  2. Customize and preview

    Adjust the layout and field bindings. Use sample data to check long customer names, several line items, and payment terms.

  3. Publish and generate

    Publish your copy to use it from the app or the API. For an integration, copy your published template’s ID.

Your data, your layout

What data to send to an invoice

This example combines invoice data with the request that sends it to ShipPDF. Download it and adapt it to the copy you publish.

The invoice fields are illustrative: designs do not all share one schema. Match their names to “Schema & default data” in your template and replace template_id with your published copy’s ID.

Download invoice-request.json Understand data field bindings
invoice-request.json
{
  "template_id": "YOUR_PUBLISHED_TEMPLATE_ID",
  "expiry_minutes": 60,
  "data": {
    "invoice": {
      "number": "INV-1042",
      "issued_on": "2026-10-30",
      "due_on": "2026-11-13",
      "currency": "USD",
      "company_name": "Northstar Studio",
      "customer_name": "Acme Co.",
      "items": [
        {
          "description": "Design services",
          "quantity": 12,
          "unit_price": 90,
          "amount": 1080
        },
        {
          "description": "Monthly hosting",
          "quantity": 1,
          "unit_price": 40,
          "amount": 40
        }
      ],
      "subtotal": 1120,
      "tax_label": "Tax",
      "tax_amount": 112,
      "total": 1232,
      "payment_terms": "Payment due within 14 days."
    }
  }
}

From template to PDF

Generate an invoice with the ShipPDF API

Save the file as invoice-request.json, replace the template ID, and adapt its data. Create an API token with documents:create and documents:read and access to that template. Run these commands from your terminal or server.

1. Submit the invoice data

POST /v1/documents
export SHIPPDF_API_TOKEN='YOUR_API_TOKEN'

curl --fail-with-body https://api.shippdf.com/v1/documents \
  -H "Authorization: Bearer $SHIPPDF_API_TOKEN" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: invoice-INV-1042" \
  --data-binary @invoice-request.json

A successful request uses one generation credit and returns HTTP 202 with a queued document. Keep the token out of browser code. Reuse the idempotency key only when retrying the same request; use a new one if you change the invoice.

Example response · HTTP 202{"id":"doc_example","status":"queued","pdf_url":null}

2. Check the document and open the PDF

GET /v1/documents/{document_id}
export SHIPPDF_DOCUMENT_ID='YOUR_RETURNED_DOCUMENT_ID'

curl --fail-with-body \
  "https://api.shippdf.com/v1/documents/$SHIPPDF_DOCUMENT_ID" \
  -H "Authorization: Bearer $SHIPPDF_API_TOKEN"

Use the actual ID from your response. If the status is queued or processing, wait before checking again. When it is completed, open the returned pdf_url. If it is failed, inspect failure before generating again.

Example response when complete{"id":"doc_example","status":"completed","expiry_minutes":60,"pdf_url":"https://…/document.pdf"}

The example sets expiry_minutes: 60 for one-hour download links. Read the same document again to get a fresh link without generating another invoice.

Invoice template questions

Can I change an invoice’s logo and colors?

Yes. Copy the template into your project and change its images, colors, typography, and content in the visual editor. Your copy is independent of the catalog design.

Does the template calculate tax automatically?

Review the template’s configuration. You can supply amounts already calculated by your billing system or configure supported calculations in the design. Do not assume a design includes the tax rules your business needs.

What happens when an invoice has many line items?

Use a dynamic table and check its preview with a long invoice before publishing. Review page breaks, headers, and the position of totals with your own data.

Can I generate invoices without writing code?

Yes. After copying and customizing a template, you can generate documents from the app. You can also use a supported integration or an AI assistant connected to ShipPDF.

Can I send the catalog design’s ID to the API?

First copy the design into your project and publish your copy. POST /v1/documents takes that published template’s ID and data matching its schema.

Continue your invoicing workflow

Choose your next invoice design

Copy a template, adapt its fields, and publish a version for your customers.

Back to invoice designs
← Explore all templates