Branding Profiles API¶
Branding profiles control how your invoices look: logo, colors, fonts, and header/footer text applied to the rendered PDFs. Each account can have multiple named profiles, exactly one of which is the default. You can select a specific profile per document. If your account has no profiles yet, listing them seeds a default "Default" profile automatically.
Create Branding Profile¶
Request:
{
"name": "Acme Corp",
"primary_color": "#111827",
"accent_color": "#06B6D4",
"font_family": "Inter",
"header_text": "Acme Corp — Invoices",
"footer_text": "Generated by InvoicePDFs",
"hide_invoicepdfs_branding": false,
"is_default": false
}
| Field | Required | Description |
|---|---|---|
name |
Yes | Display name for the profile |
primary_color |
No | Hex color for primary elements. Defaults to #111827 |
accent_color |
No | Hex accent color. Defaults to #111827 |
font_family |
No | Font family name used in the PDF |
header_text |
No | Text shown in the PDF header |
footer_text |
No | Text shown in the PDF footer. Defaults to Generated by InvoicePDFs |
hide_invoicepdfs_branding |
No | Hide the "Generated by InvoicePDFs" credit. Paid plans only — see the note below. Defaults to false |
is_default |
No | Make this the default profile. Defaults to false |
hide_invoicepdfs_brandingis a paid-plan feature. Documents rendered on the Free plan always carry a small "Generated by InvoicePDFs" footer credit. Setting your ownfooter_textdoes not remove it — your text and the credit are shown together. The field is accepted on every plan and simply has no effect until the plan allows it, so you can set it once and keep sending it across an upgrade.
Response 200 OK:
{
"data": {
"id": "brnd_01XYZ",
"name": "Acme Corp",
"is_default": false,
"logo_file_id": null,
"primary_color": "#111827",
"accent_color": "#06B6D4",
"font_family": "Inter",
"header_text": "Acme Corp — Invoices",
"footer_text": "Generated by InvoicePDFs",
"hide_invoicepdfs_branding": false,
"created_at": "2026-07-20T10:00:00Z",
"updated_at": "2026-07-20T10:00:00Z"
}
}
Note
The first profile created for an account is always made the default, regardless of is_default. Setting is_default to true on a later profile moves the default to it.
Try it
List Branding Profiles¶
Profiles are returned with the default first. If the account has none, a "Default" profile is created and returned.
Response:
{
"data": [
{
"id": "brnd_01XYZ",
"name": "Default",
"is_default": true,
"logo_file_id": null,
"primary_color": "#111827",
"accent_color": "#111827",
"font_family": null,
"header_text": null,
"footer_text": "Generated by InvoicePDFs",
"hide_invoicepdfs_branding": false,
"created_at": "2026-07-20T10:00:00Z",
"updated_at": "2026-07-20T10:00:00Z"
}
]
}
Try it
Get Branding Profile¶
Fetch a single branding profile by ID, including its colors, fonts, and
logo_file_id. Returns 404 not_found if the profile doesn't exist.
Response:
{
"data": {
"id": "brnd_01XYZ",
"name": "Acme Corp",
"is_default": false,
"logo_file_id": "fil_01ABC",
"primary_color": "#111827",
"accent_color": "#06B6D4",
"font_family": "Inter",
"header_text": "Acme Corp — Invoices",
"footer_text": "Generated by InvoicePDFs",
"hide_invoicepdfs_branding": false,
"created_at": "2026-07-20T10:00:00Z",
"updated_at": "2026-07-20T10:00:00Z"
}
}
Try it
Update Branding Profile¶
Only include the fields you want to change:
| Field | Required | Description |
|---|---|---|
name |
No | Display name for the profile |
primary_color |
No | Hex color for primary elements |
accent_color |
No | Hex accent color |
font_family |
No | Font family name used in the PDF |
header_text |
No | Text shown in the PDF header |
footer_text |
No | Text shown in the PDF footer |
hide_invoicepdfs_branding |
No | Hide the "Generated by InvoicePDFs" branding |
is_default |
No | Set to true to make this the default profile |
Try it
Set Default¶
Makes this profile the default and clears the default flag on all others. The default profile is applied to documents that don't name a specific profile.
Response — the updated profile, now with is_default: true:
{
"data": {
"id": "brnd_01XYZ",
"name": "Acme Corp",
"is_default": true,
"logo_file_id": "fil_01ABC",
"primary_color": "#111827",
"accent_color": "#06B6D4",
"font_family": "Inter",
"header_text": "Acme Corp — Invoices",
"footer_text": "Generated by InvoicePDFs",
"hide_invoicepdfs_branding": false,
"created_at": "2026-07-20T10:00:00Z",
"updated_at": "2026-08-06T09:00:00Z"
}
}
Try it
Delete Branding Profile¶
If you delete the default profile, the oldest remaining profile is promoted to default.
Response:
Try it
Upload Logo¶
Upload a logo image for the profile. The request is multipart/form-data with a single file field. The file must be an image (image/png, image/jpeg, etc.); a non-image file returns 422 Unprocessable Entity with error code unprocessable_entity.
curl -X POST https://invoicepdfs.com/api/v1/branding-profiles/brnd_01XYZ/logo \
-H "Authorization: Bearer inv_..." \
-F "file=@logo.png"
The updated branding profile is returned, with logo_file_id set to the newly stored file.
Try it
Delete Logo¶
Clears the logo (logo_file_id) from the profile.
Response: