Billing
Endpoints for managing saved payment cards and receipts. Every route is a thin proxy to the external License Manager (LM), which is itself the gateway to the QuickBooks/Intuit payment provider. Raw card numbers never touch Informer's servers: the client tokenizes a card directly with Intuit using the parameters from the tokenization-config endpoint, then sends only the resulting token.
All billing routes require permission.billing.manage. That driver checks the
billingManage global permission, which has a Superuser fallback, so a
Superuser on the tenant always satisfies it and a non-Superuser needs the
billingManage global permission. Permission is not the limiting factor for
these endpoints: LM connectivity is.
Every response body on this page comes from a live, online install. The billing
routes forward each call to the License Manager using the tenant's activation
token as a Bearer credential. On an install that cannot reach the LM (for
example, an offline or air-gapped deployment), the read endpoints answer 503
with data.code set to lm_unreachable instead of a success body. Because the
provider is external and the bodies are not deterministic, this area captures no
fixtures.
GET /api/billing/tokenization-config
Return the client-side card tokenization parameters. The client uses these to tokenize a card directly with Intuit so that raw card numbers (PANs) never reach Informer's servers, which keeps Informer out of PCI scope.
Authentication: permission.billing.manage
Response:
The License Manager's tokenization configuration. HAL api rel
inf:billing-tokenization-config. Status 200 on a live online install.
GET /api/billing/cards
List the saved payment cards for the tenant.
Authentication: permission.billing.manage
Response:
The License Manager's saved-card list. HAL api rel inf:billing-cards. Status
200 on a live online install.
POST /api/billing/cards
Save a new payment card. The card is tokenized client-side with Intuit first; this endpoint forwards only the resulting token to the License Manager.
Authentication: permission.billing.manage
Request Body:
| Field | Type | Required | Description |
|---|---|---|---|
token | string | Yes | Token from client-side Intuit tokenization |
The payload is stripUnknown, so any unrecognized fields are dropped.
Example Request:
{ "token": "tok_from_client_side_intuit_tokenization" }
Response:
The status and body mirror what the License Manager returns. On an LM error the
route reboxes the failure into an error whose status code is the LM response
status (or 400 when none is available) and whose message is the LM error text.
GET /api/billing/cards/{id}
Retrieve a single saved card.
Authentication: permission.billing.manage
Path Parameters:
| Parameter | Type | Description |
|---|---|---|
id | string | License Manager card id |
Response:
The License Manager's card record. HAL api rel inf:billing-card. Status 200
on a live online install.
DELETE /api/billing/cards/{id}
Delete a saved card.
Authentication: permission.billing.manage
Path Parameters:
| Parameter | Type | Description |
|---|---|---|
id | string | License Manager card id |
Response:
Whatever the License Manager returns for the delete, forwarded as-is. Following
the Informer DELETE convention, this is 200 with a body, not 204.
GET /api/billing/receipts
List the receipts for the tenant.
Authentication: permission.billing.manage
Response:
The License Manager's receipt list; the status and body mirror what the License
Manager returns. HAL api rel inf:billing-receipts. Status 200 on a live
online install.
GET /api/billing/receipts/{id}
Render a single receipt as a PDF.
Authentication: permission.billing.manage
Path Parameters:
| Parameter | Type | Description |
|---|---|---|
id | string | License Manager receipt id |
Response:
This endpoint does not return JSON. It fetches the receipt from the License
Manager, renders it through the receipt Template, then renders that to a PDF and
responds application/pdf with a Content-Disposition of
inline; filename="informer_receipt_<DocNumber>_<TxnDate>.pdf". HAL api rel
inf:billing-receipt.
Because the response is a binary PDF (and depends on the live License Manager), there is no JSON body to show here. Request it from a live online install to download the rendered receipt.