List webhook endpoints for an admin reader. The signing secret is never returned.
Scope
admin:read
Effect
Read only
MCP tool
list_webhook_endpoints
Retries
Safe to repeat
Parameters
List parameters
Name
In
Type
Notes
limitoptional
query
integer
min 1 · max 50
cursoroptional
query
string
up to 256 chars
Returns
data: WebhookEndpoint[]. Pass meta.cursor back as cursor for the next page.
Example requestSample
curl -X GET "https://api.billingmart.com/v1/admin/webhook-endpoints" \
-H "Authorization: Bearer $BILLINGMART_API_KEY"
webhook deliveries
List
GET/v1/admin/webhook-deliveries
List recent webhook deliveries and their outcomes.
Scope
admin:read
Effect
Read only
MCP tool
list_webhook_deliveries
Retries
Safe to repeat
Parameters
List parameters
Name
In
Type
Notes
limitoptional
query
integer
min 1 · max 50
cursoroptional
query
string
up to 256 chars
endpointIdoptional
query
id
—
Returns
data: WebhookDelivery[]. Pass meta.cursor back as cursor for the next page.
Example requestSample
curl -X GET "https://api.billingmart.com/v1/admin/webhook-deliveries" \
-H "Authorization: Bearer $BILLINGMART_API_KEY"
webhooks
List
GET/v1/webhooks
List webhook endpoints. The signing secret is never returned.
Scope
webhooks:manage
Effect
Writes a draft or record
MCP tool
None — REST and API keys only
Retries
Safe to repeat
Parameters
List parameters
Name
In
Type
Notes
limitoptional
query
integer
min 1 · max 50
cursoroptional
query
string
up to 256 chars
Returns
data: WebhookEndpoint[]. Pass meta.cursor back as cursor for the next page.
Example requestSample
curl -X GET "https://api.billingmart.com/v1/webhooks" \
-H "Authorization: Bearer $BILLINGMART_API_KEY"
webhooks
Create
POST/v1/webhooks
Register an endpoint. https only, SSRF-checked here and again at every delivery. The signing secret is returned ONCE, in this response, and never again. A `job.adjustmentIssued` or `job.adjustmentVoided` event carries the work record (its usual `job.*` body, no new fields); read the record's changes at `GET /v1/jobs/{id}/adjustments`.
Scope
webhooks:manage
Effect
Writes a draft or record
MCP tool
None — REST and API keys only
Retries
Send an Idempotency-Key; a repeat replays the stored answer for 24 hours
Request body
JSON. Money is an integer count of minor units beside its currency; quantities are thousandths.
Create request body
Field
Type
Notes
urlrequired
string
at least 8 chars · up to 2048 chars
eventsrequired
enum[]
Each one of 28 values · up to 32 items · at least 1
Where a tenant wants events delivered. `url` is checked for SSRF at registration AND at every delivery — re-resolved, refusing private, link-local and cloud-metadata ranges — because a DNS answer can change between the two.
WebhookEndpoint fields
Field
Type
Notes
idrequired
Id
—
tenantrequired
TenantRef
—
urlrequired
Url
https only. SSRF-checked at registration and at each delivery.
descriptionoptional
string
Untrusted textA person's note about the endpoint.
eventsrequired
WebhookEvent[]
Which events this endpoint receives. Empty means none — subscribing is explicit.
activerequired
boolean
Switched off by the tenant, or by the server after 50 consecutive failures (recorded in the audit log).
signingSecretrequired
EncryptedCredentialSet
Signs X-BillingMart-Signature: t=<unix>, v1=<hmac_sha256(secret, t + '.' + body)>. Receivers reject a t older than 5 minutes.
previousSigningSecretoptional
EncryptedCredentialSet
Kept for 24 h after rotation; deliveries carry a v1 signature under both.
secretRotatedAtoptional
IsoTimestamp
—
lastDeliveryAtoptional
IsoTimestamp
—
lastDeliveryStatusoptional
WebhookDeliveryStatus
—
consecutiveFailuresoptional
integer
SERVER-WRITTEN. Reset to 0 on a delivered attempt.
createdAtrequired
IsoTimestamp
—
updatedAtoptional
IsoTimestamp
—
createdByoptional
Id
From the verified ID token, or the API key id when registered through the API with webhooks:manage.
Object
WebhookDelivery
One event's delivery to one endpoint: attempts, retries, the dead letter.
WebhookDelivery fields
Field
Type
Notes
idrequired
Id
—
tenantrequired
TenantRef
—
endpointIdrequired
Id
—
eventrequired
WebhookEvent
—
subjectIdrequired
Id
The invoice, estimate, payment, client or agent action the event is about.
payloadHashrequired
string
SHA-256 of the signed body.
attemptrequired
integer
The attempt number of the latest try.
maxAttemptsrequired
integer
8 by default, exponential backoff between them.
statusrequired
WebhookDeliveryStatus
—
responseStatusCodeoptional
integer
—
responseTimeMsoptional
integer
Milliseconds. Deliveries time out at 10 s.
nextAttemptAtoptional
IsoTimestamp
—
deliveredAtoptional
IsoTimestamp
—
deadLetteredAtoptional
IsoTimestamp
—
lastErroroptional
string
Untrusted textMasked before storage, like every other logged string.
createdAtrequired
IsoTimestamp
—
updatedAtoptional
IsoTimestamp
—
Next section
Work setup and job types
How a business sets up its work records: its terminology, the record types it can use, the industry packs it can adopt and the setup questions a pack asks. A record type is saved here as a draft; publishing it is an approved action.
We use Google Analytics on our website by default to understand visits. Choose Decline to turn it off; you can change this at any time on the Cookies page. We never send Google your name, email or account. Cookie policy