GET
/
api
/
external
/
v2
/
products
/
{id}
Retrieve a product
curl --request GET \
  --url https://app.pennylane.com/api/external/v2/products/{id} \
  --header 'Authorization: Bearer <token>'
{
  "id": 1,
  "label": "Product 1",
  "description": "This is product 1",
  "external_reference": "0e67fc3c-c632-4feb-ad34-e18ed5fbf66a",
  "price_before_tax": 12.5,
  "vat_rate": "FR_200",
  "price": 13.6,
  "unit": "piece",
  "currency": "EUR",
  "reference": "REF-123",
  "ledger_account": {
    "id": 123
  },
  "archived_at": "2023-09-30T10:08:08.146343Z",
  "created_at": "2023-08-30T10:08:08.146343Z",
  "updated_at": "2023-08-30T10:08:08.146343Z"
}

Authorizations

Authorization
string
header
required

The access token received from the authorization server in the OAuth 2.0 flow.

Path Parameters

id
integer
required

Response

The requested Product

id
integer
required
Example:

1

label
string
required

Product label

Example:

"Product 1"

description
string
required

Product description

Example:

"This is product 1"

external_reference
string
required

The unique external reference assigned to this Product, assigned on creation either by you or Pennylane. (Same attribute as source_id in the API v1)

Example:

"0e67fc3c-c632-4feb-ad34-e18ed5fbf66a"

price_before_tax
string
required

Product price without taxes

Example:

12.5

vat_rate
enum<string>
required

Product VAT rate. A 20% VAT in France is FR_200.

Available options:
FR_1_05,
FR_1_75,
FR_09,
FR_21,
FR_40,
FR_50,
FR_55,
FR_60,
FR_65,
FR_85,
FR_92,
FR_100,
FR_130,
FR_15_385,
FR_160,
FR_196,
FR_200,
AD_10,
AD_45,
AD_95,
AT_100,
AT_130,
AT_200,
BE_60,
BE_120,
BE_210,
BG_90,
BG_200,
CH_25,
CH_26,
CH_37,
CH_38,
CH_77,
CH_81,
CY_30,
CY_50,
CY_90,
CY_190,
CZ_100,
CZ_120,
CZ_150,
CZ_210,
DE_70,
DE_190,
DK_250,
EE_90,
EE_200,
EE_220,
EE_240,
ES_40,
ES_100,
ES_210,
FI_100,
FI_140,
FI_240,
FI_255,
GB_50,
GB_200,
GR_60,
GR_130,
GR_240,
HR_50,
HR_130,
HR_250,
HU_50,
HU_180,
HU_270,
IE_48,
IE_90,
IE_135,
IE_210,
IE_230,
IT_40,
IT_50,
IT_100,
IT_220,
LT_50,
LT_90,
LT_210,
LU_30,
LU_70,
LU_80,
LU_120,
LU_130,
LU_140,
LU_160,
LU_170,
LV_50,
LV_120,
LV_210,
MC_09,
MC_21,
MC_55,
MC_85,
MC_100,
MC_200,
MT_50,
MT_70,
MT_180,
MU_150,
NL_90,
NL_210,
PL_50,
PL_80,
PL_230,
PT_60,
PT_130,
PT_160,
PT_230,
RO_50,
RO_90,
RO_190,
SE_60,
SE_120,
SE_250,
SI_50,
SI_95,
SI_220,
SK_100,
SK_190,
SK_200,
SK_230,
NO_120,
NO_150,
NO_250,
exempt,
extracom,
intracom_21,
intracom_55,
intracom_85,
intracom_100,
crossborder,
FR_85_construction,
FR_100_construction,
FR_200_construction,
mixed
Example:

"FR_200"

price
string
required
Example:

13.6

unit
string
required

Product unit

Example:

"piece"

currency
enum<string>
default:EUR
required
Available options:
EUR,
USD,
GBP,
AED,
AFN,
ALL,
AMD,
ANG,
AOA,
ARS,
AUD,
AWG,
AZN,
BAM,
BBD,
BDT,
BGN,
BHD,
BIF,
BMD,
BND,
BOB,
BRL,
BSD,
BTN,
BWP,
BYN,
BYR,
BZD,
CAD,
CDF,
CHF,
CLF,
CLP,
CNY,
COP,
CRC,
CUC,
CUP,
CVE,
CZK,
DJF,
DKK,
DOP,
DZD,
EGP,
ERN,
ETB,
FJD,
FKP,
GEL,
GGP,
GHS,
GIP,
GMD,
GNF,
GTQ,
GYD,
HKD,
HNL,
HRK,
HTG,
HUF,
IDR,
ILS,
IMP,
INR,
IQD,
IRR,
ISK,
JEP,
JMD,
JOD,
JPY,
KES,
KGS,
KHR,
KMF,
KPW,
KRW,
KWD,
KYD,
KZT,
LAK,
LBP,
LKR,
LRD,
LSL,
LTL,
LVL,
LYD,
MAD,
MDL,
MGA,
MKD,
MMK,
MNT,
MOP,
MRO,
MUR,
MVR,
MWK,
MXN,
MYR,
MZN,
NAD,
NGN,
NIO,
NOK,
NPR,
NZD,
OMR,
PAB,
PEN,
PGK,
PHP,
PKR,
PLN,
PYG,
QAR,
RON,
RSD,
RUB,
RWF,
SAR,
SBD,
SCR,
SDG,
SEK,
SGD,
SHP,
SLL,
SOS,
SRD,
STD,
SVC,
SYP,
SZL,
THB,
TJS,
TMT,
TND,
TOP,
TRY,
TTD,
TWD,
TZS,
UAH,
UGX,
UYU,
UZS,
VEF,
VND,
VUV,
WST,
XAF,
XCD,
XDR,
XOF,
XPF,
YER,
ZAR,
ZMK,
ZMW,
ZWL
reference
string | null
required

Product reference

Example:

"REF-123"

ledger_account
object | null
required
archived_at
string<date-time> | null
required

The time the product has been archived

Example:

"2023-09-30T10:08:08.146343Z"

created_at
string<date-time>
required
Example:

"2023-08-30T10:08:08.146343Z"

updated_at
string<date-time>
required
Example:

"2023-08-30T10:08:08.146343Z"