---
title: "Send a quote by email"
method: POST
path: "/api/external/v2/quotes/{id}/send_by_email"
tags: ["Quotes"]
---

# Send a quote by email

`POST /api/external/v2/quotes/{id}/send_by_email`

## Request

- Base URL: `https://app.pennylane.com`
- URL: `https://app.pennylane.com/api/external/v2/quotes/{id}/send_by_email`
- Auth: OAuth 2
  - Authorization code: `https://app.pennylane.com/oauth/authorize`
  - Token URL: `https://app.pennylane.com/oauth/oauth/token` scopes: `quotes:all`

This endpoint allows you to send a quote by email to your customer.
This requires that the PDF file for that document has been generated
(this process can take a few minutes), so if you just created
the quote in our system, we may return a 409 error. You should
retry the request in a few minutes - if you receive a 204 response, that means
that the email is on its way. For more information about email sending, please
read \[this guide\](https://pennylane.readme.io/v2.0/docs/sending-documents-by-email).

The subject and body come from the company's default billing email template
for the customer's billing language, unless `email_template_id` is set.


> ℹ️
> This endpoint requires the following scope: `quotes:all`

## Path parameters

- `id` integer, required

## Headers

- `X-Company-Id` string

## Request body

- object
  - `recipients` string[]: Email recipients. If empty, the email will be sent to the recipient email addresses specified for the customer of this quote.
  - `email_template_id` integer: Billing email template to use for this send. It must belong to the company and have kind `billing_email_quote`. Its locale does not have to match the customer's billing language. Subject, body, cc and bcc then come from that template. When omitted, the company's default template for the customer's billing language is used. In that case only the subject and body are applied.

## Response `204`

Quote is being sent by email

## Other responses

- `400`: Bad request
- `401`: Access token is missing or invalid
- `403`: Access to this resource forbidden
- `404`: The resource was not found
- `409`: Conflict with the current state of the target resource, such as when trying to create a resource that already exists.
- `422`: Unprocessable content

## Changes

- **2026-11-03** `871f863307e5`: 2 info
  - added the new optional `header` request parameter `X-Company-Id`
  - added the new optional request property `email_template_id`

[Operation history](https://skmtc.dev/pennylane/apis/company-v2/changes/api/external/v2/quotes/:id/send_by_email/post.md)

---

[API](https://skmtc.dev/pennylane/apis/company-v2.md) - [All operations](https://skmtc.dev/pennylane/apis/company-v2/llms.txt) - [OpenAPI document](https://skmtc.dev/pennylane/apis/company-v2/revisions/871f863307e5?raw)
