Invoices
3 endpoints. Each needs an API key or OAuth token with the scope shown; the key already names its store, so paths start at /v1/store. Generated from the live contract; also in openapi.json.
Invoices and credit notes issued to buyers, newest first, with totals per currency
GET
/v1/store/invoicesOr name the store: GET /v1/stores/{storeId}/invoices
Parameters
fromstring | nullquerytostring | nullquerykind"all" | "invoice" | "credit_note"queryqstring | nullquerytestboolean | "true" | "false"querycursorstring | nullquerylimitinteger | stringquerysort"date" | "number" | "buyer" | "order" | "net" | "tax" | "total"querydir"asc" | "desc"query
Response InvoiceList
itemsInvoiceRow[]requirednextCursorstringrequiredtotalsInvoiceTotalsByCurrency[]required
Example
curl "https://api.shopfa.st/v1/store/invoices" \
-H "Authorization: Bearer $SHOPFAST_API_KEY"const res = await fetch('https://api.shopfa.st/v1/store/invoices', {
method: 'GET',
headers: {
Authorization: `Bearer ${process.env.SHOPFAST_API_KEY}`,
},
});
if (!res.ok) throw new Error((await res.json()).detail);
const data = await res.json();import os, requests
res = requests.request(
"GET",
"https://api.shopfa.st/v1/store/invoices",
headers={"Authorization": f"Bearer {os.environ['SHOPFAST_API_KEY']}"},
)
res.raise_for_status()
data = res.json()req, _ := http.NewRequest("GET", "https://api.shopfa.st/v1/store/invoices", nil)
req.Header.Set("Authorization", "Bearer "+os.Getenv("SHOPFAST_API_KEY"))
res, err := http.DefaultClient.Do(req)Try it with your key
One invoice or credit note as issued
GET
/v1/store/invoices/{invoiceId}Or name the store: GET /v1/stores/{storeId}/invoices/{invoiceId}
Parameters
invoiceIdinv_…pathrequired
Response GetInvoiceResponse
rowInvoiceRowrequireddocumentInvoiceDocumentrequired
Example
curl "https://api.shopfa.st/v1/store/invoices/inv_0123456789abcdefghjk" \
-H "Authorization: Bearer $SHOPFAST_API_KEY"const res = await fetch('https://api.shopfa.st/v1/store/invoices/inv_0123456789abcdefghjk', {
method: 'GET',
headers: {
Authorization: `Bearer ${process.env.SHOPFAST_API_KEY}`,
},
});
if (!res.ok) throw new Error((await res.json()).detail);
const data = await res.json();import os, requests
res = requests.request(
"GET",
"https://api.shopfa.st/v1/store/invoices/inv_0123456789abcdefghjk",
headers={"Authorization": f"Bearer {os.environ['SHOPFAST_API_KEY']}"},
)
res.raise_for_status()
data = res.json()req, _ := http.NewRequest("GET", "https://api.shopfa.st/v1/store/invoices/inv_0123456789abcdefghjk", nil)
req.Header.Set("Authorization", "Bearer "+os.Getenv("SHOPFAST_API_KEY"))
res, err := http.DefaultClient.Do(req)Try it with your key
A link to the PDF or the UBL 2.1 (EN 16931) XML
GET
/v1/store/invoices/{invoiceId}/downloadOr name the store: GET /v1/stores/{storeId}/invoices/{invoiceId}/download
Parameters
invoiceIdinv_…pathrequiredformat"pdf" | "xml"query
Response DocumentLink
urlstringrequiredfilenamestringrequiredexpiresAtTimestamprequired
Example
curl "https://api.shopfa.st/v1/store/invoices/inv_0123456789abcdefghjk/download" \
-H "Authorization: Bearer $SHOPFAST_API_KEY"const res = await fetch('https://api.shopfa.st/v1/store/invoices/inv_0123456789abcdefghjk/download', {
method: 'GET',
headers: {
Authorization: `Bearer ${process.env.SHOPFAST_API_KEY}`,
},
});
if (!res.ok) throw new Error((await res.json()).detail);
const data = await res.json();import os, requests
res = requests.request(
"GET",
"https://api.shopfa.st/v1/store/invoices/inv_0123456789abcdefghjk/download",
headers={"Authorization": f"Bearer {os.environ['SHOPFAST_API_KEY']}"},
)
res.raise_for_status()
data = res.json()req, _ := http.NewRequest("GET", "https://api.shopfa.st/v1/store/invoices/inv_0123456789abcdefghjk/download", nil)
req.Header.Set("Authorization", "Bearer "+os.Getenv("SHOPFAST_API_KEY"))
res, err := http.DefaultClient.Do(req)