# Company API Documentation > Documentation for Company API ## Guides: getting started - [API Overview](https://pennylane.readme.io/docs/api-overview.md) - [Introduction to the Pennylane API](https://pennylane.readme.io/docs/getting-started.md) - [Choose the Right API for Your Integration](https://pennylane.readme.io/docs/what-apis-are-available.md) - [Data Sharing or API: Which Should You Use?](https://pennylane.readme.io/docs/should-i-use-data-sharing-or-the-api-1.md) - [Create a Company API Token](https://pennylane.readme.io/docs/generating-my-api-token.md) - [Create a Firm API Token](https://pennylane.readme.io/docs/firm-api.md) - [Implement OAuth 2.0](https://pennylane.readme.io/docs/oauth-20-walkthrough.md) - [Understand Scopes](https://pennylane.readme.io/docs/v2-scopes.md) - [Error Handling & Status Codes](https://pennylane.readme.io/docs/error-handling-status-codes.md) - [Webhooks](https://pennylane.readme.io/docs/webhooks.md): Set up webhook subscriptions to get notified of events in real time - [Quickstart](https://pennylane.readme.io/docs/quickstart.md): This guide walks you through creating your first webhook subscription and receiving webhooks. - [List of webhook events](https://pennylane.readme.io/docs/list-of-events.md) - [Subscribing and Managing Subscriptions ](https://pennylane.readme.io/docs/subscribing-and-managing-subscriptions-new.md) - [Subscriber types & company scoping](https://pennylane.readme.io/docs/authorization-new.md) - [Receiving & verifying](https://pennylane.readme.io/docs/authorization.md) - [Failures & Lifecycle](https://pennylane.readme.io/docs/failures-lifecycle.md) - [Rules & limits](https://pennylane.readme.io/docs/rules-limits.md) ## Guides: tutorials - [Supported Use Cases](https://pennylane.readme.io/docs/supported-use-cases.md) - [Connect Your Point of Sale (POS) to Pennylane](https://pennylane.readme.io/docs/how-to-build-a-pos-integration.md) - [Accounting Reporting 📊](https://pennylane.readme.io/docs/accounting-reporting.md) - [Create Ledger Entries via API](https://pennylane.readme.io/docs/create-a-ledger-entry.md) - [Invoicing Management](https://pennylane.readme.io/docs/invoicing-use-cases.md) - [Import a Supplier Invoice via API](https://pennylane.readme.io/docs/supplier-invoicing.md) - [Import a Customer Invoice via API](https://pennylane.readme.io/docs/customer-invoicing.md) - [Create a Customer Invoice via API](https://pennylane.readme.io/docs/create-a-customer-invoice-use-case.md) - [Filter API Data](https://pennylane.readme.io/docs/setting-up-filters.md): A filtering system is available on listing endpoints to let you get resources according to your needs. - [Filter Customer Invoices](https://pennylane.readme.io/docs/filter-my-customer-invoices.md) - [Filter Supplier Invoices](https://pennylane.readme.io/docs/filter-my-supplier-invoices.md) - [Filter Draft Invoices](https://pennylane.readme.io/docs/filter-my-draft-invoices.md) - [Filter Credit Notes](https://pennylane.readme.io/docs/filter-my-credit-notes.md) - [Filter Customers](https://pennylane.readme.io/docs/filter-my-customers.md) - [Filter Suppliers](https://pennylane.readme.io/docs/filter-my-suppliers.md) - [Filter Ledger Accounts](https://pennylane.readme.io/docs/filter-my-ledger-accounts.md) - [Filter Ledger Entries](https://pennylane.readme.io/docs/filter-my-ledger-entries.md) - [Filter Ledger Entry Lines](https://pennylane.readme.io/docs/filter-my-ledger-entry-lines.md) - [Filter Categories](https://pennylane.readme.io/docs/filter-my-categories.md) - [Filter Products](https://pennylane.readme.io/docs/filter-my-products.md) - [Automate Payment Matching](https://pennylane.readme.io/docs/automating-payment-matching.md) - [Use Cursor-Based Pagination](https://pennylane.readme.io/docs/using-cursor-based-pagination.md) - [Track Data Changes with the API](https://pennylane.readme.io/docs/tracking-data-changes-with-pennylane-api.md) - [Create a Downpayment Invoice](https://pennylane.readme.io/docs/create-a-downpayment-invoice-facture-dacompte.md) - [Send Documents by Email](https://pennylane.readme.io/docs/sending-documents-by-email.md) ## Guides: CONCEPTS & BEST PRACTICES - [String Character Limits](https://pennylane.readme.io/docs/string-characters-limit.md) - [Payment vs Matched Transaction](https://pennylane.readme.io/docs/what-is-the-difference-between-a-payment-and-a-matched-transaction.md) - [Import vs Create a Customer Invoice](https://pennylane.readme.io/docs/import-vs-create-a-customer-invoice-whats-the-difference.md) - [Understanding VAT Rates on Ledger Accounts](https://pennylane.readme.io/docs/handle-vat-rates-by-ledger-accounts.md) - [How to use the customer update endpoints](https://pennylane.readme.io/docs/how-to-update-individual-and-company-customers.md) ## Guides: ADVANCED GUIDES - [Rate Limiting in API v2](https://pennylane.readme.io/docs/rate-limiting-1.md) ## Guides: MIGRATION & RELEASE NOTES - [Migrate from API v1 to v2](https://pennylane.readme.io/docs/api-v2-vs-v1.md) - [API Changelog](https://pennylane.readme.io/docs/stay-updated-with-our-api-changes.md): How to stay informed about new endpoints, breaking changes, deprecations, and feature enhancements to ensure your integrations remain up-to-date. - [Public Roadmap](https://pennylane.readme.io/docs/api-public-roadmap.md) - [2026 API changes Migration Guide](https://pennylane.readme.io/docs/2026-api-changes-guide.md): This full guide is here to help you implement all necessary changes that are coming to the Pennylane API in 2026, including ledger scope changes, pagination updates, and other improvements across… ## Guides: RESOURCES - [Glossary](https://pennylane.readme.io/docs/glossary.md) ## Guides: Need support? - [How to reach out to us](https://pennylane.readme.io/docs/how-to-reach-out-to-us.md) ## API Reference: Accounting - [List journals](https://pennylane.readme.io/reference/getjournals.md): List journals. By default, returns journals ordered by descending IDs. > ℹ️ > This endpoint requires one of the following scopes: `journals:readonly`, `journals:all` - [Retrieve a journal](https://pennylane.readme.io/reference/getjournal.md): Retrieve a journal > ℹ️ > This endpoint requires one of the following scopes: `journals:readonly`, `journals:all` - [Create a journal](https://pennylane.readme.io/reference/postjournals.md): Create a journal > ℹ️ > This endpoint requires the following scope: `journals:all` - [List Ledger Accounts](https://pennylane.readme.io/reference/getledgeraccounts.md): List Ledger Accounts > ℹ️ > This endpoint requires one of the following scopes: `ledger_accounts:readonly`, `ledger_accounts:all` - [Get a ledger account](https://pennylane.readme.io/reference/getledgeraccount.md): Get a ledger account > ℹ️ > This endpoint requires one of the following scopes: `ledger_accounts:readonly`, `ledger_accounts:all` - [Create a ledger account](https://pennylane.readme.io/reference/postledgeraccounts.md): Create a ledger account > ℹ️ > This endpoint requires the following scope: `ledger_accounts:all` - [Update a ledger account](https://pennylane.readme.io/reference/updateledgeraccount.md): Update a ledger account > ℹ️ > This endpoint requires the following scope: `ledger_accounts:all` - [Upload a file](https://pennylane.readme.io/reference/postledgerattachments.md): Upload a file to attach to a ledger entry. The maximum allowed file size is 100MB. Note that this will not upload a file into the DMS (GED). > ‼️ > This endpoint is **DEPRECATED** > As an… - [List Ledger Entries](https://pennylane.readme.io/reference/getledgerentries.md): Returns a list of ledger entries. > ℹ️ > This endpoint requires one of the following scopes: `ledger_entries:readonly`, `ledger_entries:all` - [List ledger entry lines of a Ledger Entry](https://pennylane.readme.io/reference/getledgerentriesledgerentrylines.md): List ledger entry lines of a Ledger Entry > ℹ️ > This endpoint requires one of the following scopes: `ledger_entries:readonly`, `ledger_entries:all` - [Retrieve a Ledger entry](https://pennylane.readme.io/reference/getledgerentry.md): Retrieve a ledger entry > ℹ️ > This endpoint requires one of the following scopes: `ledger_entries:readonly`, `ledger_entries:all` - [Create a ledger entry](https://pennylane.readme.io/reference/postledgerentries.md): Create a ledger entry > ℹ️ > This endpoint requires the following scope: `ledger_entries:all` - [Update a ledger entry](https://pennylane.readme.io/reference/putledgerentries.md): Update a ledger entry > ℹ️ > This endpoint requires the following scope: `ledger_entries:all` - [List DMS files of a Ledger Entry](https://pennylane.readme.io/reference/getledgerentriesdmsfiles.md): List DMS files attached to a Ledger Entry > ℹ️ > This endpoint requires one of the following scopes: `ledger_entries:readonly`, `ledger_entries:all` - [List ledger entry lines](https://pennylane.readme.io/reference/getledgerentrylines.md): List ledger entry lines > ℹ️ > This endpoint requires one of the following scopes: `ledger_entries:readonly`, `ledger_entries:all` - [Retrieve a Ledger entry line](https://pennylane.readme.io/reference/getledgerentryline.md): Retrieve a ledger entry line > ℹ️ > This endpoint requires one of the following scopes: `ledger_entries:readonly`, `ledger_entries:all` - [List ledger entry lines lettered to a given ledger entry line](https://pennylane.readme.io/reference/getledgerentrylinesletteredledgerentrylines.md): List ledger entry lines lettered to a given ledger entry line > ℹ️ > This endpoint requires one of the following scopes: `ledger_entries:readonly`, `ledger_entries:all` - [List categories of a Ledger Entry line](https://pennylane.readme.io/reference/getledgerentrylinescategories.md): List categories of a Ledger Entry line > ℹ️ > This endpoint requires one of the following scopes: `ledger_entries:readonly`, `ledger_entries:all` - [Link Analytical Categories to a Ledger Entry line](https://pennylane.readme.io/reference/putledgerentrylinescategories.md): This endpoint replaces already existing categories on the Ledger Entry line with new values. If an empty array of categories_ids is provided, it will remove all categories from the Ledger Entry line.… - [Letter ledger entry lines](https://pennylane.readme.io/reference/postledgerentrylinesletter.md): This endpoint lets you letter ledger entry lines together. All received entry lines will be lettered together. If a passed entry line is already lettered, then the lettering will be applied to its… - [Unletter ledger entry lines](https://pennylane.readme.io/reference/deleteledgerentrylinesunletter.md): This endpoint lets you unletter ledger entry lines. > ℹ️ > This endpoint requires the following scope: `ledger_entries:all` - [Get the trial balance](https://pennylane.readme.io/reference/gettrialbalance.md): This endpoint returns the trial balance of the current company for the given period. > ℹ️ > This endpoint requires the following scope: `trial_balance:readonly` - [List Company's Fiscal Years](https://pennylane.readme.io/reference/company-fiscal-years.md): This endpoint returns a list of fiscal years of the company. By default, returns fiscal years ordered by descending IDs. A `sort` query parameter is available allowing to sort by `id` or `start`… ## API Reference: Accounting exports - [Create an Analytical General Ledger export](https://pennylane.readme.io/reference/exportanalyticalgeneralledger.md): This endpoint allows you to create an Analytical General Ledger export. The generated export file is an xlsx file, using the in-line analytical mode by default. > ℹ️ > This endpoint requires the… - [Retrieve an Analytical General Ledger export](https://pennylane.readme.io/reference/getanalyticalgeneralledgerexport.md): The endpoint returns a specific Analytical General Ledger export. The export file is an xlsx file, using the in-line analytical mode. > ℹ️ > This endpoint requires the following scope: `exports:agl` - [Create a General Ledger export](https://pennylane.readme.io/reference/exportgeneralledger.md): This endpoint allows you to create a General Ledger export. The generated export file is an xlsx file. > ℹ️ > This endpoint requires the following scope: `exports:gl` - [Retrieve a General Ledger export](https://pennylane.readme.io/reference/getgeneralledgerexport.md): The endpoint returns a specific General Ledger export. The export file is an xlsx file. > ℹ️ > This endpoint requires the following scope: `exports:gl` - [Create a FEC export](https://pennylane.readme.io/reference/exportfec.md): This endpoint allows you to create a FEC export > ℹ️ > This endpoint requires the following scope: `exports:fec` - [Retrieve a FEC export](https://pennylane.readme.io/reference/getfecexport.md): The endpoint returns a specific FEC export > ℹ️ > This endpoint requires the following scope: `exports:fec` ## API Reference: Analytics - [List category groups](https://pennylane.readme.io/reference/getcategorygroups.md): This endpoint returns a list of category groups > ℹ️ > This endpoint requires one of the following scopes: `categories:all`, `categories:readonly` - [Retrieve a category group](https://pennylane.readme.io/reference/getcategorygroup.md): This endpoint returns a specific category group. > ℹ️ > This endpoint requires one of the following scopes: `categories:all`, `categories:readonly` - [List categories of a category group](https://pennylane.readme.io/reference/getcategorygroupcategories.md): List categories of a category group > ℹ️ > This endpoint requires one of the following scopes: `categories:all`, `categories:readonly` - [List categories](https://pennylane.readme.io/reference/getcategories.md): List categories > ℹ️ > This endpoint requires one of the following scopes: `categories:all`, `categories:readonly` - [Retrieve a category](https://pennylane.readme.io/reference/getcategory.md): This endpoint returns a specific category. > ℹ️ > This endpoint requires one of the following scopes: `categories:all`, `categories:readonly` - [Create a category](https://pennylane.readme.io/reference/postcategories.md): Create a category > ℹ️ > This endpoint requires the following scope: `categories:all` - [Update a category](https://pennylane.readme.io/reference/updatecategory.md): This endpoint updates a category. > ℹ️ > This endpoint requires the following scope: `categories:all` ## API Reference: Billing Subscriptions - [List billing subscriptions](https://pennylane.readme.io/reference/getbillingsubscriptions.md): This endpoint returns a list of subscriptions. > ℹ️ > This endpoint requires one of the following scopes: `billing_subscriptions:all`, `billing_subscriptions:readonly` - [Get a billing subscription](https://pennylane.readme.io/reference/getbillingsubscription.md): This endpoint returns a specific billing subscription. > ℹ️ > This endpoint requires one of the following scopes: `billing_subscriptions:all`, `billing_subscriptions:readonly` - [Create a billing subscription](https://pennylane.readme.io/reference/postbillingsubscriptions.md): This endpoint allows you to create a subscription. Pennylane will generate the customer invoice each month. You can also link the subscription to a GoCardless mandate. > ℹ️ > This endpoint requires… - [Update a billing subscription](https://pennylane.readme.io/reference/putbillingsubscriptions.md): Update a billing subscription > ℹ️ > This endpoint requires the following scope: `billing_subscriptions:all` - [List invoice lines for a billing subscription](https://pennylane.readme.io/reference/getbillingsubscriptioninvoicelines.md): List invoice lines for a billing subscription > ℹ️ > This endpoint requires one of the following scopes: `billing_subscriptions:all`, `billing_subscriptions:readonly` - [List the invoice line sections of a billing subscription](https://pennylane.readme.io/reference/getbillingsubscriptioninvoicelinesections.md): List the invoice line sections of a billing subscription > ℹ️ > This endpoint requires one of the following scopes: `billing_subscriptions:all`, `billing_subscriptions:readonly` ## API Reference: Changelogs - [Get customer invoices changes events](https://pennylane.readme.io/reference/getcustomerinvoiceschanges.md): Returns the list of changes based on the provided `start_date`. If no `start_date` is provided it returns the oldest set of recorded changes. Changes for the last 4 weeks are retained. The items will… - [Get supplier invoices changes events](https://pennylane.readme.io/reference/getsupplierinvoiceschanges.md): Returns the list of changes based on the provided `start_date`. If no `start_date` is provided it returns the oldest set of recorded changes. Changes for the last 4 weeks are retained. The items will… - [Get customer changes events](https://pennylane.readme.io/reference/getcustomerchanges.md): Returns the list of changes based on the provided `start_date`. If no `start_date` is provided it returns the oldest set of recorded changes. Changes for the last 4 weeks are retained. The items will… - [Get supplier changes events](https://pennylane.readme.io/reference/getsupplierchanges.md): Returns the list of changes based on the provided `start_date`. If no `start_date` is provided it returns the oldest set of recorded changes. Changes for the last 4 weeks are retained. The items will… - [Get product change events](https://pennylane.readme.io/reference/getproductchanges.md): Returns the list of changes based on the provided `start_date`. If no `start_date` is provided it returns the oldest set of recorded changes. Changes for the last 4 weeks are retained. The items will… - [Get ledger entry line change events](https://pennylane.readme.io/reference/getledgerentrylinechanges.md): Returns the list of changes based on the provided `start_date`. If no `start_date` is provided it returns the oldest set of recorded changes. Changes for the last 4 weeks are retained. The items will… - [Get transaction change events](https://pennylane.readme.io/reference/gettransactionchanges.md): Returns the list of changes based on the provided `start_date`. If no `start_date` is provided it returns the oldest set of recorded changes. Changes for the last 4 weeks are retained. The items will… - [Get quotes changes events](https://pennylane.readme.io/reference/getquotechanges.md): Returns the list of changes based on the provided `start_date`. If no `start_date` is provided it returns the oldest set of recorded changes. Changes for the last 4 weeks are retained. The items will… - [Get ledger entry change events](https://pennylane.readme.io/reference/getledgerentrieschanges.md): Returns the list of changes based on the provided `start_date`. If no `start_date` is provided it returns the oldest set of recorded changes. Changes for the last 4 weeks are retained. The items will… - [Get ledger entry line category change events](https://pennylane.readme.io/reference/getledgerentrylinescategorychanges.md): Returns the list of changes based on the provided `start_date`. If no `start_date` is provided it returns the oldest set of recorded changes. Changes for the last 4 weeks are retained. The items will… - [Get ledger entry category change events](https://pennylane.readme.io/reference/getledgerentriescategorychanges.md): Returns the list of changes based on the provided `start_date`. If no `start_date` is provided it returns the oldest set of recorded changes. Changes for the last 4 weeks are retained. The items will… ## API Reference: COMMERCIAL DOCUMENTS - [List commercial documents](https://pennylane.readme.io/reference/listcommercialdocuments.md): This endpoint lists commercial documents. > ℹ️ > This endpoint requires one of the following scopes: `commercial_documents:all`, `commercial_documents:readonly` - [Update a commercial document](https://pennylane.readme.io/reference/updatecommercialdocument.md): This endpoint allows you to update a commercial document. Only the fields present in the payload are applied. The document type and the document number cannot be changed after creation. > ℹ️ >… - [Retrieve a commercial document](https://pennylane.readme.io/reference/getcommercialdocument.md): This endpoint retrieves a commercial document. > ℹ️ > This endpoint requires one of the following scopes: `commercial_documents:all`, `commercial_documents:readonly` - [List invoice line sections for a commercial document](https://pennylane.readme.io/reference/getcommercialdocumentinvoicelinesections.md): List invoice line sections for a commercial document > ℹ️ > This endpoint requires one of the following scopes: `commercial_documents:all`, `commercial_documents:readonly` - [List invoice lines for a commercial document](https://pennylane.readme.io/reference/getcommercialdocumentinvoicelines.md): List invoice lines for a commercial document > ℹ️ > This endpoint requires one of the following scopes: `commercial_documents:all`, `commercial_documents:readonly` - [List appendices of a commercial document](https://pennylane.readme.io/reference/getcommercialdocumentappendices.md): List appendices of a commercial document > ℹ️ > This endpoint requires one of the following scopes: `commercial_documents:all`, `commercial_documents:readonly` - [Create a commercial document](https://pennylane.readme.io/reference/postcommercialdocuments.md): This endpoint allows you to create a commercial document (proforma, shipping order or purchasing order). The document number is assigned by Pennylane, based on the numbering configured for this type… - [Upload an appendix for a commercial document](https://pennylane.readme.io/reference/postcommercialdocumentappendices.md): Upload a file that will be an appendix attached to a commercial document. Note that this will not upload a file into the DMS (GED). > ℹ️ > This endpoint requires the following scope:… - [Send a commercial document by email](https://pennylane.readme.io/reference/sendbyemailcommercialdocument.md): This endpoint allows you to send a commercial document 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… - [Create a category group](https://pennylane.readme.io/reference/postcategorygroups.md): Create a category group > ℹ️ > This endpoint requires the following scope: `categories:all` - [Update a category group](https://pennylane.readme.io/reference/putcategorygroup.md): This endpoint updates a category group. > ℹ️ > This endpoint requires the following scope: `categories:all` ## API Reference: COMPANY - [Company features](https://pennylane.readme.io/reference/getcompanyfeatures.md): Effective availability of the features that are gated for this company, so that they can be checked before calling the endpoints they restrict. A feature is `true` only when every gate is open,… ## API Reference: Customer Invoices - [List customer invoices](https://pennylane.readme.io/reference/getcustomerinvoices.md): List customer invoices and credit notes > ℹ️ > This endpoint requires one of the following scopes: `customer_invoices:all`, `customer_invoices:readonly` - [List invoice line sections for a customer invoice](https://pennylane.readme.io/reference/getcustomerinvoiceinvoicelinesections.md): List invoice line sections for a customer invoice > ℹ️ > This endpoint requires one of the following scopes: `customer_invoices:all`, `customer_invoices:readonly` - [List invoice lines for a customer invoice](https://pennylane.readme.io/reference/getcustomerinvoiceinvoicelines.md): List invoice lines for a customer invoice > ℹ️ > This endpoint requires one of the following scopes: `customer_invoices:all`, `customer_invoices:readonly` - [List payments for a customer invoice](https://pennylane.readme.io/reference/getcustomerinvoicepayments.md): List payments for a customer invoice > ℹ️ > This endpoint requires one of the following scopes: `customer_invoices:all`, `customer_invoices:readonly` - [List matched transactions for a customer invoice](https://pennylane.readme.io/reference/getcustomerinvoicematchedtransactions.md): List matched transactions for a customer invoice > ℹ️ > This endpoint requires one of the following scopes: `customer_invoices:all`, `customer_invoices:readonly` - [List appendices of a customer invoice](https://pennylane.readme.io/reference/getcustomerinvoiceappendices.md): List appendices of a customer invoice > ℹ️ > This endpoint requires one of the following scopes: `customer_invoices:all`, `customer_invoices:readonly` - [List categories of a customer invoice](https://pennylane.readme.io/reference/getcustomerinvoicecategories.md): List categories of a customer invoice > ℹ️ > This endpoint requires one of the following scopes: `customer_invoices:all`, `customer_invoices:readonly` - [Retrieve a customer invoice](https://pennylane.readme.io/reference/getcustomerinvoice.md): Retrieve a customer invoice or a credit note > ℹ️ > This endpoint requires one of the following scopes: `customer_invoices:all`, `customer_invoices:readonly` - [Upload an appendix for a customer invoice](https://pennylane.readme.io/reference/postcustomerinvoiceappendices.md): Upload a file that will be an appendix attached to a customer invoice. Note that this will not upload a file into the DMS (GED). > ℹ️ > This endpoint requires the following scope:… - [Send a customer invoice by email](https://pennylane.readme.io/reference/sendbyemailcustomerinvoice.md): This endpoint allows you to send a finalized, imported customer invoice or credit note by email to your customer. This requires that the PDF file for that document has been generated (this process… - [Create a customer invoice](https://pennylane.readme.io/reference/postcustomerinvoices.md): This endpoint allows you to create a draft or finalized customer invoice or credit note > ℹ️ > This endpoint requires the following scope: `customer_invoices:all` - [Import an invoice with file attached](https://pennylane.readme.io/reference/importcustomerinvoices.md): This endpoint allows you to import an invoice. Amounts are stored exactly as provided — Pennylane does not recalculate or round them. ℹ️ **Amount consistency:** The amounts you send must be… - [Link a credit note to a customer invoice](https://pennylane.readme.io/reference/linkcreditnote.md): Link a credit note to a customer invoice > ℹ️ > This endpoint requires the following scope: `customer_invoices:all` - [Create a customer invoice from a quote](https://pennylane.readme.io/reference/createcustomerinvoicefromquote.md): This endpoint allows you to create a customer invoice from an existing quote. The invoice will inherit the quote's data (customer, lines, etc.). > ℹ️ > This endpoint requires the following scope:… - [Import a customer e-invoice](https://pennylane.readme.io/reference/createcustomerinvoiceeinvoiceimport.md): Import a customer invoice from an e-invoice file. The file must be a Factur-X PDF, a standalone UBL XML invoice, or a standalone CII XML invoice. Optionally provide `invoice_options` to pre-fill… - [Send a customer e-invoice to PA](https://pennylane.readme.io/reference/sendtopacustomerinvoice.md): Send a customer e-invoice to the Partner Dematerialization Platform (PA). After an e-invoice import, the file may still be processing. If you call this endpoint before processing is finished, the… - [Update a customer invoice](https://pennylane.readme.io/reference/updatecustomerinvoice.md): Update a customer invoice > ℹ️ > This endpoint requires the following scope: `customer_invoices:all` - [Mark a customer invoice as paid](https://pennylane.readme.io/reference/markaspaidcustomerinvoice.md): Mark a customer invoice as paid. No automatic reconciliation will be done once the invoice is marked as paid > ℹ️ > This endpoint requires the following scope: `customer_invoices:all` - [Categorize a customer invoice](https://pennylane.readme.io/reference/putcustomerinvoicecategories.md): This endpoint is not applicable for draft invoices. Update the categories of a customer invoice. You can pass categories that don't belong to the same category group. The sum of categories of a same… - [Update an Imported customer invoice](https://pennylane.readme.io/reference/updateimportedcustomerinvoice.md): Update an imported customer invoice or credit note. It is not applicable for draft invoices. > ℹ️ > This endpoint requires the following scope: `customer_invoices:all` - [Turn the draft invoice into a finalized invoice.](https://pennylane.readme.io/reference/finalizecustomerinvoice.md): Convert the draft customer invoice or credit note into a finalized one. Once finalized, the resource can no longer be edited. > ℹ️ > This endpoint requires the following scope:… - [Delete draft invoice](https://pennylane.readme.io/reference/deletecustomerinvoices.md): Delete a draft customer invoice or draft credit note > ℹ️ > This endpoint requires the following scope: `customer_invoices:all` - [List custom header fields for a customer invoice](https://pennylane.readme.io/reference/getcustomerinvoicecustomheaderfields.md): List custom header fields for a customer invoice > ℹ️ > This endpoint requires one of the following scopes: `customer_invoices:all`, `customer_invoices:readonly` - [List products](https://pennylane.readme.io/reference/getproducts.md): List products > ℹ️ > This endpoint requires one of the following scopes: `products:all`, `products:readonly` - [Retrieve a product](https://pennylane.readme.io/reference/getproduct.md): Retrieve a product > ℹ️ > This endpoint requires one of the following scopes: `products:all`, `products:readonly` - [Create a product](https://pennylane.readme.io/reference/postproducts-1.md): Create a product > ℹ️ > This endpoint requires the following scope: `products:all` - [Update a product](https://pennylane.readme.io/reference/putproduct.md): Update a product > ℹ️ > This endpoint requires the following scope: `products:all` - [List customer invoice templates](https://pennylane.readme.io/reference/getcustomerinvoicetemplates.md): List customer invoice templates > ℹ️ > This endpoint requires the following scope: `customer_invoice_templates:readonly` - [Delete a contact of a customer](https://pennylane.readme.io/reference/deletecustomercontact.md): Delete a contact of a customer. Contacts are a separate resource: deleting one does not remove its email address from the invoice recipients of the customer. > ℹ️ > This endpoint requires the… - [Update a contact of a customer](https://pennylane.readme.io/reference/putcustomercontact.md): Update a contact of a customer. Only the submitted fields are updated, the others are left unchanged. Contacts are a separate resource: updating one does not change the invoice recipients of the… - [Retrieve a contact of a customer](https://pennylane.readme.io/reference/getcustomercontact.md): Retrieve a contact of a customer > ℹ️ > This endpoint requires one of the following scopes: `customers:all`, `customers:readonly` - [Create a contact of a customer](https://pennylane.readme.io/reference/postcustomercontact.md): Create a contact of a customer. Contacts are a separate resource: creating one does not add its email address to the invoice recipients of the customer. > ℹ️ > This endpoint requires the following… - [Retrieve a company customer](https://pennylane.readme.io/reference/getcompanycustomer.md): This endpoint returns a company customer. > ℹ️ > This endpoint requires one of the following scopes: `customers:all`, `customers:readonly` - [Retrieve an individual customer](https://pennylane.readme.io/reference/getindividualcustomer.md): This endpoint returns an individual customer. > ℹ️ > This endpoint requires one of the following scopes: `customers:all`, `customers:readonly` - [List customers (company and individual)](https://pennylane.readme.io/reference/getcustomers.md): This endpoint returns a list of both company and individual customers > ℹ️ > This endpoint requires one of the following scopes: `customers:all`, `customers:readonly` - [Retrieve a customer](https://pennylane.readme.io/reference/getcustomer.md): This endpoint returns a customer. > ℹ️ > This endpoint requires one of the following scopes: `customers:all`, `customers:readonly` - [Create a company customer](https://pennylane.readme.io/reference/postcompanycustomer.md): This endpoint returns the created company customer. > ℹ️ > This endpoint requires the following scope: `customers:all` - [Create an individual customer](https://pennylane.readme.io/reference/postindividualcustomer.md): This endpoint returns the created individual customer. > ℹ️ > This endpoint requires the following scope: `customers:all` - [Update a company customer](https://pennylane.readme.io/reference/putcompanycustomer.md): This endpoint returns the updated company customer. > ℹ️ > This endpoint requires the following scope: `customers:all` - [Update an individual customer](https://pennylane.readme.io/reference/putindividualcustomer.md): This endpoint returns the updated individual customer. > ℹ️ > This endpoint requires the following scope: `customers:all` - [List contacts of a customer](https://pennylane.readme.io/reference/getcustomercontacts.md): List contacts of a customer > ℹ️ > This endpoint requires one of the following scopes: `customers:all`, `customers:readonly` - [List categories of a customer](https://pennylane.readme.io/reference/getcustomercategories.md): List categories of a customer > ℹ️ > This endpoint requires one of the following scopes: `customers:readonly`, `customers:all` - [Categorize a customer](https://pennylane.readme.io/reference/putcustomercategories.md): Update the categories of a customer. You can pass categories that don't belong to the same category group. The sum of categories of a same group must equal `1`. In the following example, the two… ## API Reference: File upload - [Upload a file](https://pennylane.readme.io/reference/postfileattachments.md): Upload a file to attach to any resource that provides a `file_attachment_id`. The maximum allowed file size is 100MB. Note that this will not upload a file into the DMS (GED). > ℹ️ > This endpoint… ## API Reference: Mandates - [Create a SEPA mandate](https://pennylane.readme.io/reference/postsepamandates.md): This endpoint allows you to create a SEPA mandate to enable direct debit payments > ℹ️ > This endpoint requires the following scope: `customer_mandates:all` - [List SEPA mandates](https://pennylane.readme.io/reference/getsepamandates.md): This endpoint allows you to retrieve all SEPA mandates associated with your company > ℹ️ > This endpoint requires one of the following scopes: `customer_mandates:all`, `customer_mandates:readonly` - [Get a SEPA mandate](https://pennylane.readme.io/reference/getsepamandate.md): This endpoint allows you to retrieve a specific SEPA mandate by ID > ℹ️ > This endpoint requires one of the following scopes: `customer_mandates:all`, `customer_mandates:readonly` - [List mandate migration candidates](https://pennylane.readme.io/reference/getproaccountmandatemigrations.md): This endpoint allows you to retrieve all mandate migration candidates for your company. These are mandates that can be migrated to a Pro Account. Requirements: - Company must have a Pro Account… - [Send a Pro Account SEPA mandate request](https://pennylane.readme.io/reference/postproaccountmandatemailrequests.md): This endpoint allows you to send a mandate request for a Pro Account SEPA Direct Debit mandate to a customer. Requirements: - Company must have a Pro Account (returns 404 if not) - Company must have… - [Migrate a mandate to Pro Account](https://pennylane.readme.io/reference/postproaccountmandatemigrations.md): This endpoint allows you to migrate a mandate to a Pro Account. Only mandates with status 'available' are eligible for migration. **Requirements:** - Company must have a Pro Account (returns 404 if… - [Update a SEPA mandate](https://pennylane.readme.io/reference/putsepamandate.md): This endpoint allows you to update an existing SEPA mandate > ℹ️ > This endpoint requires the following scope: `customer_mandates:all` - [List Pro Account payment mandates](https://pennylane.readme.io/reference/getproaccountmandates.md): This endpoint allows you to retrieve all payment mandates associated with your company's pro account. Requirements: - Company must have a Pro Account (returns 404 if not) - Company must have an… - [Delete a SEPA mandate](https://pennylane.readme.io/reference/deletesepamandate.md): This endpoint allows you to delete a specific SEPA mandate > ℹ️ > This endpoint requires the following scope: `customer_mandates:all` - [List gocardless mandates](https://pennylane.readme.io/reference/getgocardlessmandates.md): List gocardless mandates > ℹ️ > This endpoint requires one of the following scopes: `customer_mandates:all`, `customer_mandates:readonly` - [Get a Gocardless mandate](https://pennylane.readme.io/reference/getgocardlessmandate.md): This endpoint allows you to retrieve a specific Gocardless mandate by ID. > ℹ️ > This endpoint requires one of the following scopes: `customer_mandates:all`, `customer_mandates:readonly` - [Send a GoCardless mandate email request](https://pennylane.readme.io/reference/postgocardlessmandatemailrequests.md): This endpoint allows you to send an email request for a GoCardless mandate to a recipient. > ℹ️ > This endpoint requires the following scope: `customer_mandates:all` - [Associate a GoCardless mandate to a customer](https://pennylane.readme.io/reference/postgocardlessmandateassociations.md): This endpoint allows you to associate a GoCardless mandate to a customer. > ℹ️ > This endpoint requires the following scope: `customer_mandates:all` - [Cancel a Gocardless mandate](https://pennylane.readme.io/reference/postgocardlessmandatecancellations.md): Cancels a specific Gocardless mandate by ID. The mandate must be in a cancellable state, having one of the following statuses: `pending_submission`, `submitted` or `active`. > ℹ️ > This endpoint… ## API Reference: QUOTES - [List quotes](https://pennylane.readme.io/reference/listquotes.md): Lists quotes > ℹ️ > This endpoint requires one of the following scopes: `quotes:all`, `quotes:readonly` - [Retrieve a quote](https://pennylane.readme.io/reference/getquote.md): This endpoint retrieves a quote. > ℹ️ > This endpoint requires one of the following scopes: `quotes:all`, `quotes:readonly` - [List invoice line sections for a quote](https://pennylane.readme.io/reference/getquoteinvoicelinesections.md): List invoice line sections for a quote > ℹ️ > This endpoint requires one of the following scopes: `quotes:all`, `quotes:readonly` - [List invoice lines for a quote](https://pennylane.readme.io/reference/getquoteinvoicelines.md): List invoice lines for a quote > ℹ️ > This endpoint requires one of the following scopes: `quotes:all`, `quotes:readonly` - [List appendices of a quote](https://pennylane.readme.io/reference/getquoteappendices.md): List appendices of a quote > ℹ️ > This endpoint requires one of the following scopes: `quotes:all`, `quotes:readonly` - [Create a quote](https://pennylane.readme.io/reference/postquotes.md): This endpoint allows you to create a quote > ℹ️ > This endpoint requires the following scope: `quotes:all` - [Upload an appendix for a quote](https://pennylane.readme.io/reference/postquoteappendices.md): Upload a file that will be an appendix attached to a quote. Note that this will not upload a file into the DMS (GED). > ℹ️ > This endpoint requires the following scope: `quotes:all` - [Send a quote by email](https://pennylane.readme.io/reference/sendbyemailquote.md): 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… - [Update a quote](https://pennylane.readme.io/reference/updatequote.md): This endpoint allows you to update a quote > ℹ️ > This endpoint requires the following scope: `quotes:all` - [Update status of a quote](https://pennylane.readme.io/reference/updatestatusquote.md): This endpoint allows you to update the status of a quote > ℹ️ > This endpoint requires the following scope: `quotes:all` ## API Reference: Supplier invoices - [List invoice lines for a supplier invoice](https://pennylane.readme.io/reference/getsupplierinvoicelines.md): List invoice lines for a supplier invoice > ℹ️ > This endpoint requires one of the following scopes: `supplier_invoices:all`, `supplier_invoices:readonly` - [List supplier invoices](https://pennylane.readme.io/reference/getsupplierinvoices.md): This endpoint returns a list of supplier invoices. > ℹ️ > This endpoint requires one of the following scopes: `supplier_invoices:all`, `supplier_invoices:readonly` - [Retrieve a supplier invoice](https://pennylane.readme.io/reference/getsupplierinvoice.md): This endpoint returns a supplier invoice. > ℹ️ > This endpoint requires one of the following scopes: `supplier_invoices:all`, `supplier_invoices:readonly` - [List categories of a supplier invoice](https://pennylane.readme.io/reference/getsupplierinvoicecategories.md): List categories of a supplier invoice > ℹ️ > This endpoint requires one of the following scopes: `supplier_invoices:all`, `supplier_invoices:readonly` - [List payments for a supplier invoice](https://pennylane.readme.io/reference/getsupplierinvoicepayments.md): List payments for a supplier invoice > ℹ️ > This endpoint requires one of the following scopes: `supplier_invoices:all`, `supplier_invoices:readonly` - [List matched transactions for a supplier invoice](https://pennylane.readme.io/reference/getsupplierinvoicematchedtransactions.md): List matched transactions for a supplier invoice > ℹ️ > This endpoint requires one of the following scopes: `supplier_invoices:all`, `supplier_invoices:readonly` - [Import a supplier invoice with a file attached](https://pennylane.readme.io/reference/importsupplierinvoice.md): This endpoint allows you to import a supplier invoice with a file attached. > ℹ️ > This endpoint requires the following scope: `supplier_invoices:all` - [Link a purchase request to a supplier invoice](https://pennylane.readme.io/reference/postsupplierinvoicelinkedpurchaserequests.md): This endpoint allows you to link a purchase request to a supplier invoice. You can link one purchase request with one supplier invoice at a time. To link multiple purchase request to a supplier… - [Import a supplier e-invoice](https://pennylane.readme.io/reference/createsupplierinvoiceeinvoiceimport.md): Import a supplier invoice from an e-invoice file. The file must be a Factur-X PDF, a standalone UBL XML invoice, or a standalone CII XML invoice. Optionally provide `invoice_options` to pre-fill… - [Update a supplier invoice](https://pennylane.readme.io/reference/putsupplierinvoice.md): This endpoint allows you to update a supplier invoice. > ℹ️ > This endpoint requires the following scope: `supplier_invoices:all` - [Categorize a supplier invoice](https://pennylane.readme.io/reference/putsupplierinvoicecategories.md): Update the categories of a supplier invoice. You can pass categories that don't belong to the same category group. The sum of categories of a same group must equal `1`. In the following example, the… - [Update a supplier invoice payment status](https://pennylane.readme.io/reference/updatesupplierinvoicepaymentstatus.md): This endpoint allows you to update the payment status of a supplier invoice. > ℹ️ > This endpoint requires the following scope: `supplier_invoices:all` - [Validate the accounting of a supplier invoice](https://pennylane.readme.io/reference/validateaccountingsupplierinvoice.md): Turn the supplier invoice into a Complete state. > ℹ️ > This endpoint requires the following scope: `supplier_invoices:all` - [Update e-invoice status for a supplier invoice](https://pennylane.readme.io/reference/putsupplierinvoiceeinvoicestatus.md): Applies an electronic invoicing lifecycle transition to a supplier invoice received via the PA. Invoices arrive with a `null` e-invoicing status, which means implicitly approved — no action is… - [List purchase requests](https://pennylane.readme.io/reference/getpurchaserequests.md): List purchase requests > ℹ️ > This endpoint requires one of the following scopes: `purchase_requests:all`, `purchase_requests:readonly` - [Retrieve a purchase request](https://pennylane.readme.io/reference/getpurchaserequest.md): Retrieve a purchase request > ℹ️ > This endpoint requires one of the following scopes: `purchase_requests:all`, `purchase_requests:readonly` - [Import a purchase order.](https://pennylane.readme.io/reference/createpurchaserequestimport.md): Import a purchase order. This will create a purchase request with an existing purchase order attached. The purchase request will be **automatically validated**. > ℹ️ > This endpoint requires the… - [List suppliers](https://pennylane.readme.io/reference/getsuppliers.md): List suppliers > ℹ️ > This endpoint requires one of the following scopes: `suppliers:all`, `suppliers:readonly` - [Retrieve a supplier](https://pennylane.readme.io/reference/getsupplier.md): This endpoint returns a supplier. > ℹ️ > This endpoint requires one of the following scopes: `suppliers:all`, `suppliers:readonly` - [Create a Supplier](https://pennylane.readme.io/reference/postsupplier.md): This endpoint returns the created supplier. > ℹ️ > This endpoint requires the following scope: `suppliers:all` - [Update a supplier](https://pennylane.readme.io/reference/putsupplier.md): This endpoint returns the updated supplier. > ℹ️ > This endpoint requires the following scope: `suppliers:all` - [List categories of a supplier](https://pennylane.readme.io/reference/getsuppliercategories.md): List categories of a supplier > ℹ️ > This endpoint requires one of the following scopes: `suppliers:readonly`, `suppliers:all` - [Categorize a supplier](https://pennylane.readme.io/reference/putsuppliercategories.md): Update the categories of a supplier. You can pass categories that don't belong to the same category group. The sum of categories of a same group must equal `1`. In the following example, the two… ## API Reference: Transactions - [List bank establishments](https://pennylane.readme.io/reference/getbankestablishments.md): List bank establishments > ℹ️ > This endpoint requires the following scope: `bank_establishments:readonly` - [List bank accounts](https://pennylane.readme.io/reference/getbankaccounts.md): List bank_accounts > ℹ️ > This endpoint requires one of the following scopes: `bank_accounts:all`, `bank_accounts:readonly` - [Retrieve a bank account](https://pennylane.readme.io/reference/getbankaccount.md): Retrieve a bank account > ℹ️ > This endpoint requires one of the following scopes: `bank_accounts:all`, `bank_accounts:readonly` - [Create a bank account](https://pennylane.readme.io/reference/postbankaccount.md): Create a bank account > ℹ️ > This endpoint requires the following scope: `bank_accounts:all` - [List transactions](https://pennylane.readme.io/reference/gettransactions.md): List transactions > ℹ️ > This endpoint requires one of the following scopes: `transactions:readonly`, `transactions:all` - [Retrieve a transaction](https://pennylane.readme.io/reference/gettransaction.md): Retrieve a transaction > ℹ️ > This endpoint requires one of the following scopes: `transactions:readonly`, `transactions:all` - [List invoices matched to a bank transaction](https://pennylane.readme.io/reference/gettransactionmatchedinvoices.md): List invoices matched to a bank transaction > ℹ️ > This endpoint requires one of the following scopes: `transactions:readonly`, `transactions:all` - [List categories of a bank transaction](https://pennylane.readme.io/reference/gettransactioncategories.md): List categories of a bank transaction > ℹ️ > This endpoint requires one of the following scopes: `transactions:readonly`, `transactions:all` - [Create a transaction](https://pennylane.readme.io/reference/createtransaction.md): Create a banking transaction > ℹ️ > This endpoint requires the following scope: `transactions:all` - [Match a transaction to a customer invoice](https://pennylane.readme.io/reference/postcustomerinvoicematchedtransactions.md): This endpoint allows you to match a transaction to a customer invoice. It is not applicable for draft invoices. You can match one transaction with one customer invoice at a time. To match multiple… - [Match a transaction to a supplier invoice](https://pennylane.readme.io/reference/postsupplierinvoicematchedtransactions.md): This endpoint allows you to match a transaction to a supplier invoice. You can match one transaction with one supplier invoice at a time. To match multiple transactions to a supplier invoice, you… - [Categorize a bank transaction](https://pennylane.readme.io/reference/puttransactioncategories.md): Update the categories of a transaction. You can pass categories that don't belong to the same category group. The sum of categories of a same group must equal `1`. In the following example, the two… - [Update a transaction](https://pennylane.readme.io/reference/updatetransaction.md): This endpoint returns the updated transaction. > ℹ️ > This endpoint requires the following scope: `transactions:all` - [Unmatch a transaction to a customer invoice](https://pennylane.readme.io/reference/deletecustomerinvoicematchedtransactions.md): This endpoint allows you to unmatch a transaction to a customer invoice. It is not applicable for draft invoices. > ℹ️ > This endpoint requires the following scope: `customer_invoices:all` - [Unmatch a transaction to a supplier invoice](https://pennylane.readme.io/reference/deletesupplierinvoicematchedtransactions.md): This endpoint allows you to unmatch a transaction to a supplier invoice. > ℹ️ > This endpoint requires the following scope: `supplier_invoices:all` ## API Reference: Users - [User Profile](https://pennylane.readme.io/reference/getme.md): This endpoint returns information about the company and the user associated to the token. ## API Reference: PA Registrations - [List PA Registrations](https://pennylane.readme.io/reference/getparegistrations.md): Returns all PA (Plateforme Agrée) registrations for the company, including activation status and exchange direction. Use this to determine whether the company has completed PA onboarding. Records… ## API Reference: Webhooks - [Get a webhook subscription](https://pennylane.readme.io/reference/getwebhooksubscription.md): This endpoint allows you to retrieve a webhook subscription by ID. Note that the secret is not included in the response. - [Update a webhook subscription](https://pennylane.readme.io/reference/putwebhooksubscription.md): This endpoint allows you to update a webhook subscription by ID. - [Delete a webhook subscription](https://pennylane.readme.io/reference/deletewebhooksubscription.md): This endpoint allows you to delete a webhook subscription by ID. - [List webhook subscriptions](https://pennylane.readme.io/reference/getwebhooksubscriptions.md): Returns all webhook subscriptions for the authenticated token, paginated. Note that the secret is not included in the response. - [Create a webhook subscription](https://pennylane.readme.io/reference/postwebhooksubscriptions.md): Creates a webhook subscription to receive real-time notifications for events occurring within your company or companies. **Authentication & Scope** Subscription scope: - **Company-scoped token**… ## Pages - [API Contract terms](https://pennylane.readme.io/page/api-contract-terms.md) ## Changelog - [Supplier invoices: expose and filter by electronic billing address](https://pennylane.readme.io/changelog/supplier-invoices-expose-and-filter-by-electronic-billing-address.md) - [New fields on Customer Invoice: `purchase_order_reference` and `sales_order_reference`](https://pennylane.readme.io/changelog/new-fields-on-customer-invoice-purchase_order_reference-and-sales_order_reference.md) - [Automatically send to PA on customer e-invoice import](https://pennylane.readme.io/changelog/automatically-send-to-pa-on-customer-e-invoice-import.md) - [Substance field on Products and Customer Invoice lines](https://pennylane.readme.io/changelog/substance-field-on-products-and-customer-invoice-lines.md) - [New `import_source` field on Supplier Invoices endpoints](https://pennylane.readme.io/changelog/new-import_source-field-on-supplier-invoices-endpoints.md) - [New `schematron_validation_status` field on Customer Invoices](https://pennylane.readme.io/changelog/new-schematron_validation_status-field-on-customer-invoices.md) - [Original Supplier Invoice File Retrieval](https://pennylane.readme.io/changelog/original-supplier-invoice-file-retrieval.md) - [Customer & Supplier Invoices — E-invoicing flow field and flow_id filter](https://pennylane.readme.io/changelog/customer-supplier-invoices-e-invoicing-flow-field-and-flow_id-filter.md) - [Factur-X conversion on customer invoice import](https://pennylane.readme.io/changelog/factur-x-conversion-on-customer-invoice-import.md) - [New endpoint: Send a customer e-invoice to PA](https://pennylane.readme.io/changelog/new-endpoint-send-a-customer-e-invoice-to-pa.md)