---
title: "Create a Supplier"
method: POST
path: "/api/external/v2/suppliers"
tags: ["Suppliers"]
---

# Create a Supplier

`POST /api/external/v2/suppliers`

## Request

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

This endpoint returns the created supplier.

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

## Headers

- `X-Company-Id` string

## Request body

- object
  - `name` string, required
  - `establishment_no` string, nullable: Supplier identification number (SIRET). - 14-digit number combining SIREN (9 digits) and NIC (5 digits) - Only applicable for French companies
  - `reg_no` string: Supplier registration number (SIREN). - 9-digit number - Only applicable for French companies
  - `postal_address` object
    - `address` string, required
    - `postal_code` string, required
    - `city` string, required
    - `country_alpha2` string, required
  - `vat_number` string
  - `ledger_account` object, nullable
    - `number` string, required
  - `emails` string[]
  - `iban` string
  - `supplier_payment_method` 'automatic_transfer' | 'manual_transfer' | 'automatic_debiting' | 'bill_of_exchange' | 'check' | 'cash' | 'card' | 'other', nullable
  - `supplier_due_date_delay` integer
  - `supplier_due_date_rule` 'days' | 'days_or_end_of_month', nullable
  - `external_reference` string: A unique external reference you can provide to track this supplier. If not provided, Pennylane will generate an identifier for you.

## Response `201`

Returns the created supplier

- object
  - `id` integer, required
  - `name` string, required
  - `establishment_no` string, nullable, required: Supplier identification number (SIRET). - 14-digit number combining SIREN (9 digits) and NIC (5 digits) - Only applicable for French companies
  - `reg_no` string, nullable, required: Supplier registration number (SIREN). - 9-digit number - Only applicable for French companies
  - `vat_number` string, required
  - `ledger_account` object, nullable, required
    - `id` integer, required
  - `emails` string[], required
  - `iban` string, required: The IBAN of the supplier
  - `postal_address` object, required
    - `address` string, required
    - `postal_code` string, required
    - `city` string, required
    - `country_alpha2` string, required
  - `supplier_payment_method` 'automatic_transfer' | 'manual_transfer' | 'automatic_debiting' | 'bill_of_exchange' | 'check' | 'cash' | 'card' | 'other', nullable, required
  - `supplier_due_date_delay` integer, nullable, required
  - `supplier_due_date_rule` 'days' | 'days_or_end_of_month', nullable, required
  - `external_reference` string, required: The unique external reference that was assigned during creation either by you or Pennylane
  - `created_at` string, date-time, required
  - `updated_at` string, date-time, required

## Other responses

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

## Changes

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

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

---

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