companyId, addedByCoach, price, or VAT fields.
Scopes
Finance write guardrails
Finance write endpoints reject these caller-supplied fields:List invoices
finance_invoices:read
Query parameters:
Response fields:
List client invoices
finance_invoices:read
The response uses data.page, data.limit, data.total, data.totalPages,
data.hasNextPage, data.hasPrevPage, and data.invoices[] entries with
invoiceId, invoiceNumber, invoiceType, status, paymentStatus,
totalPrice, totalVat, currency, issueDate, dueDate, paymentMethod,
title, client, subscriptionId, clientProductId,
paymentTransactionId, pdfAvailable, source, createdAt, and updatedAt.
The clientId path parameter must belong to the authenticated company.
Get invoice
finance_invoices:read
Response fields:
The invoice detail endpoint does not return
pdfLink, raw provider payloads,
payment-provider snapshots, billing-profile snapshots, internal notes, or
history arrays.
Get invoice PDF metadata
finance_invoice_pdfs:read
This endpoint returns a short-lived URL for an existing invoice PDF. It does not
generate PDFs, does not append invoice history, and does not modify the invoice.
If no PDF is stored yet, the response is 404 PDF_NOT_AVAILABLE.
Response fields:
Send invoice reminder
finance_invoice_messages:write
Request body:
Validation:
Response fields:
Resend invoice copy
finance_invoice_messages:write
This endpoint accepts the Send invoice reminder request contract: optional
notifyClient and optional clientMessage, with unknown fields rejected. The
response uses data.delivery.type = invoice_copy and returns
data.delivery.status, data.delivery.sentAt, and data.invoice.* with
invoiceId, invoiceNumber, invoiceType, status, paymentStatus,
totalPrice, totalVat, currency, issueDate, dueDate, paymentMethod,
title, client, subscriptionId, clientProductId,
paymentTransactionId, pdfAvailable, source, createdAt, and updatedAt.
List transactions
finance_payments:read
Query parameters: page, limit (max 100), dateFrom, dateTo (max 366
days), clientId, invoiceId, and status.
Response fields:
Transaction responses never include raw payment-provider payloads, customer
IDs, mandate IDs, provider snapshots, or internal notes.
Get transaction
finance_payments:read
Response fields:
List payment requests
finance_payment_requests:read
Query parameters: page, limit (max 100), status, and clientId when
filtering linked-client requests.
Response fields:
Not exposed: public tokens, checkout/public URLs, return/webhook URLs,
provider responses, payment transaction IDs, or ledger account IDs.
Get payment request
finance_payment_requests:read
Response fields:
Create payment request
finance_payment_requests:write
Request body:
Forbidden caller-supplied fields:
productPrice, price, priceExcVat,
priceVat, vat, and vatPercentage. Unknown fields are rejected.
Response fields:
List and get endpoints never return checkout/public URLs.
Cancel payment request
finance_payment_requests:write
Request body:
The payment request must belong to the authenticated company. Linked-client
requests also require client access.
Response fields:
List chargebacks
finance_chargebacks:read
Query parameters: page, limit (max 100), status, and clientId.
Response fields:
Not exposed: provider IDs, payment IDs, raw provider payloads, webhook payloads,
or notification timestamps.
Get chargeback
finance_chargebacks:read
Response fields:
Product overview
finance_products:read
This endpoint lists all active product catalog items across:
StoreModuleMembershipStoreModuleCreditPackStoreModuleDayStoreModuleSingle
companyId from the access token. Clients must never send companyId.
Query parameters:
Envelope fields:
Pagination fields:
Common product response fields:
Product-specific response fields:
Single-product response fields:
Not exposed:
companyId, arbitrary coachId, coverImage, slug,
popularity, ledger/accounting IDs, default billing profile IDs,
availability tags, linked event templates, raw access config, service history,
provider snapshots, image upload state, or any payment-provider credentials.
Product family endpoints
Required scopes:- Reads:
finance_products:read - Creates, updates, and archives:
finance_products:write
Idempotency-Key header.
Typed list query parameters:
Get supports
includeArchived=true. Without it, archived products return not
found.
Product request fields
Product text follows the localized text contract.defaultLanguage is required on create and the first update of a legacy product.
Each supplied text map fully replaces that field; include the default language
in every nonempty map. Product search uses the stored source-language name.
Invoice lines, subscriptions and client-product snapshots retain their text
contracts and are not rewritten by catalog translation updates.
Common create/update fields:
Membership-specific fields:
Credit-pack-specific fields:
Day/week-pass-specific fields:
Single-session products only use the common fields.
Rejected request fields include
companyId, coachId, addedByCoach,
payment, productPrice, priceExcVat, priceVat, vat, coverImage,
slug, storeType, isDeleted, history, ledgerAccountId,
defaultBillingProfileId, productAvailableTags,
productAvailableEventTemplates, accessConfig, createdAt, and updatedAt.
Unknown fields return PUBLIC_API_UNKNOWN_FIELDS.
Create product example
data.product.* fields from the single-product response
contract on this page, plus:
Update product example
defaultLanguage: "en".
For a legacy product, include its source language explicitly on the first update.
Patch requests are partial. An empty patch returns
PUBLIC_API_NO_FIELDS_TO_UPDATE.
Archive product example
isArchived: true in the Public API DTO
and does not remove existing client products, subscriptions, invoices,
payments, or credit history. Empty request bodies are accepted.
Archive response fields:
Product linked clients
finance_products:read
Use the matching path for memberships, day/week passes, or single sessions.
Query parameters:
Response fields:
Not exposed: client email, phone, address, birth date, health data, billing
profile snapshots, payment provider snapshots, benefit snapshots, legal
signatures, agreement document snapshots, provider transaction IDs, SEPA IDs,
idempotency keys, internal notes, email messages, or history arrays.
List assigned client products
finance_products:read
Response fields:
Not exposed: billing snapshots, payment-provider snapshots, legal signatures,
agreement documents, payment transaction IDs, idempotency keys, SEPA IDs,
internal notes, email message bodies, or history arrays.
Get assigned client product
finance_products:read
Response fields:
List subscriptions
finance_subscriptions:read
Query parameters:
Response fields:
Get subscription
finance_subscriptions:read
Response fields:
Request subscription pause
finance_subscription_actions:write
This endpoint creates a membership action request for review. It does not
directly pause billing, change subscription status, allocate credits, or mutate
payment-provider state.
Request body:
Response fields:
Request subscription cancellation
finance_subscription_actions:write
This endpoint creates a membership action request for review. It does not
directly cancel the subscription.
Request body:
Response fields:
Assign membership
finance_memberships:write
Request body:
Response fields:
List all credits
finance_credits:read
This endpoint returns all credit allocations for the authenticated company.
Omit status to include active, expired, and empty credit allocations.
Query parameters:
Response fields:
List client credits
finance_credits:read
Query parameters:
Response fields:
List credit mutations
finance_credits:read
Query parameters: page, limit (max 100), creditId, dateFrom, dateTo
(max 366-day range).
Response fields:
Adjust credits
finance_credits:write
Request body:
Response fields:
Assign product
finance_products:write
Supported product types: StoreModuleCreditPack, StoreModuleDay,
StoreModuleSingle.
Response fields:
Revoke product
finance_products:write
Supported revocations:
Request body:
Response fields: