Purchases¶
Suppliers, purchase invoices and purchase requests.
Bases: SyncAPIResource
Manage suppliers.
list ¶
list(
*,
cursor: str | None = None,
limit: int | None = None,
filter: FiltersInput | None = None,
sort: str | None = None,
) -> SyncCursorPage[Supplier]
List suppliers.
Scope: suppliers:readonly.
Reference: https://pennylane.readme.io/reference/getsuppliers
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
cursor
|
str | None
|
Pagination cursor from a previous page. |
None
|
limit
|
int | None
|
Results per page (1-100, API default 20). |
None
|
filter
|
FiltersInput | None
|
Conditions built with :mod: |
None
|
sort
|
str | None
|
Sort field, prefixed with |
None
|
create ¶
create(
*,
name: str,
establishment_no: str | None = None,
reg_no: str | None = None,
postal_address: dict[str, Any] | None = None,
vat_number: str | None = None,
ledger_account: dict[str, Any] | None = None,
emails: list[str] | None = None,
iban: str | None = None,
supplier_payment_method: str | None = None,
supplier_due_date_delay: int | None = None,
supplier_due_date_rule: str | None = None,
external_reference: str | None = None,
) -> Supplier
Create a supplier.
Scope: suppliers:all.
Reference: https://pennylane.readme.io/reference/postsupplier
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
name
|
str
|
Supplier name. |
required |
establishment_no
|
str | None
|
SIRET (14-digit French establishment number). |
None
|
reg_no
|
str | None
|
SIREN (9-digit French registration number). |
None
|
postal_address
|
dict[str, Any] | None
|
|
None
|
vat_number
|
str | None
|
VAT number. |
None
|
ledger_account
|
dict[str, Any] | None
|
|
None
|
emails
|
list[str] | None
|
Email addresses. |
None
|
iban
|
str | None
|
Supplier IBAN. |
None
|
supplier_payment_method
|
str | None
|
One of |
None
|
supplier_due_date_delay
|
int | None
|
Number of days before payment is due. |
None
|
supplier_due_date_rule
|
str | None
|
|
None
|
external_reference
|
str | None
|
Your own unique reference (auto-assigned if omitted). |
None
|
get ¶
get(supplier_id: int) -> Supplier
Retrieve a supplier by its Pennylane identifier.
Scope: suppliers:readonly.
Reference: https://pennylane.readme.io/reference/getsupplier
update ¶
update(
supplier_id: int,
*,
name: str | None = None,
establishment_no: str | None = None,
reg_no: str | None = None,
postal_address: dict[str, Any] | None = None,
vat_number: str | None = None,
emails: list[str] | None = None,
iban: str | None = None,
supplier_payment_method: str | None = None,
supplier_due_date_delay: int | None = None,
supplier_due_date_rule: str | None = None,
external_reference: str | None = None,
) -> Supplier
Update a supplier. Only the provided fields are modified.
Scope: suppliers:all.
Reference: https://pennylane.readme.io/reference/putsupplier
list_categories ¶
list_categories(
supplier_id: int,
*,
cursor: str | None = None,
limit: int | None = None,
) -> SyncCursorPage[SupplierCategory]
List the categories assigned to a supplier.
Scope: suppliers:readonly.
Reference: https://pennylane.readme.io/reference/getsuppliercategories
categorize ¶
categorize(
supplier_id: int, *, categories: list[dict[str, Any]]
) -> None
Replace the categories assigned to a supplier.
Scope: suppliers:all.
Reference: https://pennylane.readme.io/reference/putsuppliercategories
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
categories
|
list[dict[str, Any]]
|
List of |
required |
Bases: SyncAPIResource
Manage supplier invoices (French: factures d'achat).
list ¶
list(
*,
cursor: str | None = None,
limit: int | None = None,
filter: FiltersInput | None = None,
sort: str | None = None,
) -> SyncCursorPage[SupplierInvoice]
List supplier invoices.
Scope: supplier_invoices:readonly.
Reference: https://pennylane.readme.io/reference/getsupplierinvoices
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
cursor
|
str | None
|
Pagination cursor from a previous page. |
None
|
limit
|
int | None
|
Results per page (1-100, API default 20). |
None
|
filter
|
FiltersInput | None
|
Conditions built with :mod: |
None
|
sort
|
str | None
|
Sort field, prefixed with |
None
|
get ¶
get(supplier_invoice_id: int) -> SupplierInvoice
Retrieve a supplier invoice by its Pennylane identifier.
Scope: supplier_invoices:readonly.
Reference: https://pennylane.readme.io/reference/getsupplierinvoice
update ¶
update(
supplier_invoice_id: int,
*,
supplier_id: int | None = None,
date: date | str | None = None,
deadline: date | str | None = None,
invoice_number: str | None = None,
label: str | None = None,
currency: str | None = None,
currency_amount_before_tax: MoneyInput | None = None,
currency_amount: MoneyInput | None = None,
amount: MoneyInput | None = None,
currency_tax: MoneyInput | None = None,
tax: MoneyInput | None = None,
transaction_reference: dict[str, Any] | None = None,
invoice_lines: dict[str, Any] | None = None,
external_reference: str | None = None,
) -> SupplierInvoice
Update a supplier invoice. Only the provided fields are modified.
Scope: supplier_invoices:all.
Reference: https://pennylane.readme.io/reference/putsupplierinvoice
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
transaction_reference
|
dict[str, Any] | None
|
|
None
|
invoice_lines
|
dict[str, Any] | None
|
|
None
|
import_from_file ¶
import_from_file(
*,
file_attachment_id: int,
supplier_id: int,
date: date | str,
deadline: date | str,
currency_amount_before_tax: MoneyInput,
currency_amount: MoneyInput,
currency_tax: MoneyInput,
invoice_lines: list[dict[str, Any]],
import_as_incomplete: bool | None = None,
invoice_number: str | None = None,
currency: str | None = None,
amount: MoneyInput | None = None,
tax: MoneyInput | None = None,
label: str | None = None,
transaction_reference: dict[str, Any] | None = None,
external_reference: str | None = None,
) -> SupplierInvoice
Import a supplier invoice from a previously uploaded file attachment.
Scope: supplier_invoices:all.
Reference: https://pennylane.readme.io/reference/importsupplierinvoice
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
file_attachment_id
|
int
|
ID of a file uploaded through |
required |
import_as_incomplete
|
bool | None
|
Set the invoice to |
None
|
invoice_lines
|
list[dict[str, Any]]
|
Invoice lines, each a dict of invoice line fields
( |
required |
transaction_reference
|
dict[str, Any] | None
|
|
None
|
import_e_invoice ¶
import_e_invoice(
*,
file: FileInput,
filename: str | None = None,
invoice_options: dict[str, Any] | None = None,
) -> SupplierEInvoiceImportResult
Import a supplier e-invoice file (Factur-X PDF, UBL XML or CII XML).
Scope: supplier_invoices:all.
Reference: https://pennylane.readme.io/reference/createsupplierinvoiceeinvoiceimport
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
file
|
FileInput
|
The e-invoice file (path, bytes or file-like object). |
required |
filename
|
str | None
|
Overrides the filename sent to the API. |
None
|
invoice_options
|
dict[str, Any] | None
|
Optional payload to enrich the imported invoice:
|
None
|
validate_accounting ¶
validate_accounting(
supplier_invoice_id: int,
) -> SupplierInvoice
Validate the accounting of a supplier invoice.
Scope: supplier_invoices:all.
Reference: https://pennylane.readme.io/reference/validateaccountingsupplierinvoice
update_payment_status ¶
update_payment_status(
supplier_invoice_id: int, *, payment_status: str
) -> None
Update the payment status of a supplier invoice.
Scope: supplier_invoices:all.
Reference: https://pennylane.readme.io/reference/updatesupplierinvoicepaymentstatus
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
payment_status
|
str
|
|
required |
update_e_invoice_status ¶
update_e_invoice_status(
supplier_invoice_id: int,
*,
status: str,
reason: str | None = None,
) -> SupplierInvoice
Update the e-invoice lifecycle status of a supplier invoice.
Scope: supplier_invoices:all.
Reference: https://pennylane.readme.io/reference/putsupplierinvoiceeinvoicestatus
The request body is a oneOf of three variants:
- Dispute (
status="disputed"): requiresreasonfrom the dispute set (incorrect_vat_rate,incorrect_unit_prices,incorrect_billed_quantity,incorrect_billed_item,defective_delivered_item,delivery_issue,bank_details_error,incorrect_payment_terms,missing_legal_notice,missing_contractual_reference,recipient_error). - Refuse (
status="refused"): requiresreasonfrom the refuse set (incorrect_vat_rate,contract_completed,duplicate_invoice,recipient_error,incorrect_prices,non_compliant_invoice). - Undispute (
status="approved"): noreason.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
status
|
str
|
|
required |
reason
|
str | None
|
Required for |
None
|
list_invoice_lines ¶
list_invoice_lines(
supplier_invoice_id: int,
*,
cursor: str | None = None,
limit: int | None = None,
sort: str | None = None,
) -> SyncCursorPage[InvoiceLine]
List the invoice lines of a supplier invoice.
Scope: supplier_invoices:readonly.
Reference: https://pennylane.readme.io/reference/getsupplierinvoicelines
list_categories ¶
list_categories(
supplier_invoice_id: int,
*,
cursor: str | None = None,
limit: int | None = None,
) -> SyncCursorPage[SupplierInvoiceCategory]
List the analytic categories assigned to a supplier invoice.
Scope: supplier_invoices:readonly.
Reference: https://pennylane.readme.io/reference/getsupplierinvoicecategories
categorize ¶
categorize(
supplier_invoice_id: int,
*,
categories: list[dict[str, Any]],
) -> builtins.list[SupplierInvoiceCategory]
Replace the analytic categories assigned to a supplier invoice.
Categories may belong to different category groups; the weights of
categories from the same group must sum to 1.
Scope: supplier_invoices:all.
Reference: https://pennylane.readme.io/reference/putsupplierinvoicecategories
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
categories
|
list[dict[str, Any]]
|
List of |
required |
list_payments ¶
list_payments(
supplier_invoice_id: int,
*,
cursor: str | None = None,
limit: int | None = None,
sort: str | None = None,
) -> SyncCursorPage[Payment]
List the payments of a supplier invoice.
Scope: supplier_invoices:readonly.
Reference: https://pennylane.readme.io/reference/getsupplierinvoicepayments
list_matched_transactions ¶
list_matched_transactions(
supplier_invoice_id: int,
*,
cursor: str | None = None,
limit: int | None = None,
sort: str | None = None,
) -> SyncCursorPage[MatchedTransaction]
List the bank transactions matched to a supplier invoice.
Scope: supplier_invoices:readonly.
Reference: https://pennylane.readme.io/reference/getsupplierinvoicematchedtransactions
match_transaction ¶
match_transaction(
supplier_invoice_id: int, *, transaction_id: int
) -> None
Match a bank transaction to a supplier invoice.
Scope: supplier_invoices:all.
Reference: https://pennylane.readme.io/reference/postsupplierinvoicematchedtransactions
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
transaction_id
|
int
|
ID of the transaction to match. |
required |
unmatch_transaction ¶
unmatch_transaction(
supplier_invoice_id: int, transaction_id: int
) -> None
Unmatch a bank transaction from a supplier invoice.
Scope: supplier_invoices:all.
Reference: https://pennylane.readme.io/reference/deletesupplierinvoicematchedtransactions
link_purchase_requests ¶
link_purchase_requests(
supplier_invoice_id: int, *, purchase_request_id: int
) -> None
Link a purchase request to a supplier invoice.
Scope: supplier_invoices:all.
Reference: https://pennylane.readme.io/reference/postsupplierinvoicelinkedpurchaserequests
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
purchase_request_id
|
int
|
ID of the purchase request to link. |
required |
Bases: SyncAPIResource
Read and import purchase requests (French: demandes d'achat).
list ¶
list(
*,
cursor: str | None = None,
limit: int | None = None,
filter: FiltersInput | None = None,
sort: str | None = None,
) -> SyncCursorPage[PurchaseRequest]
List purchase requests.
Scope: purchase_requests:readonly.
Reference: https://pennylane.readme.io/reference/getpurchaserequests
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
cursor
|
str | None
|
Pagination cursor from a previous page. |
None
|
limit
|
int | None
|
Results per page (1-100, API default 20). |
None
|
filter
|
FiltersInput | None
|
Conditions built with :mod: |
None
|
sort
|
str | None
|
Sort field, prefixed with |
None
|
get ¶
get(purchase_request_id: int) -> PurchaseRequest
Retrieve a purchase request by its Pennylane identifier.
Scope: purchase_requests:readonly.
Reference: https://pennylane.readme.io/reference/getpurchaserequest
import_from_file ¶
import_from_file(
*,
file_attachment_id: int,
reason: str,
supplier_id: int,
purchase_order_number: str,
currency_amount_before_tax: MoneyInput,
currency_amount: MoneyInput,
currency_tax: MoneyInput,
delivery_address: dict[str, Any],
purchase_request_lines: list[dict[str, Any]],
estimated_delivery_date: date | str | None = None,
currency: str | None = None,
amount: MoneyInput | None = None,
tax: MoneyInput | None = None,
) -> PurchaseRequest
Import a purchase order from a previously uploaded file attachment.
Scope: purchase_requests:all.
Reference: https://pennylane.readme.io/reference/createpurchaserequestimport
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
file_attachment_id
|
int
|
ID of a file uploaded through |
required |
reason
|
str
|
Reason of the purchase request. |
required |
supplier_id
|
int
|
Supplier identifier. |
required |
purchase_order_number
|
str
|
Purchase order number. |
required |
delivery_address
|
dict[str, Any]
|
|
required |
purchase_request_lines
|
list[dict[str, Any]]
|
Lines, each a dict with |
required |
estimated_delivery_date
|
date | str | None
|
Estimated delivery date (ISO 8601). |
None
|