Skip to main content
RapidDev - Software Development Agency
stripe-guide

How to customize invoice branding in Stripe

Customize Stripe invoice branding in Dashboard → Settings → Branding. Upload your logo, set brand colors, and customize the invoice template with a header, footer, and memo. You can also add custom fields and configure the customer-facing payment page. These settings apply to all invoices, hosted payment pages, receipts, and email notifications.

What you'll learn

  • How to upload your logo and set brand colors in Stripe
  • How to customize invoice headers, footers, and memos
  • How to add custom fields to invoices
  • How to configure the hosted payment page appearance
Book a free consultation
4.9Clutch rating
600+Happy partners
17+Countries served
190+Team members
Beginner5 min read10 minutesAll Stripe accountsMarch 2026RapidDev Engineering Team
TL;DR

Customize Stripe invoice branding in Dashboard → Settings → Branding. Upload your logo, set brand colors, and customize the invoice template with a header, footer, and memo. You can also add custom fields and configure the customer-facing payment page. These settings apply to all invoices, hosted payment pages, receipts, and email notifications.

Making Stripe Invoices Match Your Brand

Professional-looking invoices build trust and reinforce your brand. Stripe lets you customize invoices with your logo, brand colors, custom headers, footers, and additional fields. These branding settings apply globally to all invoices, receipts, the customer portal, and hosted payment pages. You can set most of this up in the Dashboard without any code, or use the API for per-invoice customization.

Prerequisites

  • A Stripe account
  • Your company logo in PNG, JPG, or SVG format (recommended: 128x128px minimum)
  • Your brand's primary color hex code

Step-by-step guide

1

Set your logo and brand color

Go to Stripe Dashboard → Settings → Branding. Upload your logo (icon version for small displays and full logo for invoices). Set your primary brand color using a hex code. This color appears on buttons, links, and the payment page.

Expected result: Your logo and brand color are saved and will appear on all invoices, receipts, and the hosted payment page.

2

Customize the invoice template

Go to Dashboard → Settings → Billing → Invoice template. Here you can set a default memo (appears on every invoice), footer text (e.g., payment terms, company details), and numbering prefix. You can also set the default payment terms (days until due).

Expected result: Default memo, footer, and numbering format are configured for all future invoices.

3

Add custom fields to invoices

Stripe supports custom fields on invoices — key-value pairs that appear below the invoice number. Use these for PO numbers, project references, or department codes. Set defaults in the template or override per-invoice via the API.

typescript
1const stripe = require('stripe')(process.env.STRIPE_SECRET_KEY);
2
3const invoice = await stripe.invoices.create({
4 customer: 'cus_abc123',
5 collection_method: 'send_invoice',
6 days_until_due: 30,
7 custom_fields: [
8 { name: 'PO Number', value: 'PO-2026-0042' },
9 { name: 'Project', value: 'Website Redesign Q1' },
10 ],
11 footer: 'Payment due within 30 days. Late payments subject to 1.5% monthly interest.',
12});

Expected result: The invoice includes custom fields displayed below the invoice header.

4

Configure the hosted payment page

The hosted payment page is what customers see when they click 'Pay invoice'. Your logo and brand color automatically apply here. Go to Dashboard → Settings → Branding → Checkout & Payment Links to customize the background color, button style, and additional branding elements.

Expected result: The hosted payment page displays your logo, brand colors, and customized styling.

5

Preview and test your branded invoice

Create a test invoice in test mode to see how your branding looks. Go to Billing → Invoices → Create invoice, add a line item, and finalize it. Click 'View invoice' to see the hosted version with your branding applied. Teams at RapidDev recommend sending a test invoice to yourself before going live.

Expected result: A test invoice with your logo, colors, custom fields, and footer is generated and viewable.

Complete working example

branded-invoice.js
1require('dotenv').config();
2const stripe = require('stripe')(process.env.STRIPE_SECRET_KEY);
3
4async function createBrandedInvoice(customerId, items, options = {}) {
5 // Add invoice items
6 for (const item of items) {
7 await stripe.invoiceItems.create({
8 customer: customerId,
9 amount: item.amount,
10 currency: item.currency || 'usd',
11 description: item.description,
12 });
13 }
14
15 // Create invoice with branding customizations
16 const invoice = await stripe.invoices.create({
17 customer: customerId,
18 collection_method: 'send_invoice',
19 days_until_due: options.daysUntilDue || 30,
20 description: options.memo || '',
21 footer: options.footer || 'Thank you for your business!',
22 custom_fields: options.customFields || [],
23 metadata: options.metadata || {},
24 });
25
26 // Finalize and send
27 await stripe.invoices.finalizeInvoice(invoice.id);
28 const sent = await stripe.invoices.sendInvoice(invoice.id);
29
30 return {
31 id: sent.id,
32 number: sent.number,
33 hosted_url: sent.hosted_invoice_url,
34 pdf_url: sent.invoice_pdf,
35 };
36}
37
38// Example usage
39createBrandedInvoice('cus_abc123', [
40 { amount: 50000, description: 'Consulting — 10 hours @ $50/hr' },
41 { amount: 15000, description: 'Report preparation and delivery' },
42], {
43 memo: 'March 2026 consulting engagement',
44 footer: 'Net 30. Questions? Contact billing@yourcompany.com',
45 customFields: [
46 { name: 'PO Number', value: 'PO-2026-0042' },
47 { name: 'Department', value: 'Engineering' },
48 ],
49 metadata: { engagement_id: 'ENG-2026-03' },
50}).then(console.log).catch(console.error);

Common mistakes when customizing invoice branding in Stripe

Why it's a problem: Uploading a very low-resolution logo

How to avoid: Use a logo at least 128x128 pixels. For best results on high-DPI displays, use 256x256 or larger.

Why it's a problem: Forgetting to set the footer with legal/tax information

How to avoid: Use the footer for your company registration, VAT number, payment terms, and contact details. This may be legally required in some jurisdictions.

Why it's a problem: Not testing the invoice appearance in test mode first

How to avoid: Always create a test invoice and preview the hosted page before going live. Check that your logo, colors, custom fields, and footer render correctly.

Why it's a problem: Setting custom fields that are too long

How to avoid: Custom field names are limited to 30 characters and values to 30 characters. Keep them concise.

Best practices

  • Upload both an icon (square) and full logo for best display across invoices and emails
  • Use your brand's primary color for a consistent look across Stripe-hosted pages
  • Include your company's legal name, registration number, and VAT ID in the invoice footer
  • Use custom fields for PO numbers, project references, or client-facing identifiers
  • Set a professional default memo that applies to all invoices
  • Preview invoices in test mode before sending live invoices to customers
  • Configure email settings in Dashboard → Settings → Emails to match your brand voice

Still stuck?

Copy one of these prompts to get a personalized, step-by-step explanation.

ChatGPT Prompt

Write a Node.js function that creates a branded Stripe invoice with custom fields (PO number, project name), a professional footer with payment terms, and a descriptive memo. Accept line items, customer ID, and branding options as parameters. Finalize and send the invoice.

Stripe Prompt

Create a Stripe invoice function in Node.js that supports custom branding: custom_fields for PO numbers and references, footer for legal text, memo for engagement description, and metadata for internal tracking. Finalize and send the invoice.

Frequently asked questions

Where do I set my Stripe invoice branding?

Dashboard → Settings → Branding for logo and colors. Dashboard → Settings → Billing → Invoice template for default memo, footer, and numbering.

Does branding apply to emailed invoices too?

Yes. Your logo and brand color appear in invoice emails, the hosted payment page, receipts, and the customer portal.

Can I use different branding for different customers?

Not at the account level — branding is global. However, you can customize the memo, footer, and custom_fields per invoice via the API for customer-specific details.

What image format should my logo be?

Stripe accepts PNG, JPG, and SVG. For best results, use a square PNG at least 128x128 pixels with a transparent background.

Can I add a custom header to invoices?

Stripe doesn't support fully custom headers, but you can add a description/memo that appears prominently on the invoice. For fully custom invoice layouts, you would need to generate PDFs yourself using the invoice data from the API.

RapidDev

Talk to an Expert

Our team has built 600+ apps. Get personalized help with your project.

Book a free consultation

Need help with your project?

Our experts have built 600+ apps and can accelerate your development. Book a free consultation — no strings attached.

Book a free consultation

We put the rapid in RapidDev

Need a dedicated strategic tech and growth partner? Discover what RapidDev can do for your business! Book a call with our team to schedule a free, no-obligation consultation. We'll discuss your project and provide a custom quote at no cost.