Pennylane can be the event source for invoice and customer communications, while Volanea handles the actual transactional delivery. This guide explains how to send email from Pennylane through Zapier and Volanea’s REST API without pretending there is a native Pennylane marketplace app or one-click Volanea plugin.
The integration path: Pennylane → Zapier → Volanea
Pennylane does not provide a native Volanea app, marketplace listing, or built-in “send through Volanea” setting. The practical no-code route is Pennylane’s Zapier connector, followed by a Webhooks by Zapier action that calls Volanea’s POST /v1/send endpoint.
That architecture has three distinct jobs:
- Pennylane supplies the business event and invoice data.
- Zapier receives the Pennylane trigger, applies any filters or formatting, and makes the authenticated HTTP request.
- Volanea queues and sends the email from your verified sending domain.
Pennylane’s official Zapier connector is available on its Essentiel and Premium subscriptions. Its documented connector includes five triggers and is based on Pennylane API V2. One relevant trigger is New Customer Invoice V2, which fires when a new customer invoice is created or retrieves existing invoices using optional filters. Zapier identifies this trigger as polling rather than instant, so it should be treated as an automation that may run after a short polling delay—not as a synchronous invoice-delivery pipeline. (help.pennylane.com)
For most teams, this route is preferable to building against Pennylane’s developer webhooks immediately. Pennylane also has beta webhook subscriptions that POST to an HTTPS endpoint when subscribed events occur, but Pennylane explicitly recommends falling back to changelog endpoints while that webhook feature remains in beta. That makes the Zapier route the simpler operational choice for a standard business workflow such as “a customer invoice is created, then send a branded notification.” (pennylane.readme.io)
What actually triggers the email in Pennylane
The concrete trigger for this setup is:
Pennylane in Zapier: New Customer Invoice V2
This trigger is the start of the Zap. It is appropriate when you want to notify a customer, an account manager, or an internal billing team about a newly created Pennylane customer invoice.
Do not confuse “new invoice” with “invoice paid,” “invoice sent,” or “invoice due.” Those are different business events. A new-invoice trigger means the record has been created in Pennylane; it does not by itself prove that a PDF is ready, that the invoice is finalized, or that it is valid to email under your organization’s invoicing policy.
Decide which invoice state is safe to email
Pennylane’s customer-invoice object includes fields such as id, invoice_number, currency, amount, currency_amount, currency_amount_before_tax, date, deadline, paid, and status. The documented statuses include values such as draft, incomplete, paid, partially_paid, late, cancelled, and credit_note. (pennylane.readme.io)
That matters because a newly detected invoice may be a draft. If your recipient should only hear from you after approval or finalization, add a Zapier Filter step before the Volanea request. A good default rule is to stop the flow when any of these conditions is true:
draftis true.statusisdraft,incomplete,cancelled, orcredit_note.- The intended recipient email address is blank.
- The invoice is a credit note but your message template is written for invoices.
- The customer has opted out of this type of non-essential communication.
This prevents a common automation failure: a billing user creates a draft for review, Zapier sees a new record, and the customer receives a message that implies payment is due before anyone approved the document.
A note on invoices that Pennylane itself emails
Pennylane has a separate API endpoint for sending a finalized or imported customer invoice by email. That endpoint can return 409 Conflict while the invoice PDF is still being generated, and Pennylane advises retrying a few minutes later. It also warns that emailing an invoice eligible for electronic invoicing can prevent later transmission through an approved platform. Do not mix that Pennylane invoice-sending flow with a Volanea notification flow unless you have deliberately designed the legal and document-delivery behavior. (pennylane.readme.io)
In this guide, Volanea sends a notification email. If the email must include an invoice PDF or act as the official invoice-delivery channel, involve your finance and compliance owners before enabling the Zap.
Before you build the Zap
Prepare these items first:
- A Pennylane account with access to the Zapier integration.
- A Zapier account with permission to use Webhooks by Zapier.
- A Volanea project and a secret API key beginning with
sk_or a test key beginning withsk_test_. - A sending address on a domain verified in Volanea, such as
billing@updates.example.com. - A clear policy for which invoice statuses should create an email.
- A safe test recipient address that your team controls.
Volanea’s API uses https://api.volanea.com as its base URL. Transactional sends use POST /v1/send, are authenticated with a bearer token, and accepted messages are queued; a successful request means Volanea accepted the email for processing, not that the recipient has opened or received it. Track final outcomes with Volanea’s email records or delivery webhooks rather than treating the send response as proof of inbox delivery. (volanea.com)
If you are estimating operational cost before rollout, review transactional email pricing alongside your Zapier task volume. One invoice event can create more than one task when you add filters, formatters, lookups, and notification branches.
Build the Pennylane trigger in Zapier
Create a new Zap and select Pennylane as the trigger app. Choose the trigger event New Customer Invoice V2.
Connect Pennylane through Zapier’s authorization flow and select the right company. Pennylane’s setup documentation says the connector authorization asks you to allow Zapier access to your Pennylane account, and recommends using a sandbox environment for first tests where possible. (help.pennylane.com)
Test with a controlled customer invoice
Create one non-production or sandbox customer invoice with recognizable values:
- Invoice number:
TEST-2026-001 - Amount:
125.00 - Currency:
EUR - Issue date:
2026-10-11 - Payment deadline:
2026-10-25 - Customer email: an inbox your team controls
Run the trigger test. Zapier will show the fields it received from Pennylane. Do not build mappings from guessed field names copied from another Zap. Pennylane invoices can contain different data depending on whether they were created manually, imported, generated from a quote, or associated with a particular customer configuration.
The invoice payload you should expect
The underlying Pennylane API V2 customer-invoice response includes an invoice identifier and core billing fields. A representative invoice record has this shape:
{
"id": 48291,
"label": "October support services",
"invoice_number": "TEST-2026-001",
"currency": "EUR",
"amount": "125.00",
"currency_amount": "125.00",
"currency_amount_before_tax": "100.00",
"exchange_rate": "1.0",
"date": "2026-10-11",
"deadline": "2026-10-25",
"currency_tax": "25.00",
"tax": "25.00",
"language": "en_GB",
"paid": false,
"status": "upcoming"
}
The field names above come from Pennylane’s documented customer-invoice response model. Your Zapier sample may expose additional customer details, nested objects, or flattened fields. Critically, do not assume that an invoice response always includes a usable recipient email. Pennylane’s own invoice-email endpoint describes recipients separately and falls back to the customer’s configured recipient addresses only when no recipients are supplied. That is a sign that recipient selection is business data to validate—not a field to blindly trust. (pennylane.readme.io)
Add filtering and recipient safeguards
Before adding the Volanea webhook action, add a Filter by Zapier step. This is where you establish the minimum conditions for sending.
A practical first filter can require all of the following:
- The invoice is not a draft.
- The status is not cancelled or a credit note.
- A recipient email is present in the tested Zapier payload or has been found in your approved customer-data source.
- The invoice number is present.
- The invoice ID is present.
Do not use finance data as an email address
The most damaging mapping mistake is treating an unrelated field as the recipient. A customer ID, external reference, billing contact name, or invoice label is not an email address.
If the New Customer Invoice V2 sample does not include a customer email field, use a deliberate enrichment step rather than improvising. Options include:
- Look up the customer in a CRM or database by Pennylane customer ID.
- Maintain a controlled mapping table in Zapier Tables or another system of record.
- Use a small server-side middleware service that retrieves the customer from Pennylane’s API using the appropriate scope.
- Send the notification to an internal billing mailbox until customer-recipient mapping is ready.
That additional step is not needless complexity. It creates an auditable decision about who is entitled to receive billing information.
Filter for legal and operational intent
A generic “Your invoice is ready” email may be transactional in one context and promotional in another. Keep the message narrowly tied to the invoice event. Do not add newsletters, product announcements, or unrelated offers to this flow just because the email is already being sent.
For a first deployment, use an internal recipient or a single sandbox customer. Then inspect the rendered email, invoice number, amount, date format, and unsubscribe or preference requirements applicable to your organization before widening the audience.
Configure the Volanea REST API request
Add Webhooks by Zapier as the action app, then choose Custom Request. Zapier documents Webhooks by Zapier as a way to call any API endpoint and supports static API-key headers in the request setup. This is the appropriate action because Volanea does not need a dedicated Zapier app for a standard REST send. (help.zapier.com)
Configure the action as follows:
- Method:
POST - URL:
https://api.volanea.com/v1/send - Payload type:
json - Headers:
Authorization: Bearer YOUR_VOLANEA_SECRET_KEY,Content-Type: application/json
Use the values selected from the Pennylane test record in Zapier’s field picker. The code below shows the actual Volanea request contract and the intended field mapping; replace the {{...}} tokens with the matching fields shown by your own Zap test.
POST https://api.volanea.com/v1/send
Authorization: Bearer {{secrets.VOLANEA_API_KEY}}
Content-Type: application/json
Idempotency-Key: pennylane-customer-invoice-{{Pennylane Invoice ID}}
{
"from": "Billing Team <billing@updates.example.com>",
"to": "{{Pennylane Customer Email}}",
"subject": "Invoice {{Pennylane Invoice Number}} is ready",
"text": "Hello,\n\nYour invoice {{Pennylane Invoice Number}} for {{Pennylane Currency Amount}} {{Pennylane Currency}} is ready.\n\nIssue date: {{Pennylane Invoice Date}}\nPayment deadline: {{Pennylane Deadline}}\n\nIf you have questions, reply to this email.\n",
"html": "<p>Hello,</p><p>Your invoice <strong>{{Pennylane Invoice Number}}</strong> for <strong>{{Pennylane Currency Amount}} {{Pennylane Currency}}</strong> is ready.</p><ul><li>Issue date: {{Pennylane Invoice Date}}</li><li>Payment deadline: {{Pennylane Deadline}}</li></ul><p>If you have questions, reply to this email.</p>"
}
The mapping is deliberate:
| Pennylane / Zapier field | Volanea field | Why it is used |
|---|---|---|
| Customer email | to | The intended recipient address. Validate it before this step. |
| Invoice number | subject, text, html | Gives the recipient a recognizable reference. |
| Currency amount | text, html | Shows the invoice total in a human-readable message. |
| Currency | text, html | Prevents ambiguity when you invoice in more than one currency. |
| Issue date | text, html | Provides billing context. |
| Deadline | text, html | Communicates the payment timetable. |
| Invoice ID | Idempotency-Key | Produces a stable key for duplicate protection. |
Volanea’s documented send endpoint accepts a message with from, to, subject, text, and html, and supports the Idempotency-Key header on POST /v1/send. One send can address one recipient or up to 50 recipients, but this invoice workflow should normally create one clearly attributable message per customer rather than hide multiple customers in a shared send. (volanea.com)
Where the Volanea API key belongs
The Volanea API key belongs in the secured Zapier action configuration or, where your Zapier plan and architecture support it, in a protected connection or secret-management layer used by that server-side automation. It does not belong in Pennylane custom fields, invoice labels, public notes, customer-facing templates, browser JavaScript, a front-end form, or a repository.
The key should be a Volanea secret key (sk_... or sk_test_...), because the /v1/send endpoint requires authenticated server-side access. Volanea distinguishes secret keys from public keys: secret keys are server-side only, while public keys are restricted to event ingestion and cannot authorize transactional sends. (volanea.com)
Why client-visible configuration is unsafe
Anyone who obtains a secret sending key can potentially send email from your Volanea project. That can create direct fraud, phishing, deliverability, and compliance problems. It also makes incident response harder because you cannot reliably tell whether a send originated from your intended workflow.
Follow these rules:
- Use
sk_test_...while testing so messages render and log without delivery. - Switch to a production
sk_...key only after mapping and filters pass testing. - Limit who can edit the Zap.
- Rotate the key immediately if it appears in a screenshot, shared export, public issue, browser console, or source repository.
- Do not put the key into a Zapier formatter output, email body, or Slack alert.
- Keep Pennylane credentials and Volanea credentials separate. Zapier’s Pennylane connection authorizes data access; the Volanea key authorizes email sending.
For endpoint details, authentication, and future schema changes, use the email API reference and setup guides rather than copying stale request examples into long-lived internal documentation.
Prevent duplicate sends with invoice-based idempotency
Zapier automations, polling systems, network requests, and API retries are not exactly-once systems. A timeout can occur after Volanea receives the request but before Zapier receives the response. If the automation retries with a fresh request and no duplicate protection, the recipient can receive two invoice emails.
Use this header:
Idempotency-Key: pennylane-customer-invoice-{{Pennylane Invoice ID}}
The important property is stability. The same logical invoice event must always generate the same idempotency key. Do not use the current timestamp, Zap run ID, or a randomly generated UUID for this workflow; those values change on retries and defeat duplicate prevention.
Volanea documents idempotency keys as a mechanism for avoiding repeated side effects when a request is retried. This is especially relevant for transactional email, where a duplicate may confuse a customer, create unnecessary support work, or make an unpaid invoice appear more urgent than it is. (volanea.com)
Decide whether invoice updates should send another email
An invoice can be updated after creation. Whether an update deserves another email is a policy decision, not a technical accident.
If the rule is “send only once when the invoice is created,” use only the invoice ID in the idempotency key. If the rule is “send again when a corrected invoice is finalized,” build a separate workflow with a distinct event and a key that includes a meaningful version or approved update identifier. Never make updates resend simply because the Zap polled the record again.
Test before sending to customers
Testing should cover the complete chain, not just whether Zapier displays a green check mark.
Test the sender and rendering
First, use a Volanea test key and send to a controlled inbox. Check:
- The From display name and email address are correct.
- The domain is authenticated for sending.
- Plain-text content is understandable without HTML.
- HTML is readable on mobile.
- Amounts, currency, dates, and invoice numbers map correctly.
- Empty optional fields do not render as
null,undefined, or blank bullet points.
Test Pennylane record variations
Then create several safe records that represent reality:
- A standard finalized invoice with a deadline.
- A draft invoice that must be stopped by the filter.
- An invoice with no recipient email.
- A credit note that must not use the normal invoice copy.
- A non-EUR invoice, if your organization invoices in multiple currencies.
- A record with a long customer name or invoice label.
This matters because Pennylane’s API supports several currencies, status values, optional dates, and invoice types. A mapping that works for one neat sandbox invoice can fail on a real incomplete or imported record. (pennylane.readme.io)
Test retry behavior on purpose
Use the same Pennylane invoice ID twice during a controlled test. Confirm that the repeated Volanea request uses the same idempotency key. Your expectation is one logical email, not two.
Also test a bad recipient address in a non-production environment. A successful API acceptance does not make an invalid inbox deliverable. Use Volanea’s event data and suppression handling to observe what happens after queueing, then correct the source customer data rather than repeatedly forcing sends to a known bad address.
When this breaks
Every cross-system workflow eventually encounters missing data, retries, or service timing problems. The goal is not to pretend those failures cannot happen; it is to make their behavior safe and diagnosable.
Pennylane or Zapier retries create duplicate sends
Symptom: A customer reports receiving the same invoice email twice.
Likely cause: The action retried after a network timeout, a poll returned the same qualifying record again, or the workflow was manually replayed.
Fix: Verify that the Volanea request includes a stable Idempotency-Key based on the Pennylane invoice ID. Do not generate a random key for every run. Check whether the second email was actually a separate intended event, such as an approved correction, before changing the deduplication rule.
The Webhooks by Zapier action times out
Symptom: Zapier marks the request as failed or uncertain, but Volanea may have accepted it.
Likely cause: A transient network problem or timeout between Zapier and Volanea.
Fix: Before manually replaying the step, inspect Volanea’s send log for the idempotency key. If the original request was accepted, replaying with the same key should remain safe. Avoid adding expensive synchronous work to this request; the Volanea send endpoint queues accepted messages, which is the right behavior for a delivery API. (volanea.com)
Pennylane fields are missing on some invoices or plans
Symptom: The Zap reaches Volanea with an empty recipient, missing deadline, or undefined status.
Likely cause: The Pennylane invoice was created through a different route, data was not required on that record type, the connected user lacks access to related data, or the Zapier trigger does not expose every field you expected.
Fix: Treat fields as optional unless your tested trigger proves otherwise. Add filters for required send fields, provide safe fallback copy only for information that can legitimately be absent, and enrich customer data through an approved lookup when needed. Do not replace a missing recipient address with a guessed address derived from name or company fields.
The invoice is created before its PDF or final status is ready
Symptom: The email says an invoice is ready, but a linked or attached document is not available yet.
Likely cause: Record creation happened before downstream document generation or internal review completed.
Fix: Change the triggering rule. Use a later approved event where available, insert a controlled delay plus a status check, or keep this automation as an internal notification until the correct finalization signal is defined. Pennylane’s own send-by-email endpoint can return 409 while a PDF is still generating, which illustrates why record creation and document readiness should not be treated as identical states. (pennylane.readme.io)
Volanea returns an authentication or sender error
Symptom: Zapier receives a 401, 403, or validation-style error.
Likely cause: The bearer key is incorrect, revoked, pasted with extra whitespace, or the From domain is not configured for the Volanea project.
Fix: Re-enter the secret key in the secured action configuration, verify that the API key is a secret key rather than a public key, and confirm the sender domain in Volanea before retrying. Never respond by moving the key into a public field so it is easier to inspect.
Direct Pennylane webhooks versus the Zapier route
A developer team may prefer a direct integration. Pennylane supports beta webhook subscriptions: you register an HTTPS callback URL and subscribe to events with a developer token or OAuth app credentials. The subscription response includes a secret that is returned only once, and Pennylane directs you to validate incoming HMAC signatures. (pennylane.readme.io)
That model can be valuable when you need custom recipient lookup, signed webhook verification, application-level audit logging, attachments, rate control, or complex branching. The production architecture becomes:
Pennylane webhook → your HTTPS receiver → signature verification → invoice/customer lookup → Volanea POST /v1/send
However, it is not a “paste your Volanea key into Pennylane” design. Your receiver must store the Pennylane webhook secret and Volanea API key server-side, verify the unmodified incoming request, return quickly, record the business event, and send with a deterministic idempotency key.
For teams that do not maintain a backend service, Pennylane’s official Zapier integration is the right middleware route. It supplies the accessible trigger layer, and Webhooks by Zapier supplies the outbound HTTP action. For teams that need deeper control, build a small service rather than forcing sensitive credentials or business logic into client-visible configuration.
Operational checklist for a reliable rollout
Before enabling the Zap for real customer traffic, verify this checklist:
- Pennylane trigger is New Customer Invoice V2 in the correct company.
- A sandbox or controlled invoice test has completed successfully.
- Drafts, cancellations, credit notes, and missing-recipient records are filtered out.
- The customer recipient field has been validated from the actual Zapier sample.
- The Volanea sender domain and From address are verified.
- The Volanea secret key is stored only in secured automation configuration.
- The request uses
POST https://api.volanea.com/v1/send. - The message includes both
textandhtmlversions. - The idempotency key is stable and based on the Pennylane invoice ID.
- Your team knows where to inspect Zapier task history and Volanea email events.
- Finance or compliance owners have approved the email’s purpose and wording.
- A correction or resend policy is documented before the first real incident.
Conclusion
To send email from Pennylane with Volanea, use Pennylane’s New Customer Invoice V2 Zapier trigger, validate the invoice and recipient data, then make a secured Webhooks by Zapier POST request to Volanea’s send endpoint. This is not a native Pennylane plugin flow—and that is important because the middleware step is where you should apply filtering, safe field mapping, access control, and duplicate protection.
The most important implementation detail is not the subject line or HTML template. It is the stable invoice-based idempotency key combined with a verified recipient mapping. Get those two controls right, and the Pennylane-to-Volanea workflow is far less likely to surprise customers or your billing team.
FAQ
Can I install Volanea from the Pennylane marketplace?
No. This setup does not rely on a native Pennylane Volanea listing or marketplace plugin. Use Pennylane’s Zapier connector and Webhooks by Zapier to call Volanea’s REST API.
What Pennylane event should I use to send an invoice notification?
Use New Customer Invoice V2 in Zapier when creation of a customer invoice is the intended business event. Add filters so drafts, cancelled invoices, credit notes, and records without validated recipients do not send.
Where should I store the Volanea API key?
Store the Volanea secret key in the secured server-side automation action or secret-management layer. Do not place it in Pennylane fields, email content, browser code, public repositories, or customer-visible configuration.
How do I stop duplicate invoice emails?
Set Idempotency-Key to a deterministic value such as pennylane-customer-invoice-{{Invoice ID}}. Reuse that exact key on retries for the same invoice event.
Can I use Pennylane webhooks directly instead of Zapier?
Yes, for a developer-built integration. Pennylane’s webhook subscriptions are beta, require an HTTPS receiver and signature verification, and should be paired with server-side storage for both the Pennylane webhook secret and Volanea API key. For a no-code standard workflow, Zapier is the simpler route.