Skip to content

Actions and approvals

Explore here

Actions and approvals

Anything that sends, moves money or changes the workspace is proposed here and waits for a signed-in person, or for the owner’s capped rule.

actions

List

GET/v1/actions

Prepared actions proposed for this tenant and what happened to them.

Scope
actions:read
Effect
Read only
MCP tool
list_pending_actions
Retries
Safe to repeat

Parameters

List parameters
NameInTypeNotes
limitoptionalqueryintegermin 1 · max 50
cursoroptionalquerystringup to 256 chars
statusoptionalqueryenumOne of pending, approved, executed, rejected, expired, failed, withdrawn

Returns

data: object[]. Pass meta.cursor back as cursor for the next page.

Example requestSample
curl -X GET "https://api.billingmart.com/v1/actions" \
  -H "Authorization: Bearer $BILLINGMART_API_KEY"

actions

Propose

POST/v1/actions

Propose an action a verified person must approve in the console or a native app; nothing is sent or charged here.

Scope
actions:propose
Effect
Proposes an action a person approves
MCP tool
propose_action
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.

Propose request body
FieldTypeNotes
kindrequiredenumOne of 105 values
targetIdrequiredid—
agentNoteoptionalstringup to 1000 chars
paramsoptionalobject—
params.recipientContactKeyoptionalstringup to 128 chars
params.messageoptionalstringup to 2000 chars
params.amountoptionalobject—
params.amount.minorUnitsrequiredinteger—
params.amount.currencyrequiredCurrency—
params.methodoptionalenumOne of cash, check, bankTransfer, other
params.referenceoptionalstringup to 128 chars
params.sendReceiptoptionalboolean—

Returns

data: object

Errors this route can answer besides the shared ones: TOO_MANY_PENDING_ACTIONS, NOT_A_DRAFT, INVALID_TRANSITION.

Example requestSample
curl -X POST "https://api.billingmart.com/v1/actions" \
  -H "Authorization: Bearer $BILLINGMART_API_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"kind":"<kind>","targetId":"<targetId>","params":{"amount":{"minorUnits":0,"currency":"USD"}}}'

actions

Get

GET/v1/actions/{actionId}

One prepared action.

Scope
actions:read
Effect
Read only
MCP tool
get_action
Retries
Safe to repeat

Parameters

Get parameters
NameInTypeNotes
actionIdrequiredpathid—

Returns

data: object

Example requestSample
curl -X GET "https://api.billingmart.com/v1/actions/{actionId}" \
  -H "Authorization: Bearer $BILLINGMART_API_KEY"

actions

Send invoice

POST/v1/actions/sendInvoice

Request sendInvoice: runs at once only under a matching owner rule (auto), else waits for a person (ask); a dry run in plan mode.

Scope
actions:deliver
Effect
Proposes an action a person approves
MCP tool
send_invoice
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.

Send invoice request body
FieldTypeNotes
targetIdrequiredid—
agentNoteoptionalstringup to 1000 chars

Returns

data: object

Errors this route can answer besides the shared ones: TOO_MANY_PENDING_ACTIONS, NOT_A_DRAFT, INVALID_TRANSITION, AGENT_ACTIONS_CAP, AGENT_KILL_SWITCH, PLAN_LIMIT.

Example requestSample
curl -X POST "https://api.billingmart.com/v1/actions/sendInvoice" \
  -H "Authorization: Bearer $BILLINGMART_API_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"targetId":"<targetId>"}'

actions

Send estimate

POST/v1/actions/sendEstimate

Request sendEstimate: runs at once only under a matching owner rule (auto), else waits for a person (ask); a dry run in plan mode.

Scope
actions:deliver
Effect
Proposes an action a person approves
MCP tool
send_estimate
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.

Send estimate request body
FieldTypeNotes
targetIdrequiredid—
agentNoteoptionalstringup to 1000 chars

Returns

data: object

Errors this route can answer besides the shared ones: TOO_MANY_PENDING_ACTIONS, NOT_A_DRAFT, INVALID_TRANSITION, AGENT_ACTIONS_CAP, AGENT_KILL_SWITCH, PLAN_LIMIT.

Example requestSample
curl -X POST "https://api.billingmart.com/v1/actions/sendEstimate" \
  -H "Authorization: Bearer $BILLINGMART_API_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"targetId":"<targetId>"}'

actions

Send reminder

POST/v1/actions/sendReminder

Request sendReminder: runs at once only under a matching owner rule (auto), else waits for a person (ask); a dry run in plan mode.

Scope
actions:deliver
Effect
Proposes an action a person approves
MCP tool
send_reminder
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.

Send reminder request body
FieldTypeNotes
targetIdrequiredid—
agentNoteoptionalstringup to 1000 chars
subjectoptionalstringup to 200 chars · matches ^[^<]*$
bodyoptionalstringup to 1600 chars · matches ^[^<]*$

Returns

data: object

Errors this route can answer besides the shared ones: TOO_MANY_PENDING_ACTIONS, NOT_A_DRAFT, INVALID_TRANSITION, AGENT_ACTIONS_CAP, AGENT_KILL_SWITCH, PLAN_LIMIT.

Example requestSample
curl -X POST "https://api.billingmart.com/v1/actions/sendReminder" \
  -H "Authorization: Bearer $BILLINGMART_API_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"targetId":"<targetId>"}'

actions

Record payment

POST/v1/actions/recordPayment

Request recordPayment: waits for a person to approve it when a connected assistant asks; only the built-in BillingMart Agent, in Auto, may run it under a matching owner rule; a dry run in plan mode.

Scope
actions:money
Effect
Proposes an action a person approves
MCP tool
record_payment
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.

Record payment request body
FieldTypeNotes
targetIdrequiredid—
agentNoteoptionalstringup to 1000 chars
amountrequiredobject—
amount.minorUnitsrequiredinteger—
amount.currencyrequiredCurrency—
methodrequiredenumOne of cash, check, bankTransfer, other
referenceoptionalstringup to 128 chars
receivedOnoptionalstringmatches ^\d{4}-\d{2}-\d{2}$
sendReceiptoptionalboolean—

Returns

data: object

Errors this route can answer besides the shared ones: TOO_MANY_PENDING_ACTIONS, NOT_A_DRAFT, INVALID_TRANSITION, AGENT_ACTIONS_CAP, AGENT_KILL_SWITCH, PLAN_LIMIT.

Example requestSample
curl -X POST "https://api.billingmart.com/v1/actions/recordPayment" \
  -H "Authorization: Bearer $BILLINGMART_API_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"targetId":"<targetId>","amount":{"minorUnits":0,"currency":"USD"},"method":"cash"}'

actions

Receive payment

POST/v1/actions/receivePayment

Request receivePayment: waits for a person to approve it when a connected assistant asks; only the built-in BillingMart Agent, in Auto, may run it under a matching owner rule; a dry run in plan mode.

Scope
actions:money
Effect
Proposes an action a person approves
MCP tool
receive_payment
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.

Receive payment request body
FieldTypeNotes
targetIdrequiredid—
agentNoteoptionalstringup to 1000 chars
amountrequiredobject—
amount.minorUnitsrequiredinteger—
amount.currencyrequiredCurrency—
methodrequiredenumOne of cash, check, bankTransfer, other
referenceoptionalstringup to 128 chars
receivedOnoptionalstringmatches ^\d{4}-\d{2}-\d{2}$
allocations[]optionalobject[]up to 100 items · at least 1
allocations[].invoiceIdrequiredid—
allocations[].amountrequiredobject—
allocations[].amount.minorUnitsrequiredinteger—
allocations[].amount.currencyrequiredCurrency—
sendReceiptoptionalboolean—

Returns

data: object

Errors this route can answer besides the shared ones: TOO_MANY_PENDING_ACTIONS, NOT_A_DRAFT, INVALID_TRANSITION, AGENT_ACTIONS_CAP, AGENT_KILL_SWITCH, PLAN_LIMIT.

Example requestSample
curl -X POST "https://api.billingmart.com/v1/actions/receivePayment" \
  -H "Authorization: Bearer $BILLINGMART_API_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"targetId":"<targetId>","amount":{"minorUnits":0,"currency":"USD"},"method":"cash"}'

actions

Charge saved method

POST/v1/actions/chargeSavedMethod

Request chargeSavedMethod: waits for a person to approve it when a connected assistant asks; only the built-in BillingMart Agent, in Auto, may run it under a matching owner rule; a dry run in plan mode.

Scope
actions:money
Effect
Proposes an action a person approves
MCP tool
charge_saved_method
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.

Charge saved method request body
FieldTypeNotes
targetIdrequiredid—
agentNoteoptionalstringup to 1000 chars

Returns

data: object

Errors this route can answer besides the shared ones: TOO_MANY_PENDING_ACTIONS, NOT_A_DRAFT, INVALID_TRANSITION, AGENT_ACTIONS_CAP, AGENT_KILL_SWITCH, PLAN_LIMIT.

Example requestSample
curl -X POST "https://api.billingmart.com/v1/actions/chargeSavedMethod" \
  -H "Authorization: Bearer $BILLINGMART_API_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"targetId":"<targetId>"}'

actions

Issue refund

POST/v1/actions/issueRefund

Request issueRefund: waits for a person to approve it when a connected assistant asks; only the built-in BillingMart Agent, in Auto, may run it under a matching owner rule; a dry run in plan mode.

Scope
actions:money
Effect
Proposes an action a person approves
MCP tool
refund_payment
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.

Issue refund request body
FieldTypeNotes
targetIdrequiredid—
agentNoteoptionalstringup to 1000 chars
amountoptionalobject—
amount.minorUnitsrequiredinteger—
amount.currencyrequiredCurrency—
reasonoptionalstringup to 500 chars

Returns

data: object

Errors this route can answer besides the shared ones: TOO_MANY_PENDING_ACTIONS, NOT_A_DRAFT, INVALID_TRANSITION, AGENT_ACTIONS_CAP, AGENT_KILL_SWITCH, PLAN_LIMIT.

Example requestSample
curl -X POST "https://api.billingmart.com/v1/actions/issueRefund" \
  -H "Authorization: Bearer $BILLINGMART_API_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"targetId":"<targetId>","amount":{"minorUnits":0,"currency":"USD"}}'

actions

Publish template

POST/v1/actions/publishTemplate

Request publishTemplate: waits for a person to approve it when a connected assistant asks; only the built-in BillingMart Agent, in Auto, may run it under a matching owner rule; a dry run in plan mode.

Scope
actions:records
Effect
Proposes an action a person approves
MCP tool
publish_template
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.

Publish template request body
FieldTypeNotes
targetIdrequiredid—
agentNoteoptionalstringup to 1000 chars

Returns

data: object

Errors this route can answer besides the shared ones: TOO_MANY_PENDING_ACTIONS, NOT_A_DRAFT, INVALID_TRANSITION, AGENT_ACTIONS_CAP, AGENT_KILL_SWITCH, PLAN_LIMIT.

Example requestSample
curl -X POST "https://api.billingmart.com/v1/actions/publishTemplate" \
  -H "Authorization: Bearer $BILLINGMART_API_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"targetId":"<targetId>"}'

actions

Resend receipt

POST/v1/actions/resendReceipt

Request resendReceipt: waits for a person to approve it when a connected assistant asks; only the built-in BillingMart Agent, in Auto, may run it under a matching owner rule; a dry run in plan mode.

Scope
actions:deliver
Effect
Proposes an action a person approves
MCP tool
resend_receipt
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.

Resend receipt request body
FieldTypeNotes
targetIdrequiredid—
agentNoteoptionalstringup to 1000 chars

Returns

data: object

Errors this route can answer besides the shared ones: TOO_MANY_PENDING_ACTIONS, NOT_A_DRAFT, INVALID_TRANSITION, AGENT_ACTIONS_CAP, AGENT_KILL_SWITCH, PLAN_LIMIT.

Example requestSample
curl -X POST "https://api.billingmart.com/v1/actions/resendReceipt" \
  -H "Authorization: Bearer $BILLINGMART_API_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"targetId":"<targetId>"}'

actions

Resend invoice email

POST/v1/actions/resendInvoiceEmail

Request resendInvoiceEmail: waits for a person to approve it when a connected assistant asks; only the built-in BillingMart Agent, in Auto, may run it under a matching owner rule; a dry run in plan mode.

Scope
actions:deliver
Effect
Proposes an action a person approves
MCP tool
resend_invoice_email
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.

Resend invoice email request body
FieldTypeNotes
targetIdrequiredid—
agentNoteoptionalstringup to 1000 chars

Returns

data: object

Errors this route can answer besides the shared ones: TOO_MANY_PENDING_ACTIONS, NOT_A_DRAFT, INVALID_TRANSITION, AGENT_ACTIONS_CAP, AGENT_KILL_SWITCH, PLAN_LIMIT.

Example requestSample
curl -X POST "https://api.billingmart.com/v1/actions/resendInvoiceEmail" \
  -H "Authorization: Bearer $BILLINGMART_API_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"targetId":"<targetId>"}'

actions

Resend estimate

POST/v1/actions/resendEstimate

Request resendEstimate: waits for a person to approve it when a connected assistant asks; only the built-in BillingMart Agent, in Auto, may run it under a matching owner rule; a dry run in plan mode.

Scope
actions:deliver
Effect
Proposes an action a person approves
MCP tool
resend_estimate
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.

Resend estimate request body
FieldTypeNotes
targetIdrequiredid—
agentNoteoptionalstringup to 1000 chars

Returns

data: object

Errors this route can answer besides the shared ones: TOO_MANY_PENDING_ACTIONS, NOT_A_DRAFT, INVALID_TRANSITION, AGENT_ACTIONS_CAP, AGENT_KILL_SWITCH, PLAN_LIMIT.

Example requestSample
curl -X POST "https://api.billingmart.com/v1/actions/resendEstimate" \
  -H "Authorization: Bearer $BILLINGMART_API_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"targetId":"<targetId>"}'

actions

Attach bill document

POST/v1/actions/attachBillDocument

Request attachBillDocument: always waits for a person to approve it, whatever the mode; a dry run in plan mode.

Scope
actions:records
Effect
Proposes an action a person approves
MCP tool
attach_bill_document
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.

Attach bill document request body
FieldTypeNotes
targetIdrequiredid—
agentNoteoptionalstringup to 1000 chars

Returns

data: object

Errors this route can answer besides the shared ones: TOO_MANY_PENDING_ACTIONS, NOT_A_DRAFT, INVALID_TRANSITION, AGENT_ACTIONS_CAP, AGENT_KILL_SWITCH, PLAN_LIMIT.

Example requestSample
curl -X POST "https://api.billingmart.com/v1/actions/attachBillDocument" \
  -H "Authorization: Bearer $BILLINGMART_API_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"targetId":"<targetId>"}'

actions

Attach expense receipt

POST/v1/actions/attachExpenseReceipt

Request attachExpenseReceipt: always waits for a person to approve it, whatever the mode; a dry run in plan mode.

Scope
actions:records
Effect
Proposes an action a person approves
MCP tool
attach_expense_receipt
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.

Attach expense receipt request body
FieldTypeNotes
targetIdrequiredid—
agentNoteoptionalstringup to 1000 chars

Returns

data: object

Errors this route can answer besides the shared ones: TOO_MANY_PENDING_ACTIONS, NOT_A_DRAFT, INVALID_TRANSITION, AGENT_ACTIONS_CAP, AGENT_KILL_SWITCH, PLAN_LIMIT.

Example requestSample
curl -X POST "https://api.billingmart.com/v1/actions/attachExpenseReceipt" \
  -H "Authorization: Bearer $BILLINGMART_API_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"targetId":"<targetId>"}'

actions

Add client contact

POST/v1/actions/addClientContact

Request addClientContact: always waits for a person to approve it, whatever the mode; a dry run in plan mode.

Scope
actions:records
Effect
Proposes an action a person approves
MCP tool
request_client_contact
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.

Add client contact request body
FieldTypeNotes
targetIdrequiredid—
agentNoteoptionalstringup to 1000 chars
contactKindrequiredenumOne of email, phone
labeloptionalstringup to 60 chars

Returns

data: object

Errors this route can answer besides the shared ones: TOO_MANY_PENDING_ACTIONS, NOT_A_DRAFT, INVALID_TRANSITION, AGENT_ACTIONS_CAP, AGENT_KILL_SWITCH, PLAN_LIMIT.

Example requestSample
curl -X POST "https://api.billingmart.com/v1/actions/addClientContact" \
  -H "Authorization: Bearer $BILLINGMART_API_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"targetId":"<targetId>","contactKind":"email"}'

actions

Set vendor contact

POST/v1/actions/setVendorContact

Request setVendorContact: always waits for a person to approve it, whatever the mode; a dry run in plan mode.

Scope
actions:records
Effect
Proposes an action a person approves
MCP tool
request_vendor_contact
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.

Set vendor contact request body
FieldTypeNotes
targetIdrequiredid—
agentNoteoptionalstringup to 1000 chars
contactKindrequiredenumOne of email, phone

Returns

data: object

Errors this route can answer besides the shared ones: TOO_MANY_PENDING_ACTIONS, NOT_A_DRAFT, INVALID_TRANSITION, AGENT_ACTIONS_CAP, AGENT_KILL_SWITCH, PLAN_LIMIT.

Example requestSample
curl -X POST "https://api.billingmart.com/v1/actions/setVendorContact" \
  -H "Authorization: Bearer $BILLINGMART_API_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"targetId":"<targetId>","contactKind":"email"}'

actions

Issue credit note

POST/v1/actions/issueCreditNote

Request issueCreditNote: waits for a person to approve it when a connected assistant asks; only the built-in BillingMart Agent, in Auto, may run it under a matching owner rule; a dry run in plan mode.

Scope
actions:money
Effect
Proposes an action a person approves
MCP tool
issue_credit_note
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.

Issue credit note request body
FieldTypeNotes
targetIdrequiredid—
agentNoteoptionalstringup to 1000 chars
amountrequiredobject—
amount.minorUnitsrequiredinteger—
amount.currencyrequiredCurrency—
reasonrequiredstringup to 500 chars

Returns

data: object

Errors this route can answer besides the shared ones: TOO_MANY_PENDING_ACTIONS, NOT_A_DRAFT, INVALID_TRANSITION, AGENT_ACTIONS_CAP, AGENT_KILL_SWITCH, PLAN_LIMIT.

Example requestSample
curl -X POST "https://api.billingmart.com/v1/actions/issueCreditNote" \
  -H "Authorization: Bearer $BILLINGMART_API_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"targetId":"<targetId>","amount":{"minorUnits":0,"currency":"USD"},"reason":"<reason>"}'

actions

Write off

POST/v1/actions/writeOff

Request writeOff: waits for a person to approve it when a connected assistant asks; only the built-in BillingMart Agent, in Auto, may run it under a matching owner rule; a dry run in plan mode.

Scope
actions:money
Effect
Proposes an action a person approves
MCP tool
write_off_invoice
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.

Write off request body
FieldTypeNotes
targetIdrequiredid—
agentNoteoptionalstringup to 1000 chars
reasonrequiredstringup to 500 chars

Returns

data: object

Errors this route can answer besides the shared ones: TOO_MANY_PENDING_ACTIONS, NOT_A_DRAFT, INVALID_TRANSITION, AGENT_ACTIONS_CAP, AGENT_KILL_SWITCH, PLAN_LIMIT.

Example requestSample
curl -X POST "https://api.billingmart.com/v1/actions/writeOff" \
  -H "Authorization: Bearer $BILLINGMART_API_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"targetId":"<targetId>","reason":"<reason>"}'

actions

Void invoice

POST/v1/actions/voidInvoice

Request voidInvoice: waits for a person to approve it when a connected assistant asks; only the built-in BillingMart Agent, in Auto, may run it under a matching owner rule; a dry run in plan mode.

Scope
actions:records
Effect
Proposes an action a person approves
MCP tool
void_invoice
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.

Void invoice request body
FieldTypeNotes
targetIdrequiredid—
agentNoteoptionalstringup to 1000 chars
reasonrequiredstringup to 500 chars

Returns

data: object

Errors this route can answer besides the shared ones: TOO_MANY_PENDING_ACTIONS, NOT_A_DRAFT, INVALID_TRANSITION, AGENT_ACTIONS_CAP, AGENT_KILL_SWITCH, PLAN_LIMIT.

Example requestSample
curl -X POST "https://api.billingmart.com/v1/actions/voidInvoice" \
  -H "Authorization: Bearer $BILLINGMART_API_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"targetId":"<targetId>","reason":"<reason>"}'

actions

Reopen void invoice

POST/v1/actions/reopenVoidInvoice

Request reopenVoidInvoice: waits for a person to approve it when a connected assistant asks; only the built-in BillingMart Agent, in Auto, may run it under a matching owner rule; a dry run in plan mode.

Scope
actions:records
Effect
Proposes an action a person approves
MCP tool
reopen_void_invoice
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.

Reopen void invoice request body
FieldTypeNotes
targetIdrequiredid—
agentNoteoptionalstringup to 1000 chars

Returns

data: object

Errors this route can answer besides the shared ones: TOO_MANY_PENDING_ACTIONS, NOT_A_DRAFT, INVALID_TRANSITION, AGENT_ACTIONS_CAP, AGENT_KILL_SWITCH, PLAN_LIMIT.

Example requestSample
curl -X POST "https://api.billingmart.com/v1/actions/reopenVoidInvoice" \
  -H "Authorization: Bearer $BILLINGMART_API_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"targetId":"<targetId>"}'

actions

Void payment

POST/v1/actions/voidPayment

Request voidPayment: waits for a person to approve it when a connected assistant asks; only the built-in BillingMart Agent, in Auto, may run it under a matching owner rule; a dry run in plan mode.

Scope
actions:money
Effect
Proposes an action a person approves
MCP tool
void_payment
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.

Void payment request body
FieldTypeNotes
targetIdrequiredid—
agentNoteoptionalstringup to 1000 chars
reasonrequiredstringup to 500 chars

Returns

data: object

Errors this route can answer besides the shared ones: TOO_MANY_PENDING_ACTIONS, NOT_A_DRAFT, INVALID_TRANSITION, AGENT_ACTIONS_CAP, AGENT_KILL_SWITCH, PLAN_LIMIT.

Example requestSample
curl -X POST "https://api.billingmart.com/v1/actions/voidPayment" \
  -H "Authorization: Bearer $BILLINGMART_API_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"targetId":"<targetId>","reason":"<reason>"}'

actions

Resolve unconfirmed payment

POST/v1/actions/resolveUnconfirmedPayment

Request resolveUnconfirmedPayment: always waits for a person to approve it, whatever the mode; a dry run in plan mode.

Scope
actions:money
Effect
Proposes an action a person approves
MCP tool
resolve_unconfirmed_payment
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.

Resolve unconfirmed payment request body
FieldTypeNotes
targetIdrequiredid—
agentNoteoptionalstringup to 1000 chars
outcomerequiredenumOne of charged, notCharged, reversed, notReversed
gatewayTransactionIdoptionalstringmatches ^[A-Za-z0-9-]{1,64}$
noteoptionalstringup to 500 chars

Returns

data: object

Errors this route can answer besides the shared ones: TOO_MANY_PENDING_ACTIONS, NOT_A_DRAFT, INVALID_TRANSITION, AGENT_ACTIONS_CAP, AGENT_KILL_SWITCH, PLAN_LIMIT.

Example requestSample
curl -X POST "https://api.billingmart.com/v1/actions/resolveUnconfirmedPayment" \
  -H "Authorization: Bearer $BILLINGMART_API_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"targetId":"<targetId>","outcome":"charged"}'

actions

Record dispute

POST/v1/actions/recordDispute

Request recordDispute: always waits for a person to approve it, whatever the mode; a dry run in plan mode.

Scope
actions:money
Effect
Proposes an action a person approves
MCP tool
record_dispute
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.

Record dispute request body
FieldTypeNotes
targetIdrequiredid—
agentNoteoptionalstringup to 1000 chars
reasonrequiredstringup to 500 chars
referenceoptionalstringmatches ^[A-Za-z0-9._-]{1,64}$
dueByoptionalstringmatches ^\d{4}-\d{2}-\d{2}$

Returns

data: object

Errors this route can answer besides the shared ones: TOO_MANY_PENDING_ACTIONS, NOT_A_DRAFT, INVALID_TRANSITION, AGENT_ACTIONS_CAP, AGENT_KILL_SWITCH, PLAN_LIMIT.

Example requestSample
curl -X POST "https://api.billingmart.com/v1/actions/recordDispute" \
  -H "Authorization: Bearer $BILLINGMART_API_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"targetId":"<targetId>","reason":"<reason>"}'

actions

Resolve dispute

POST/v1/actions/resolveDispute

Request resolveDispute: always waits for a person to approve it, whatever the mode; a dry run in plan mode.

Scope
actions:money
Effect
Proposes an action a person approves
MCP tool
resolve_dispute
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.

Resolve dispute request body
FieldTypeNotes
targetIdrequiredid—
agentNoteoptionalstringup to 1000 chars
disputeOutcomerequiredenumOne of won, lost
noteoptionalstringup to 500 chars

Returns

data: object

Errors this route can answer besides the shared ones: TOO_MANY_PENDING_ACTIONS, NOT_A_DRAFT, INVALID_TRANSITION, AGENT_ACTIONS_CAP, AGENT_KILL_SWITCH, PLAN_LIMIT.

Example requestSample
curl -X POST "https://api.billingmart.com/v1/actions/resolveDispute" \
  -H "Authorization: Bearer $BILLINGMART_API_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"targetId":"<targetId>","disputeOutcome":"won"}'

actions

Mark payment returned

POST/v1/actions/markPaymentReturned

Request markPaymentReturned: always waits for a person to approve it, whatever the mode; a dry run in plan mode.

Scope
actions:money
Effect
Proposes an action a person approves
MCP tool
mark_payment_returned
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.

Mark payment returned request body
FieldTypeNotes
targetIdrequiredid—
agentNoteoptionalstringup to 1000 chars
reasonrequiredstringup to 500 chars
returnCodeoptionalstringup to 16 chars
returnedOnoptionalstringmatches ^\d{4}-\d{2}-\d{2}$

Returns

data: object

Errors this route can answer besides the shared ones: TOO_MANY_PENDING_ACTIONS, NOT_A_DRAFT, INVALID_TRANSITION, AGENT_ACTIONS_CAP, AGENT_KILL_SWITCH, PLAN_LIMIT.

Example requestSample
curl -X POST "https://api.billingmart.com/v1/actions/markPaymentReturned" \
  -H "Authorization: Bearer $BILLINGMART_API_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"targetId":"<targetId>","reason":"<reason>"}'

actions

Settle payment

POST/v1/actions/settlePayment

Request settlePayment: waits for a person to approve it when a connected assistant asks; only the built-in BillingMart Agent, in Auto, may run it under a matching owner rule; a dry run in plan mode.

Scope
actions:money
Effect
Proposes an action a person approves
MCP tool
settle_payment
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.

Settle payment request body
FieldTypeNotes
targetIdrequiredid—
agentNoteoptionalstringup to 1000 chars
amountoptionalobject—
amount.minorUnitsrequiredinteger—
amount.currencyrequiredCurrency—

Returns

data: object

Errors this route can answer besides the shared ones: TOO_MANY_PENDING_ACTIONS, NOT_A_DRAFT, INVALID_TRANSITION, AGENT_ACTIONS_CAP, AGENT_KILL_SWITCH, PLAN_LIMIT.

Example requestSample
curl -X POST "https://api.billingmart.com/v1/actions/settlePayment" \
  -H "Authorization: Bearer $BILLINGMART_API_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"targetId":"<targetId>","amount":{"minorUnits":0,"currency":"USD"}}'

actions

Record bill payment

POST/v1/actions/recordBillPayment

Request recordBillPayment: waits for a person to approve it when a connected assistant asks; only the built-in BillingMart Agent, in Auto, may run it under a matching owner rule; a dry run in plan mode.

Scope
actions:money
Effect
Proposes an action a person approves
MCP tool
record_bill_payment
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.

Record bill payment request body
FieldTypeNotes
targetIdrequiredid—
agentNoteoptionalstringup to 1000 chars
amountrequiredobject—
amount.minorUnitsrequiredinteger—
amount.currencyrequiredCurrency—
methodrequiredenumOne of cash, check, bankTransfer, card, other
referencerequiredstringup to 128 chars
paidOnoptionalstringmatches ^\d{4}-\d{2}-\d{2}$

Returns

data: object

Errors this route can answer besides the shared ones: TOO_MANY_PENDING_ACTIONS, NOT_A_DRAFT, INVALID_TRANSITION, AGENT_ACTIONS_CAP, AGENT_KILL_SWITCH, PLAN_LIMIT.

Example requestSample
curl -X POST "https://api.billingmart.com/v1/actions/recordBillPayment" \
  -H "Authorization: Bearer $BILLINGMART_API_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"targetId":"<targetId>","amount":{"minorUnits":0,"currency":"USD"},"method":"cash","reference":"<reference>"}'

actions

Void bill

POST/v1/actions/voidBill

Request voidBill: waits for a person to approve it when a connected assistant asks; only the built-in BillingMart Agent, in Auto, may run it under a matching owner rule; a dry run in plan mode.

Scope
actions:records
Effect
Proposes an action a person approves
MCP tool
void_bill
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.

Void bill request body
FieldTypeNotes
targetIdrequiredid—
agentNoteoptionalstringup to 1000 chars
reasonrequiredstringup to 500 chars

Returns

data: object

Errors this route can answer besides the shared ones: TOO_MANY_PENDING_ACTIONS, NOT_A_DRAFT, INVALID_TRANSITION, AGENT_ACTIONS_CAP, AGENT_KILL_SWITCH, PLAN_LIMIT.

Example requestSample
curl -X POST "https://api.billingmart.com/v1/actions/voidBill" \
  -H "Authorization: Bearer $BILLINGMART_API_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"targetId":"<targetId>","reason":"<reason>"}'

actions

Void bill payment

POST/v1/actions/voidBillPayment

Request voidBillPayment: waits for a person to approve it when a connected assistant asks; only the built-in BillingMart Agent, in Auto, may run it under a matching owner rule; a dry run in plan mode.

Scope
actions:records
Effect
Proposes an action a person approves
MCP tool
void_bill_payment
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.

Void bill payment request body
FieldTypeNotes
targetIdrequiredid—
agentNoteoptionalstringup to 1000 chars
entryIdrequiredid—
reasonrequiredstringup to 500 chars

Returns

data: object

Errors this route can answer besides the shared ones: TOO_MANY_PENDING_ACTIONS, NOT_A_DRAFT, INVALID_TRANSITION, AGENT_ACTIONS_CAP, AGENT_KILL_SWITCH, PLAN_LIMIT.

Example requestSample
curl -X POST "https://api.billingmart.com/v1/actions/voidBillPayment" \
  -H "Authorization: Bearer $BILLINGMART_API_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"targetId":"<targetId>","entryId":"<entryId>","reason":"<reason>"}'

actions

Open bill

POST/v1/actions/openBill

Request openBill: runs at once only under a matching owner rule (auto), else waits for a person (ask); a dry run in plan mode.

Scope
actions:records
Effect
Proposes an action a person approves
MCP tool
open_bill
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.

Open bill request body
FieldTypeNotes
targetIdrequiredid—
agentNoteoptionalstringup to 1000 chars

Returns

data: object

Errors this route can answer besides the shared ones: TOO_MANY_PENDING_ACTIONS, NOT_A_DRAFT, INVALID_TRANSITION, AGENT_ACTIONS_CAP, AGENT_KILL_SWITCH, PLAN_LIMIT.

Example requestSample
curl -X POST "https://api.billingmart.com/v1/actions/openBill" \
  -H "Authorization: Bearer $BILLINGMART_API_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"targetId":"<targetId>"}'

actions

Create recurring

POST/v1/actions/createRecurring

Request createRecurring: waits for a person to approve it when a connected assistant asks; only the built-in BillingMart Agent, in Auto, may run it under a matching owner rule; a dry run in plan mode.

Scope
actions:deliver
Effect
Proposes an action a person approves
MCP tool
create_recurring
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 recurring request body
FieldTypeNotes
targetIdrequiredid—
agentNoteoptionalstringup to 1000 chars
businessIdrequiredid—
titleoptionalstringup to 200 chars
frequencyrequiredenumOne of weekly, biweekly, monthly, quarterly, semiannually, annually
startDaterequiredstringmatches ^\d{4}-\d{2}-\d{2}$
endDateoptionalstringmatches ^\d{4}-\d{2}-\d{2}$
occurrenceLimitoptionalintegermin 1 · max 600
netDaysoptionalintegermin 0 · max 365
currencyoptionalCurrency—
languageoptionalstringup to 8 chars
lineItems[]requiredobject[]up to 200 items · at least 1
lineItems[].idoptionalid—
lineItems[].descriptionoptionalstringWhat the line is for. Optional with a presetKey (the item’s name is used). — up to 2000 chars
lineItems[].quantityMillioptionalintegerQuantity in thousandths: 1000 is one unit, 1500 is 1.5 hours. Defaults to 1000.
lineItems[].rateBasisoptionalenumHow the price applies: fixed for one flat charge, hourly, daily, perUnit, percentage… Optional with a presetKey. — One of fixed, hourly, daily, weekly, monthly, perUnit, perMile, perKilometre, percentage
lineItems[].unitPriceoptionalobjectPrice per unit in integer minor units of the document currency ($5,000.00 is 500000).
lineItems[].unitPrice.minorUnitsrequiredinteger—
lineItems[].unitPrice.currencyrequiredCurrency—
lineItems[].rateBasisPointsoptionalinteger—
lineItems[].taxTreatmentoptionalstring—
lineItems[].taxRateBasisPointsoptionalinteger—
lineItems[].discountBasisPointsoptionalinteger—
lineItems[].presetKeyoptionalstringThe key of one of the business’s products and services (get_business_context lists them); the server fills what the line leaves out. — up to 64 chars
missedoptionalenumOne of skip, issue

Returns

data: object

Errors this route can answer besides the shared ones: TOO_MANY_PENDING_ACTIONS, NOT_A_DRAFT, INVALID_TRANSITION, AGENT_ACTIONS_CAP, AGENT_KILL_SWITCH, PLAN_LIMIT.

Example requestSample
curl -X POST "https://api.billingmart.com/v1/actions/createRecurring" \
  -H "Authorization: Bearer $BILLINGMART_API_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"targetId":"<targetId>","businessId":"<businessId>","frequency":"weekly","startDate":"<startDate>"}'

actions

Update recurring

POST/v1/actions/updateRecurring

Request updateRecurring: waits for a person to approve it when a connected assistant asks; only the built-in BillingMart Agent, in Auto, may run it under a matching owner rule; a dry run in plan mode.

Scope
actions:money
Effect
Proposes an action a person approves
MCP tool
update_recurring_schedule
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.

Update recurring request body
FieldTypeNotes
targetIdrequiredid—
agentNoteoptionalstringup to 1000 chars
titleoptionalstringup to 200 chars
lineItems[]optionalobject[]up to 200 items · at least 1
lineItems[].idoptionalid—
lineItems[].descriptionoptionalstringWhat the line is for. Optional with a presetKey (the item’s name is used). — up to 2000 chars
lineItems[].quantityMillioptionalintegerQuantity in thousandths: 1000 is one unit, 1500 is 1.5 hours. Defaults to 1000.
lineItems[].rateBasisoptionalenumHow the price applies: fixed for one flat charge, hourly, daily, perUnit, percentage… Optional with a presetKey. — One of fixed, hourly, daily, weekly, monthly, perUnit, perMile, perKilometre, percentage
lineItems[].unitPriceoptionalobjectPrice per unit in integer minor units of the document currency ($5,000.00 is 500000).
lineItems[].unitPrice.minorUnitsrequiredinteger—
lineItems[].unitPrice.currencyrequiredCurrency—
lineItems[].rateBasisPointsoptionalinteger—
lineItems[].taxTreatmentoptionalstring—
lineItems[].taxRateBasisPointsoptionalinteger—
lineItems[].discountBasisPointsoptionalinteger—
lineItems[].presetKeyoptionalstringThe key of one of the business’s products and services (get_business_context lists them); the server fills what the line leaves out. — up to 64 chars
netDaysoptionalintegermin 0 · max 365
endDateoptionalstringmatches ^\d{4}-\d{2}-\d{2}$
occurrenceLimitoptionalintegermin 1 · max 600

Returns

data: object

Errors this route can answer besides the shared ones: TOO_MANY_PENDING_ACTIONS, NOT_A_DRAFT, INVALID_TRANSITION, AGENT_ACTIONS_CAP, AGENT_KILL_SWITCH, PLAN_LIMIT.

Example requestSample
curl -X POST "https://api.billingmart.com/v1/actions/updateRecurring" \
  -H "Authorization: Bearer $BILLINGMART_API_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"targetId":"<targetId>"}'

actions

Resume recurring

POST/v1/actions/resumeRecurring

Request resumeRecurring: waits for a person to approve it when a connected assistant asks; only the built-in BillingMart Agent, in Auto, may run it under a matching owner rule; a dry run in plan mode.

Scope
actions:deliver
Effect
Proposes an action a person approves
MCP tool
resume_recurring
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.

Resume recurring request body
FieldTypeNotes
targetIdrequiredid—
agentNoteoptionalstringup to 1000 chars
missedoptionalenumOne of skip, issue

Returns

data: object

Errors this route can answer besides the shared ones: TOO_MANY_PENDING_ACTIONS, NOT_A_DRAFT, INVALID_TRANSITION, AGENT_ACTIONS_CAP, AGENT_KILL_SWITCH, PLAN_LIMIT.

Example requestSample
curl -X POST "https://api.billingmart.com/v1/actions/resumeRecurring" \
  -H "Authorization: Bearer $BILLINGMART_API_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"targetId":"<targetId>"}'

actions

Set autopay

POST/v1/actions/setAutopay

Request setAutopay: waits for a person to approve it when a connected assistant asks; only the built-in BillingMart Agent, in Auto, may run it under a matching owner rule; a dry run in plan mode.

Scope
actions:money
Effect
Proposes an action a person approves
MCP tool
set_autopay
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.

Set autopay request body
FieldTypeNotes
targetIdrequiredid—
agentNoteoptionalstringup to 1000 chars
enabledrequiredconstantAlways false

Returns

data: object

Errors this route can answer besides the shared ones: TOO_MANY_PENDING_ACTIONS, NOT_A_DRAFT, INVALID_TRANSITION, AGENT_ACTIONS_CAP, AGENT_KILL_SWITCH, PLAN_LIMIT.

Example requestSample
curl -X POST "https://api.billingmart.com/v1/actions/setAutopay" \
  -H "Authorization: Bearer $BILLINGMART_API_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"targetId":"<targetId>","enabled":"<enabled>"}'

actions

Merge clients

POST/v1/actions/mergeClients

Request mergeClients: waits for a person to approve it when a connected assistant asks; only the built-in BillingMart Agent, in Auto, may run it under a matching owner rule; a dry run in plan mode.

Scope
actions:records
Effect
Proposes an action a person approves
MCP tool
merge_clients
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.

Merge clients request body
FieldTypeNotes
targetIdrequiredid—
agentNoteoptionalstringup to 1000 chars
keepIdrequiredid—

Returns

data: object

Errors this route can answer besides the shared ones: TOO_MANY_PENDING_ACTIONS, NOT_A_DRAFT, INVALID_TRANSITION, AGENT_ACTIONS_CAP, AGENT_KILL_SWITCH, PLAN_LIMIT.

Example requestSample
curl -X POST "https://api.billingmart.com/v1/actions/mergeClients" \
  -H "Authorization: Bearer $BILLINGMART_API_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"targetId":"<targetId>","keepId":"<keepId>"}'

actions

Rebill unbilled

POST/v1/actions/rebillUnbilled

Request rebillUnbilled: runs at once only under a matching owner rule (auto), else waits for a person (ask); a dry run in plan mode.

Scope
actions:records
Effect
Proposes an action a person approves
MCP tool
rebill_unbilled
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.

Rebill unbilled request body
FieldTypeNotes
targetIdrequiredid—
agentNoteoptionalstringup to 1000 chars
businessIdrequiredid—
kindsoptionalenum[]Each one of timeEntry, expense, mileage · up to 3 items · at least 1
throughoptionalstringmatches ^\d{4}-\d{2}-\d{2}$
invoiceIdoptionalid—

Returns

data: object

Errors this route can answer besides the shared ones: TOO_MANY_PENDING_ACTIONS, NOT_A_DRAFT, INVALID_TRANSITION, AGENT_ACTIONS_CAP, AGENT_KILL_SWITCH, PLAN_LIMIT.

Example requestSample
curl -X POST "https://api.billingmart.com/v1/actions/rebillUnbilled" \
  -H "Authorization: Bearer $BILLINGMART_API_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"targetId":"<targetId>","businessId":"<businessId>"}'

actions

Delete time entry

POST/v1/actions/deleteTimeEntry

Request deleteTimeEntry: runs at once only under a matching owner rule (auto), else waits for a person (ask); a dry run in plan mode.

Scope
actions:records
Effect
Proposes an action a person approves
MCP tool
delete_time_entry
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.

Delete time entry request body
FieldTypeNotes
targetIdrequiredid—
agentNoteoptionalstringup to 1000 chars

Returns

data: object

Errors this route can answer besides the shared ones: TOO_MANY_PENDING_ACTIONS, NOT_A_DRAFT, INVALID_TRANSITION, AGENT_ACTIONS_CAP, AGENT_KILL_SWITCH, PLAN_LIMIT.

Example requestSample
curl -X POST "https://api.billingmart.com/v1/actions/deleteTimeEntry" \
  -H "Authorization: Bearer $BILLINGMART_API_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"targetId":"<targetId>"}'

actions

Delete expense

POST/v1/actions/deleteExpense

Request deleteExpense: runs at once only under a matching owner rule (auto), else waits for a person (ask); a dry run in plan mode.

Scope
actions:records
Effect
Proposes an action a person approves
MCP tool
delete_expense
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.

Delete expense request body
FieldTypeNotes
targetIdrequiredid—
agentNoteoptionalstringup to 1000 chars

Returns

data: object

Errors this route can answer besides the shared ones: TOO_MANY_PENDING_ACTIONS, NOT_A_DRAFT, INVALID_TRANSITION, AGENT_ACTIONS_CAP, AGENT_KILL_SWITCH, PLAN_LIMIT.

Example requestSample
curl -X POST "https://api.billingmart.com/v1/actions/deleteExpense" \
  -H "Authorization: Bearer $BILLINGMART_API_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"targetId":"<targetId>"}'

actions

Delete mileage

POST/v1/actions/deleteMileage

Request deleteMileage: runs at once only under a matching owner rule (auto), else waits for a person (ask); a dry run in plan mode.

Scope
actions:records
Effect
Proposes an action a person approves
MCP tool
delete_mileage
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.

Delete mileage request body
FieldTypeNotes
targetIdrequiredid—
agentNoteoptionalstringup to 1000 chars

Returns

data: object

Errors this route can answer besides the shared ones: TOO_MANY_PENDING_ACTIONS, NOT_A_DRAFT, INVALID_TRANSITION, AGENT_ACTIONS_CAP, AGENT_KILL_SWITCH, PLAN_LIMIT.

Example requestSample
curl -X POST "https://api.billingmart.com/v1/actions/deleteMileage" \
  -H "Authorization: Bearer $BILLINGMART_API_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"targetId":"<targetId>"}'

actions

Confirm tax category

POST/v1/actions/confirmTaxCategory

Request confirmTaxCategory: runs at once only under a matching owner rule (auto), else waits for a person (ask); a dry run in plan mode.

Scope
actions:records
Effect
Proposes an action a person approves
MCP tool
confirm_tax_category
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.

Confirm tax category request body
FieldTypeNotes
targetIdrequiredid—
agentNoteoptionalstringup to 1000 chars

Returns

data: object

Errors this route can answer besides the shared ones: TOO_MANY_PENDING_ACTIONS, NOT_A_DRAFT, INVALID_TRANSITION, AGENT_ACTIONS_CAP, AGENT_KILL_SWITCH, PLAN_LIMIT.

Example requestSample
curl -X POST "https://api.billingmart.com/v1/actions/confirmTaxCategory" \
  -H "Authorization: Bearer $BILLINGMART_API_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"targetId":"<targetId>"}'

actions

Start card payment

POST/v1/actions/startCardPayment

Request startCardPayment: always waits for a person to approve it, whatever the mode; a dry run in plan mode.

Scope
actions:money
Effect
Proposes an action a person approves
MCP tool
start_card_payment
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.

Start card payment request body
FieldTypeNotes
targetIdrequiredid—
agentNoteoptionalstringup to 1000 chars
amountoptionalobject—
amount.minorUnitsrequiredinteger—
amount.currencyrequiredCurrency—

Returns

data: object

Errors this route can answer besides the shared ones: TOO_MANY_PENDING_ACTIONS, NOT_A_DRAFT, INVALID_TRANSITION, AGENT_ACTIONS_CAP, AGENT_KILL_SWITCH, PLAN_LIMIT.

Example requestSample
curl -X POST "https://api.billingmart.com/v1/actions/startCardPayment" \
  -H "Authorization: Bearer $BILLINGMART_API_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"targetId":"<targetId>","amount":{"minorUnits":0,"currency":"USD"}}'

actions

Start ach payment

POST/v1/actions/startAchPayment

Request startAchPayment: always waits for a person to approve it, whatever the mode; a dry run in plan mode.

Scope
actions:money
Effect
Proposes an action a person approves
MCP tool
start_ach_payment
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.

Start ach payment request body
FieldTypeNotes
targetIdrequiredid—
agentNoteoptionalstringup to 1000 chars
amountoptionalobject—
amount.minorUnitsrequiredinteger—
amount.currencyrequiredCurrency—

Returns

data: object

Errors this route can answer besides the shared ones: TOO_MANY_PENDING_ACTIONS, NOT_A_DRAFT, INVALID_TRANSITION, AGENT_ACTIONS_CAP, AGENT_KILL_SWITCH, PLAN_LIMIT.

Example requestSample
curl -X POST "https://api.billingmart.com/v1/actions/startAchPayment" \
  -H "Authorization: Bearer $BILLINGMART_API_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"targetId":"<targetId>","amount":{"minorUnits":0,"currency":"USD"}}'

actions

Send custom email

POST/v1/actions/sendCustomEmail

Request sendCustomEmail: waits for a person to approve it when a connected assistant asks; only the built-in BillingMart Agent, in Auto, may run it under a matching owner rule; a dry run in plan mode.

Scope
actions:deliver
Effect
Proposes an action a person approves
MCP tool
send_custom_email
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.

Send custom email request body
FieldTypeNotes
targetIdrequiredid—
agentNoteoptionalstringup to 1000 chars
subjectrequiredstringup to 200 chars · matches ^[^<]*$
bodyrequiredstringup to 1600 chars · matches ^[^<]*$
jobIdoptionalid—

Returns

data: object

Errors this route can answer besides the shared ones: TOO_MANY_PENDING_ACTIONS, NOT_A_DRAFT, INVALID_TRANSITION, AGENT_ACTIONS_CAP, AGENT_KILL_SWITCH, PLAN_LIMIT.

Example requestSample
curl -X POST "https://api.billingmart.com/v1/actions/sendCustomEmail" \
  -H "Authorization: Bearer $BILLINGMART_API_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"targetId":"<targetId>","subject":"<subject>","body":"<body>"}'

actions

Send sms

POST/v1/actions/sendSms

Request sendSms: waits for a person to approve it when a connected assistant asks; only the built-in BillingMart Agent, in Auto, may run it under a matching owner rule; a dry run in plan mode.

Scope
actions:deliver
Effect
Proposes an action a person approves
MCP tool
send_sms
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.

Send sms request body
FieldTypeNotes
targetIdrequiredid—
agentNoteoptionalstringup to 1000 chars
textrequiredstringup to 320 chars · matches ^[^<]*$
jobIdoptionalid—

Returns

data: object

Errors this route can answer besides the shared ones: TOO_MANY_PENDING_ACTIONS, NOT_A_DRAFT, INVALID_TRANSITION, AGENT_ACTIONS_CAP, AGENT_KILL_SWITCH, PLAN_LIMIT.

Example requestSample
curl -X POST "https://api.billingmart.com/v1/actions/sendSms" \
  -H "Authorization: Bearer $BILLINGMART_API_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"targetId":"<targetId>","text":"<text>"}'

actions

Send client statement

POST/v1/actions/sendClientStatement

Request sendClientStatement: waits for a person to approve it when a connected assistant asks; only the built-in BillingMart Agent, in Auto, may run it under a matching owner rule; a dry run in plan mode.

Scope
actions:deliver
Effect
Proposes an action a person approves
MCP tool
send_client_statement
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.

Send client statement request body
FieldTypeNotes
targetIdrequiredid—
agentNoteoptionalstringup to 1000 chars
periodFromrequiredstringmatches ^\d{4}-\d{2}-\d{2}$
periodTorequiredstringmatches ^\d{4}-\d{2}-\d{2}$
currencyrequiredCurrency—

Returns

data: object

Errors this route can answer besides the shared ones: TOO_MANY_PENDING_ACTIONS, NOT_A_DRAFT, INVALID_TRANSITION, AGENT_ACTIONS_CAP, AGENT_KILL_SWITCH, PLAN_LIMIT.

Example requestSample
curl -X POST "https://api.billingmart.com/v1/actions/sendClientStatement" \
  -H "Authorization: Bearer $BILLINGMART_API_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"targetId":"<targetId>","periodFrom":"<periodFrom>","periodTo":"<periodTo>","currency":"USD"}'

actions

Send verification invite

POST/v1/actions/sendVerificationInvite

Request sendVerificationInvite: waits for a person to approve it when a connected assistant asks; only the built-in BillingMart Agent, in Auto, may run it under a matching owner rule; a dry run in plan mode.

Scope
actions:deliver
Effect
Proposes an action a person approves
MCP tool
send_verification_invite
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.

Send verification invite request body
FieldTypeNotes
targetIdrequiredid—
agentNoteoptionalstringup to 1000 chars
contactKeyrequiredstringmatches ^(em|ph)_[a-f0-9]{64}$

Returns

data: object

Errors this route can answer besides the shared ones: TOO_MANY_PENDING_ACTIONS, NOT_A_DRAFT, INVALID_TRANSITION, AGENT_ACTIONS_CAP, AGENT_KILL_SWITCH, PLAN_LIMIT.

Example requestSample
curl -X POST "https://api.billingmart.com/v1/actions/sendVerificationInvite" \
  -H "Authorization: Bearer $BILLINGMART_API_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"targetId":"<targetId>","contactKey":"<contactKey>"}'

actions

Publish pay theme

POST/v1/actions/publishPayTheme

Request publishPayTheme: waits for a person to approve it when a connected assistant asks; only the built-in BillingMart Agent, in Auto, may run it under a matching owner rule; a dry run in plan mode.

Scope
actions:records
Effect
Proposes an action a person approves
MCP tool
publish_pay_theme
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.

Publish pay theme request body
FieldTypeNotes
targetIdrequiredid—
agentNoteoptionalstringup to 1000 chars

Returns

data: object

Errors this route can answer besides the shared ones: TOO_MANY_PENDING_ACTIONS, NOT_A_DRAFT, INVALID_TRANSITION, AGENT_ACTIONS_CAP, AGENT_KILL_SWITCH, PLAN_LIMIT.

Example requestSample
curl -X POST "https://api.billingmart.com/v1/actions/publishPayTheme" \
  -H "Authorization: Bearer $BILLINGMART_API_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"targetId":"<targetId>"}'

actions

Update dunning cadence

POST/v1/actions/updateDunningCadence

Request updateDunningCadence: always waits for a person to approve it, whatever the mode; a dry run in plan mode.

Scope
actions:admin
Effect
Proposes an action a person approves
MCP tool
update_dunning_cadence
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.

Update dunning cadence request body
FieldTypeNotes
targetIdrequiredid—
agentNoteoptionalstringup to 1000 chars
cadencerequiredobject—
cadence.offsetsDaysrequiredinteger[]up to 12 items · at least 1
cadence.stopAfterDaysoptionalintegermin 0 · max 730

Returns

data: object

Errors this route can answer besides the shared ones: TOO_MANY_PENDING_ACTIONS, NOT_A_DRAFT, INVALID_TRANSITION, AGENT_ACTIONS_CAP, AGENT_KILL_SWITCH, PLAN_LIMIT.

Example requestSample
curl -X POST "https://api.billingmart.com/v1/actions/updateDunningCadence" \
  -H "Authorization: Bearer $BILLINGMART_API_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"targetId":"<targetId>","cadence":{"offsetsDays":[]}}'

actions

Delete template draft

POST/v1/actions/deleteTemplateDraft

Request deleteTemplateDraft: waits for a person to approve it when a connected assistant asks; only the built-in BillingMart Agent, in Auto, may run it under a matching owner rule; a dry run in plan mode.

Scope
actions:records
Effect
Proposes an action a person approves
MCP tool
delete_template_draft
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.

Delete template draft request body
FieldTypeNotes
targetIdrequiredid—
agentNoteoptionalstringup to 1000 chars

Returns

data: object

Errors this route can answer besides the shared ones: TOO_MANY_PENDING_ACTIONS, NOT_A_DRAFT, INVALID_TRANSITION, AGENT_ACTIONS_CAP, AGENT_KILL_SWITCH, PLAN_LIMIT.

Example requestSample
curl -X POST "https://api.billingmart.com/v1/actions/deleteTemplateDraft" \
  -H "Authorization: Bearer $BILLINGMART_API_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"targetId":"<targetId>"}'

actions

Delete pay theme draft

POST/v1/actions/deletePayThemeDraft

Request deletePayThemeDraft: waits for a person to approve it when a connected assistant asks; only the built-in BillingMart Agent, in Auto, may run it under a matching owner rule; a dry run in plan mode.

Scope
actions:records
Effect
Proposes an action a person approves
MCP tool
delete_pay_theme_draft
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.

Delete pay theme draft request body
FieldTypeNotes
targetIdrequiredid—
agentNoteoptionalstringup to 1000 chars

Returns

data: object

Errors this route can answer besides the shared ones: TOO_MANY_PENDING_ACTIONS, NOT_A_DRAFT, INVALID_TRANSITION, AGENT_ACTIONS_CAP, AGENT_KILL_SWITCH, PLAN_LIMIT.

Example requestSample
curl -X POST "https://api.billingmart.com/v1/actions/deletePayThemeDraft" \
  -H "Authorization: Bearer $BILLINGMART_API_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"targetId":"<targetId>"}'

actions

Setup gateway

POST/v1/actions/setupGateway

Request setupGateway: always waits for a person to approve it, whatever the mode; a dry run in plan mode.

Scope
actions:admin
Effect
Proposes an action a person approves
MCP tool
setup_gateway
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.

Setup gateway request body
FieldTypeNotes
targetIdoptionalid—
agentNoteoptionalstringup to 1000 chars
environmentrequiredenumOne of test, live
liveEndpointHostoptionalstringup to 253 chars · matches ^[a-z0-9.-]+\.tranzpay\.com$

Returns

data: object

Errors this route can answer besides the shared ones: TOO_MANY_PENDING_ACTIONS, NOT_A_DRAFT, INVALID_TRANSITION, AGENT_ACTIONS_CAP, AGENT_KILL_SWITCH, PLAN_LIMIT.

Example requestSample
curl -X POST "https://api.billingmart.com/v1/actions/setupGateway" \
  -H "Authorization: Bearer $BILLINGMART_API_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"environment":"test"}'

actions

Activate live gateway

POST/v1/actions/activateLiveGateway

Request activateLiveGateway: always waits for a person to approve it, whatever the mode; a dry run in plan mode.

Scope
actions:admin
Effect
Proposes an action a person approves
MCP tool
activate_live_gateway
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.

Activate live gateway request body
FieldTypeNotes
targetIdoptionalid—
agentNoteoptionalstringup to 1000 chars

Returns

data: object

Errors this route can answer besides the shared ones: TOO_MANY_PENDING_ACTIONS, NOT_A_DRAFT, INVALID_TRANSITION, AGENT_ACTIONS_CAP, AGENT_KILL_SWITCH, PLAN_LIMIT.

Example requestSample
curl -X POST "https://api.billingmart.com/v1/actions/activateLiveGateway" \
  -H "Authorization: Bearer $BILLINGMART_API_KEY" \
  -H "Idempotency-Key: $(uuidgen)"

actions

Gateway self test

POST/v1/actions/gatewaySelfTest

Request gatewaySelfTest: always waits for a person to approve it, whatever the mode; a dry run in plan mode.

Scope
actions:admin
Effect
Proposes an action a person approves
MCP tool
run_gateway_self_test
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.

Gateway self test request body
FieldTypeNotes
targetIdoptionalid—
agentNoteoptionalstringup to 1000 chars
environmentrequiredenumOne of test, live

Returns

data: object

Errors this route can answer besides the shared ones: TOO_MANY_PENDING_ACTIONS, NOT_A_DRAFT, INVALID_TRANSITION, AGENT_ACTIONS_CAP, AGENT_KILL_SWITCH, PLAN_LIMIT.

Example requestSample
curl -X POST "https://api.billingmart.com/v1/actions/gatewaySelfTest" \
  -H "Authorization: Bearer $BILLINGMART_API_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"environment":"test"}'

actions

Create api key

POST/v1/actions/createApiKey

Request createApiKey: always waits for a person to approve it, whatever the mode; a dry run in plan mode.

Scope
actions:admin
Effect
Proposes an action a person approves
MCP tool
create_api_key
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 api key request body
FieldTypeNotes
targetIdoptionalid—
agentNoteoptionalstringup to 1000 chars
namerequiredstringup to 120 chars
scopesrequiredstring[]up to 64 items · at least 1
environmentoptionalenumOne of live, test
expiresAtoptionalstring (date-time)—

Returns

data: object

Errors this route can answer besides the shared ones: TOO_MANY_PENDING_ACTIONS, NOT_A_DRAFT, INVALID_TRANSITION, AGENT_ACTIONS_CAP, AGENT_KILL_SWITCH, PLAN_LIMIT.

Example requestSample
curl -X POST "https://api.billingmart.com/v1/actions/createApiKey" \
  -H "Authorization: Bearer $BILLINGMART_API_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"name":"<name>","scopes":[]}'

actions

Revoke api key

POST/v1/actions/revokeApiKey

Request revokeApiKey: always waits for a person to approve it, whatever the mode; a dry run in plan mode.

Scope
actions:admin
Effect
Proposes an action a person approves
MCP tool
revoke_api_key
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.

Revoke api key request body
FieldTypeNotes
targetIdrequiredid—
agentNoteoptionalstringup to 1000 chars

Returns

data: object

Errors this route can answer besides the shared ones: TOO_MANY_PENDING_ACTIONS, NOT_A_DRAFT, INVALID_TRANSITION, AGENT_ACTIONS_CAP, AGENT_KILL_SWITCH, PLAN_LIMIT.

Example requestSample
curl -X POST "https://api.billingmart.com/v1/actions/revokeApiKey" \
  -H "Authorization: Bearer $BILLINGMART_API_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"targetId":"<targetId>"}'

actions

Register webhook

POST/v1/actions/registerWebhook

Request registerWebhook: always waits for a person to approve it, whatever the mode; a dry run in plan mode.

Scope
actions:admin
Effect
Proposes an action a person approves
MCP tool
register_webhook_endpoint
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.

Register webhook request body
FieldTypeNotes
targetIdoptionalid—
agentNoteoptionalstringup to 1000 chars
urlrequiredstring (starts_with)up to 2048 chars · matches ^https:\/\/.*
eventsrequiredstring[]up to 40 items · at least 1
descriptionoptionalstringup to 200 chars

Returns

data: object

Errors this route can answer besides the shared ones: TOO_MANY_PENDING_ACTIONS, NOT_A_DRAFT, INVALID_TRANSITION, AGENT_ACTIONS_CAP, AGENT_KILL_SWITCH, PLAN_LIMIT.

Example requestSample
curl -X POST "https://api.billingmart.com/v1/actions/registerWebhook" \
  -H "Authorization: Bearer $BILLINGMART_API_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"url":"<url>","events":[]}'

actions

Rotate webhook secret

POST/v1/actions/rotateWebhookSecret

Request rotateWebhookSecret: always waits for a person to approve it, whatever the mode; a dry run in plan mode.

Scope
actions:admin
Effect
Proposes an action a person approves
MCP tool
rotate_webhook_secret
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.

Rotate webhook secret request body
FieldTypeNotes
targetIdrequiredid—
agentNoteoptionalstringup to 1000 chars

Returns

data: object

Errors this route can answer besides the shared ones: TOO_MANY_PENDING_ACTIONS, NOT_A_DRAFT, INVALID_TRANSITION, AGENT_ACTIONS_CAP, AGENT_KILL_SWITCH, PLAN_LIMIT.

Example requestSample
curl -X POST "https://api.billingmart.com/v1/actions/rotateWebhookSecret" \
  -H "Authorization: Bearer $BILLINGMART_API_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"targetId":"<targetId>"}'

actions

Invite member

POST/v1/actions/inviteMember

Request inviteMember: always waits for a person to approve it, whatever the mode; a dry run in plan mode.

Scope
actions:admin
Effect
Proposes an action a person approves
MCP tool
invite_member
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.

Invite member request body
FieldTypeNotes
targetIdoptionalid—
agentNoteoptionalstringup to 1000 chars
emailrequiredstring (email)up to 320 chars
rolerequiredenumOne of admin, staff, viewer
businessIdsoptionalid[]up to 50 items

Returns

data: object

Errors this route can answer besides the shared ones: TOO_MANY_PENDING_ACTIONS, NOT_A_DRAFT, INVALID_TRANSITION, AGENT_ACTIONS_CAP, AGENT_KILL_SWITCH, PLAN_LIMIT.

Example requestSample
curl -X POST "https://api.billingmart.com/v1/actions/inviteMember" \
  -H "Authorization: Bearer $BILLINGMART_API_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"email":"<email>","role":"admin"}'

actions

Revoke invitation

POST/v1/actions/revokeInvitation

Request revokeInvitation: always waits for a person to approve it, whatever the mode; a dry run in plan mode.

Scope
actions:admin
Effect
Proposes an action a person approves
MCP tool
revoke_invitation
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.

Revoke invitation request body
FieldTypeNotes
targetIdrequiredid—
agentNoteoptionalstringup to 1000 chars

Returns

data: object

Errors this route can answer besides the shared ones: TOO_MANY_PENDING_ACTIONS, NOT_A_DRAFT, INVALID_TRANSITION, AGENT_ACTIONS_CAP, AGENT_KILL_SWITCH, PLAN_LIMIT.

Example requestSample
curl -X POST "https://api.billingmart.com/v1/actions/revokeInvitation" \
  -H "Authorization: Bearer $BILLINGMART_API_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"targetId":"<targetId>"}'

actions

Resend invitation

POST/v1/actions/resendInvitation

Request resendInvitation: always waits for a person to approve it, whatever the mode; a dry run in plan mode.

Scope
actions:admin
Effect
Proposes an action a person approves
MCP tool
resend_invitation
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.

Resend invitation request body
FieldTypeNotes
targetIdrequiredid—
agentNoteoptionalstringup to 1000 chars

Returns

data: object

Errors this route can answer besides the shared ones: TOO_MANY_PENDING_ACTIONS, NOT_A_DRAFT, INVALID_TRANSITION, AGENT_ACTIONS_CAP, AGENT_KILL_SWITCH, PLAN_LIMIT.

Example requestSample
curl -X POST "https://api.billingmart.com/v1/actions/resendInvitation" \
  -H "Authorization: Bearer $BILLINGMART_API_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"targetId":"<targetId>"}'

actions

Update invitation email

POST/v1/actions/updateInvitationEmail

Request updateInvitationEmail: always waits for a person to approve it, whatever the mode; a dry run in plan mode.

Scope
actions:admin
Effect
Proposes an action a person approves
MCP tool
update_invitation_email
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.

Update invitation email request body
FieldTypeNotes
targetIdrequiredid—
agentNoteoptionalstringup to 1000 chars
emailrequiredstring (email)up to 320 chars

Returns

data: object

Errors this route can answer besides the shared ones: TOO_MANY_PENDING_ACTIONS, NOT_A_DRAFT, INVALID_TRANSITION, AGENT_ACTIONS_CAP, AGENT_KILL_SWITCH, PLAN_LIMIT.

Example requestSample
curl -X POST "https://api.billingmart.com/v1/actions/updateInvitationEmail" \
  -H "Authorization: Bearer $BILLINGMART_API_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"targetId":"<targetId>","email":"<email>"}'

actions

Set member role

POST/v1/actions/setMemberRole

Request setMemberRole: always waits for a person to approve it, whatever the mode; a dry run in plan mode.

Scope
actions:admin
Effect
Proposes an action a person approves
MCP tool
set_member_role
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.

Set member role request body
FieldTypeNotes
targetIdrequiredid—
agentNoteoptionalstringup to 1000 chars
rolerequiredenumOne of admin, staff, viewer

Returns

data: object

Errors this route can answer besides the shared ones: TOO_MANY_PENDING_ACTIONS, NOT_A_DRAFT, INVALID_TRANSITION, AGENT_ACTIONS_CAP, AGENT_KILL_SWITCH, PLAN_LIMIT.

Example requestSample
curl -X POST "https://api.billingmart.com/v1/actions/setMemberRole" \
  -H "Authorization: Bearer $BILLINGMART_API_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"targetId":"<targetId>","role":"admin"}'

actions

Remove member

POST/v1/actions/removeMember

Request removeMember: always waits for a person to approve it, whatever the mode; a dry run in plan mode.

Scope
actions:admin
Effect
Proposes an action a person approves
MCP tool
remove_member
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.

Remove member request body
FieldTypeNotes
targetIdrequiredid—
agentNoteoptionalstringup to 1000 chars

Returns

data: object

Errors this route can answer besides the shared ones: TOO_MANY_PENDING_ACTIONS, NOT_A_DRAFT, INVALID_TRANSITION, AGENT_ACTIONS_CAP, AGENT_KILL_SWITCH, PLAN_LIMIT.

Example requestSample
curl -X POST "https://api.billingmart.com/v1/actions/removeMember" \
  -H "Authorization: Bearer $BILLINGMART_API_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"targetId":"<targetId>"}'

actions

Delete workspace

POST/v1/actions/deleteWorkspace

Request deleteWorkspace: always waits for a person to approve it, whatever the mode; a dry run in plan mode.

Scope
actions:admin
Effect
Proposes an action a person approves
MCP tool
delete_workspace
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.

Delete workspace request body
FieldTypeNotes
targetIdoptionalid—
agentNoteoptionalstringup to 1000 chars

Returns

data: object

Errors this route can answer besides the shared ones: TOO_MANY_PENDING_ACTIONS, NOT_A_DRAFT, INVALID_TRANSITION, AGENT_ACTIONS_CAP, AGENT_KILL_SWITCH, PLAN_LIMIT.

Example requestSample
curl -X POST "https://api.billingmart.com/v1/actions/deleteWorkspace" \
  -H "Authorization: Bearer $BILLINGMART_API_KEY" \
  -H "Idempotency-Key: $(uuidgen)"

actions

Cancel workspace deletion

POST/v1/actions/cancelWorkspaceDeletion

Request cancelWorkspaceDeletion: always waits for a person to approve it, whatever the mode; a dry run in plan mode.

Scope
actions:admin
Effect
Proposes an action a person approves
MCP tool
cancel_workspace_deletion
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.

Cancel workspace deletion request body
FieldTypeNotes
targetIdoptionalid—
agentNoteoptionalstringup to 1000 chars

Returns

data: object

Errors this route can answer besides the shared ones: TOO_MANY_PENDING_ACTIONS, NOT_A_DRAFT, INVALID_TRANSITION, AGENT_ACTIONS_CAP, AGENT_KILL_SWITCH, PLAN_LIMIT.

Example requestSample
curl -X POST "https://api.billingmart.com/v1/actions/cancelWorkspaceDeletion" \
  -H "Authorization: Bearer $BILLINGMART_API_KEY" \
  -H "Idempotency-Key: $(uuidgen)"

actions

Update branding

POST/v1/actions/updateBranding

Request updateBranding: always waits for a person to approve it, whatever the mode; a dry run in plan mode.

Scope
actions:admin
Effect
Proposes an action a person approves
MCP tool
update_branding
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.

Update branding request body
FieldTypeNotes
targetIdoptionalid—
agentNoteoptionalstringup to 1000 chars
logoUrloptionalstring (starts_with)up to 2048 chars · matches ^https:\/\/.*
faviconUrloptionalstring (starts_with)up to 2048 chars · matches ^https:\/\/.*
tokenOverridesoptionalobject—

Returns

data: object

Errors this route can answer besides the shared ones: TOO_MANY_PENDING_ACTIONS, NOT_A_DRAFT, INVALID_TRANSITION, AGENT_ACTIONS_CAP, AGENT_KILL_SWITCH, PLAN_LIMIT.

Example requestSample
curl -X POST "https://api.billingmart.com/v1/actions/updateBranding" \
  -H "Authorization: Bearer $BILLINGMART_API_KEY" \
  -H "Idempotency-Key: $(uuidgen)"

actions

Update workspace settings

POST/v1/actions/updateWorkspaceSettings

Request updateWorkspaceSettings: always waits for a person to approve it, whatever the mode; a dry run in plan mode.

Scope
actions:admin
Effect
Proposes an action a person approves
MCP tool
update_workspace_settings
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.

Update workspace settings request body
FieldTypeNotes
targetIdoptionalid—
agentNoteoptionalstringup to 1000 chars
nameoptionalstringup to 120 chars
timeZoneoptionalstringup to 64 chars
defaultCurrencyoptionalCurrency—
defaultLanguageoptionalstringat least 2 chars · up to 8 chars

Returns

data: object

Errors this route can answer besides the shared ones: TOO_MANY_PENDING_ACTIONS, NOT_A_DRAFT, INVALID_TRANSITION, AGENT_ACTIONS_CAP, AGENT_KILL_SWITCH, PLAN_LIMIT.

Example requestSample
curl -X POST "https://api.billingmart.com/v1/actions/updateWorkspaceSettings" \
  -H "Authorization: Bearer $BILLINGMART_API_KEY" \
  -H "Idempotency-Key: $(uuidgen)"

actions

Update security settings

POST/v1/actions/updateSecuritySettings

Request updateSecuritySettings: always waits for a person to approve it, whatever the mode; a dry run in plan mode.

Scope
actions:admin
Effect
Proposes an action a person approves
MCP tool
update_security_settings
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.

Update security settings request body
FieldTypeNotes
targetIdoptionalid—
agentNoteoptionalstringup to 1000 chars
mfaRequiredForAdminsoptionalboolean—
emailRequiredForPortaloptionalboolean—

Returns

data: object

Errors this route can answer besides the shared ones: TOO_MANY_PENDING_ACTIONS, NOT_A_DRAFT, INVALID_TRANSITION, AGENT_ACTIONS_CAP, AGENT_KILL_SWITCH, PLAN_LIMIT.

Example requestSample
curl -X POST "https://api.billingmart.com/v1/actions/updateSecuritySettings" \
  -H "Authorization: Bearer $BILLINGMART_API_KEY" \
  -H "Idempotency-Key: $(uuidgen)"

actions

Update webhook

POST/v1/actions/updateWebhook

Request updateWebhook: always waits for a person to approve it, whatever the mode; a dry run in plan mode.

Scope
actions:admin
Effect
Proposes an action a person approves
MCP tool
update_webhook_endpoint
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.

Update webhook request body
FieldTypeNotes
targetIdrequiredid—
agentNoteoptionalstringup to 1000 chars
eventsoptionalstring[]up to 40 items · at least 1
descriptionoptionalstringup to 200 chars
activeoptionalboolean—

Returns

data: object

Errors this route can answer besides the shared ones: TOO_MANY_PENDING_ACTIONS, NOT_A_DRAFT, INVALID_TRANSITION, AGENT_ACTIONS_CAP, AGENT_KILL_SWITCH, PLAN_LIMIT.

Example requestSample
curl -X POST "https://api.billingmart.com/v1/actions/updateWebhook" \
  -H "Authorization: Bearer $BILLINGMART_API_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"targetId":"<targetId>"}'

actions

Delete webhook

POST/v1/actions/deleteWebhook

Request deleteWebhook: always waits for a person to approve it, whatever the mode; a dry run in plan mode.

Scope
actions:admin
Effect
Proposes an action a person approves
MCP tool
delete_webhook_endpoint
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.

Delete webhook request body
FieldTypeNotes
targetIdrequiredid—
agentNoteoptionalstringup to 1000 chars

Returns

data: object

Errors this route can answer besides the shared ones: TOO_MANY_PENDING_ACTIONS, NOT_A_DRAFT, INVALID_TRANSITION, AGENT_ACTIONS_CAP, AGENT_KILL_SWITCH, PLAN_LIMIT.

Example requestSample
curl -X POST "https://api.billingmart.com/v1/actions/deleteWebhook" \
  -H "Authorization: Bearer $BILLINGMART_API_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"targetId":"<targetId>"}'

actions

Redeliver webhook

POST/v1/actions/redeliverWebhook

Request redeliverWebhook: always waits for a person to approve it, whatever the mode; a dry run in plan mode.

Scope
actions:admin
Effect
Proposes an action a person approves
MCP tool
redeliver_webhook
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.

Redeliver webhook request body
FieldTypeNotes
targetIdrequiredid—
agentNoteoptionalstringup to 1000 chars

Returns

data: object

Errors this route can answer besides the shared ones: TOO_MANY_PENDING_ACTIONS, NOT_A_DRAFT, INVALID_TRANSITION, AGENT_ACTIONS_CAP, AGENT_KILL_SWITCH, PLAN_LIMIT.

Example requestSample
curl -X POST "https://api.billingmart.com/v1/actions/redeliverWebhook" \
  -H "Authorization: Bearer $BILLINGMART_API_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"targetId":"<targetId>"}'

actions

Register app client

POST/v1/actions/registerAppClient

Request registerAppClient: always waits for a person to approve it, whatever the mode; a dry run in plan mode.

Scope
actions:admin
Effect
Proposes an action a person approves
MCP tool
register_app_client
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.

Register app client request body
FieldTypeNotes
targetIdoptionalid—
agentNoteoptionalstringup to 1000 chars
clientNamerequiredstringup to 200 chars
redirectUrisrequiredstring (starts_with)[]up to 10 items · at least 1

Returns

data: object

Errors this route can answer besides the shared ones: TOO_MANY_PENDING_ACTIONS, NOT_A_DRAFT, INVALID_TRANSITION, AGENT_ACTIONS_CAP, AGENT_KILL_SWITCH, PLAN_LIMIT.

Example requestSample
curl -X POST "https://api.billingmart.com/v1/actions/registerAppClient" \
  -H "Authorization: Bearer $BILLINGMART_API_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"clientName":"<clientName>","redirectUris":[]}'

actions

Revoke app client

POST/v1/actions/revokeAppClient

Request revokeAppClient: always waits for a person to approve it, whatever the mode; a dry run in plan mode.

Scope
actions:admin
Effect
Proposes an action a person approves
MCP tool
revoke_app_client
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.

Revoke app client request body
FieldTypeNotes
targetIdrequiredid—
agentNoteoptionalstringup to 1000 chars

Returns

data: object

Errors this route can answer besides the shared ones: TOO_MANY_PENDING_ACTIONS, NOT_A_DRAFT, INVALID_TRANSITION, AGENT_ACTIONS_CAP, AGENT_KILL_SWITCH, PLAN_LIMIT.

Example requestSample
curl -X POST "https://api.billingmart.com/v1/actions/revokeAppClient" \
  -H "Authorization: Bearer $BILLINGMART_API_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"targetId":"<targetId>"}'

actions

Disconnect app

POST/v1/actions/disconnectApp

Request disconnectApp: always waits for a person to approve it, whatever the mode; a dry run in plan mode.

Scope
actions:admin
Effect
Proposes an action a person approves
MCP tool
disconnect_app
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.

Disconnect app request body
FieldTypeNotes
targetIdrequiredid—
agentNoteoptionalstringup to 1000 chars

Returns

data: object

Errors this route can answer besides the shared ones: TOO_MANY_PENDING_ACTIONS, NOT_A_DRAFT, INVALID_TRANSITION, AGENT_ACTIONS_CAP, AGENT_KILL_SWITCH, PLAN_LIMIT.

Example requestSample
curl -X POST "https://api.billingmart.com/v1/actions/disconnectApp" \
  -H "Authorization: Bearer $BILLINGMART_API_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"targetId":"<targetId>"}'

actions

Set member businesses

POST/v1/actions/setMemberBusinesses

Request setMemberBusinesses: always waits for a person to approve it, whatever the mode; a dry run in plan mode.

Scope
actions:admin
Effect
Proposes an action a person approves
MCP tool
set_member_businesses
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.

Set member businesses request body
FieldTypeNotes
targetIdrequiredid—
agentNoteoptionalstringup to 1000 chars
businessIdsrequiredid[]up to 50 items

Returns

data: object

Errors this route can answer besides the shared ones: TOO_MANY_PENDING_ACTIONS, NOT_A_DRAFT, INVALID_TRANSITION, AGENT_ACTIONS_CAP, AGENT_KILL_SWITCH, PLAN_LIMIT.

Example requestSample
curl -X POST "https://api.billingmart.com/v1/actions/setMemberBusinesses" \
  -H "Authorization: Bearer $BILLINGMART_API_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"targetId":"<targetId>","businessIds":[]}'

actions

Create business

POST/v1/actions/createBusiness

Request createBusiness: always waits for a person to approve it, whatever the mode; a dry run in plan mode.

Scope
actions:admin
Effect
Proposes an action a person approves
MCP tool
create_business
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 business request body
FieldTypeNotes
targetIdoptionalid—
agentNoteoptionalstringup to 1000 chars
legalNamerequiredstringup to 200 chars
tradingNameoptionalstringup to 200 chars
taxRegistrationIdoptionalstringup to 64 chars
defaultCurrencyoptionalstringat least 3 chars · up to 3 chars
defaultLanguageoptionalstringup to 8 chars
emailoptionalstringup to 320 chars
phoneoptionalstringup to 20 chars
numberFormatoptionalstringup to 64 chars

Returns

data: object

Errors this route can answer besides the shared ones: TOO_MANY_PENDING_ACTIONS, NOT_A_DRAFT, INVALID_TRANSITION, AGENT_ACTIONS_CAP, AGENT_KILL_SWITCH, PLAN_LIMIT.

Example requestSample
curl -X POST "https://api.billingmart.com/v1/actions/createBusiness" \
  -H "Authorization: Bearer $BILLINGMART_API_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"legalName":"<legalName>"}'

actions

Update business

POST/v1/actions/updateBusiness

Request updateBusiness: always waits for a person to approve it, whatever the mode; a dry run in plan mode.

Scope
actions:admin
Effect
Proposes an action a person approves
MCP tool
update_business
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.

Update business request body
FieldTypeNotes
targetIdrequiredid—
agentNoteoptionalstringup to 1000 chars
legalNameoptionalstringup to 200 chars
tradingNameoptionalstringup to 200 chars
taxRegistrationIdoptionalstringup to 64 chars
defaultCurrencyoptionalstringat least 3 chars · up to 3 chars
defaultLanguageoptionalstringup to 8 chars
emailoptionalstringup to 320 chars
phoneoptionalstringup to 20 chars
numberFormatoptionalstringup to 64 chars
mileageDefaultsoptionalobject—
mileageDefaults.distanceUnitrequiredenumOne of mile, kilometre
mileageDefaults.ratePerUnitrequiredobject—
mileageDefaults.ratePerUnit.minorUnitsrequiredinteger—
mileageDefaults.ratePerUnit.currencyrequiredCurrency—
timeDefaultsoptionalobject—
timeDefaults.hourlyRaterequiredobject—
timeDefaults.hourlyRate.minorUnitsrequiredinteger—
timeDefaults.hourlyRate.currencyrequiredCurrency—

Returns

data: object

Errors this route can answer besides the shared ones: TOO_MANY_PENDING_ACTIONS, NOT_A_DRAFT, INVALID_TRANSITION, AGENT_ACTIONS_CAP, AGENT_KILL_SWITCH, PLAN_LIMIT.

Example requestSample
curl -X POST "https://api.billingmart.com/v1/actions/updateBusiness" \
  -H "Authorization: Bearer $BILLINGMART_API_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"targetId":"<targetId>","mileageDefaults":{"distanceUnit":"mile","ratePerUnit":{"minorUnits":0,"currency":"USD"}},"timeDefaults":{"hourlyRate":{"minorUnits":0,"currency":"USD"}}}'

actions

Set email settings

POST/v1/actions/setEmailSettings

Request setEmailSettings: always waits for a person to approve it, whatever the mode; a dry run in plan mode.

Scope
actions:admin
Effect
Proposes an action a person approves
MCP tool
set_email_settings
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.

Set email settings request body
FieldTypeNotes
targetIdoptionalid—
agentNoteoptionalstringup to 1000 chars
enabledrequiredboolean—
fromNameoptionalstringup to 60 chars
replyTooptionalstringup to 320 chars
merchantNotificationsoptionalobject—

Returns

data: object

Errors this route can answer besides the shared ones: TOO_MANY_PENDING_ACTIONS, NOT_A_DRAFT, INVALID_TRANSITION, AGENT_ACTIONS_CAP, AGENT_KILL_SWITCH, PLAN_LIMIT.

Example requestSample
curl -X POST "https://api.billingmart.com/v1/actions/setEmailSettings" \
  -H "Authorization: Bearer $BILLINGMART_API_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"enabled":false}'

actions

Set sms settings

POST/v1/actions/setSmsSettings

Request setSmsSettings: always waits for a person to approve it, whatever the mode; a dry run in plan mode.

Scope
actions:admin
Effect
Proposes an action a person approves
MCP tool
set_sms_settings
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.

Set sms settings request body
FieldTypeNotes
targetIdoptionalid—
agentNoteoptionalstringup to 1000 chars
enabledrequiredboolean—
senderNameoptionalstringup to 40 chars
notificationsoptionalobject—

Returns

data: object

Errors this route can answer besides the shared ones: TOO_MANY_PENDING_ACTIONS, NOT_A_DRAFT, INVALID_TRANSITION, AGENT_ACTIONS_CAP, AGENT_KILL_SWITCH, PLAN_LIMIT.

Example requestSample
curl -X POST "https://api.billingmart.com/v1/actions/setSmsSettings" \
  -H "Authorization: Bearer $BILLINGMART_API_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"enabled":false}'

actions

Adopt business type

POST/v1/actions/adoptBusinessType

Request adoptBusinessType: always waits for a person to approve it, whatever the mode; a dry run in plan mode.

Scope
actions:admin
Effect
Proposes an action a person approves
MCP tool
adopt_business_type
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.

Adopt business type request body
FieldTypeNotes
targetIdrequiredid—
agentNoteoptionalstringup to 1000 chars
keyrequiredstringmatches ^[a-z][a-z0-9-]{0,63}$
modifiersoptionalobject—

Returns

data: object

Errors this route can answer besides the shared ones: TOO_MANY_PENDING_ACTIONS, NOT_A_DRAFT, INVALID_TRANSITION, AGENT_ACTIONS_CAP, AGENT_KILL_SWITCH, PLAN_LIMIT.

Example requestSample
curl -X POST "https://api.billingmart.com/v1/actions/adoptBusinessType" \
  -H "Authorization: Bearer $BILLINGMART_API_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"targetId":"<targetId>","key":"<key>"}'

actions

Apply catalogue changes

POST/v1/actions/applyCatalogueChanges

Request applyCatalogueChanges: always waits for a person to approve it, whatever the mode; a dry run in plan mode.

Scope
actions:admin
Effect
Proposes an action a person approves
MCP tool
apply_catalogue_changes
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.

Apply catalogue changes request body
FieldTypeNotes
targetIdrequiredid—
agentNoteoptionalstringup to 1000 chars
acceptrequiredstring[]up to 200 items

Returns

data: object

Errors this route can answer besides the shared ones: TOO_MANY_PENDING_ACTIONS, NOT_A_DRAFT, INVALID_TRANSITION, AGENT_ACTIONS_CAP, AGENT_KILL_SWITCH, PLAN_LIMIT.

Example requestSample
curl -X POST "https://api.billingmart.com/v1/actions/applyCatalogueChanges" \
  -H "Authorization: Bearer $BILLINGMART_API_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"targetId":"<targetId>","accept":[]}'

actions

Update business type

POST/v1/actions/updateBusinessType

Request updateBusinessType: always waits for a person to approve it, whatever the mode; a dry run in plan mode.

Scope
actions:admin
Effect
Proposes an action a person approves
MCP tool
update_business_type
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.

Update business type request body
FieldTypeNotes
targetIdrequiredid—
agentNoteoptionalstringup to 1000 chars
definitionrequiredobject—
definition.defaultTermsoptionalobject—
definition.defaultTerms.depositBasisPointsoptionalintegermin -10000000 · max 10000000
definition.defaultTerms.installmentsoptionalintegermin 0 · max 60
definition.defaultTerms.netDaysrequiredintegermin 0 · max 365
definition.defaultTerms.notesoptionalstringup to 1000 chars
definition.defaultTerms.retainageBasisPointsoptionalintegermin -10000000 · max 10000000
definition.dunningCadenceoptionalobject—
definition.dunningCadence.offsetsDaysrequiredinteger[]—
definition.dunningCadence.stopAfterDaysoptionalintegermin 0 · max 730
definition.feeTypes[]optionalobject[]—
definition.feeTypes[].defaultAmountoptionalobject—
definition.feeTypes[].defaultAmount.currencyrequiredCurrency—
definition.feeTypes[].defaultAmount.minorUnitsrequiredinteger—
definition.feeTypes[].defaultRateBasisPointsoptionalintegermin -10000000 · max 10000000
definition.feeTypes[].keyrequiredstringup to 64 chars
definition.feeTypes[].labelrequiredstringup to 120 chars
definition.feeTypes[].taxTreatmentoptionalenumOne of taxable, exempt, zeroRated, reverseCharge
definition.invoiceFields[]optionalobject[]—
definition.invoiceFields[].helpTextoptionalstringup to 300 chars
definition.invoiceFields[].keyrequiredstringup to 64 chars · matches ^[a-z][a-zA-Z0-9]*$
definition.invoiceFields[].labelrequiredstringup to 120 chars
definition.invoiceFields[].optionsoptionalstring[]—
definition.invoiceFields[].printOnCustomerCopyrequiredboolean—
definition.invoiceFields[].requiredrequiredboolean—
definition.invoiceFields[].searchableoptionalboolean—
definition.invoiceFields[].typerequiredenumOne of text, longText, integer, money, basisPoints, date, boolean, select
definition.itemPresets[]optionalobject[]—
definition.itemPresets[].defaultRateBasisPointsoptionalintegermin -10000000 · max 10000000
definition.itemPresets[].defaultUnitPriceoptionalobject—
definition.itemPresets[].defaultUnitPrice.currencyrequiredCurrency—
definition.itemPresets[].defaultUnitPrice.minorUnitsrequiredinteger—
definition.itemPresets[].keyrequiredstringup to 64 chars
definition.itemPresets[].labelrequiredstringup to 120 chars
definition.itemPresets[].rateBasisrequiredenumOne of fixed, hourly, daily, weekly, monthly, perUnit, perMile, perKilometre, percentage
definition.itemPresets[].taxTreatmentoptionalenumOne of taxable, exempt, zeroRated, reverseCharge
definition.numberFormatrequiredstringup to 64 chars
definition.taxProfileoptionalobject—
definition.taxProfile.defaultRateBasisPointsoptionalintegermin -10000000 · max 10000000
definition.taxProfile.defaultTreatmentrequiredenumOne of taxable, exempt, zeroRated, reverseCharge
definition.taxProfile.perLineTaxoptionalboolean—
definition.taxProfile.taxLabeloptionalstringup to 60 chars
definition.terminologyrequiredobject—
definition.terminology.changeOrderrequiredstringup to 60 chars
definition.terminology.clientoptionalstringup to 60 chars
definition.terminology.estimateoptionalstringup to 60 chars
definition.terminology.invoiceoptionalstringup to 60 chars
definition.terminology.jobrequiredstringup to 60 chars

Returns

data: object

Errors this route can answer besides the shared ones: TOO_MANY_PENDING_ACTIONS, NOT_A_DRAFT, INVALID_TRANSITION, AGENT_ACTIONS_CAP, AGENT_KILL_SWITCH, PLAN_LIMIT.

Example requestSample
curl -X POST "https://api.billingmart.com/v1/actions/updateBusinessType" \
  -H "Authorization: Bearer $BILLINGMART_API_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"targetId":"<targetId>","definition":{"defaultTerms":{"netDays":0},"dunningCadence":{"offsetsDays":[]},"numberFormat":"<numberFormat>","taxProfile":{"defaultTreatment":"taxable"},"terminology":{"changeOrder":"<changeOrder>","job":"<job>"}}}'

actions

Create sandbox

POST/v1/actions/createSandbox

Request createSandbox: always waits for a person to approve it, whatever the mode; a dry run in plan mode.

Scope
actions:admin
Effect
Proposes an action a person approves
MCP tool
create_sandbox
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 sandbox request body
FieldTypeNotes
targetIdoptionalid—
agentNoteoptionalstringup to 1000 chars

Returns

data: object

Errors this route can answer besides the shared ones: TOO_MANY_PENDING_ACTIONS, NOT_A_DRAFT, INVALID_TRANSITION, AGENT_ACTIONS_CAP, AGENT_KILL_SWITCH, PLAN_LIMIT.

Example requestSample
curl -X POST "https://api.billingmart.com/v1/actions/createSandbox" \
  -H "Authorization: Bearer $BILLINGMART_API_KEY" \
  -H "Idempotency-Key: $(uuidgen)"

actions

Verify client contact

POST/v1/actions/verifyClientContact

Request verifyClientContact: always waits for a person to approve it, whatever the mode; a dry run in plan mode.

Scope
actions:admin
Effect
Proposes an action a person approves
MCP tool
verify_client_contact
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.

Verify client contact request body
FieldTypeNotes
targetIdrequiredid—
agentNoteoptionalstringup to 1000 chars
contactKeyrequiredstringmatches ^(em|ph)_[a-f0-9]{64}$
reasonrequiredstringup to 500 chars

Returns

data: object

Errors this route can answer besides the shared ones: TOO_MANY_PENDING_ACTIONS, NOT_A_DRAFT, INVALID_TRANSITION, AGENT_ACTIONS_CAP, AGENT_KILL_SWITCH, PLAN_LIMIT.

Example requestSample
curl -X POST "https://api.billingmart.com/v1/actions/verifyClientContact" \
  -H "Authorization: Bearer $BILLINGMART_API_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"targetId":"<targetId>","contactKey":"<contactKey>","reason":"<reason>"}'

actions

Plan change

POST/v1/actions/planChange

Request planChange: always waits for a person to approve it, whatever the mode; a dry run in plan mode.

Scope
actions:money
Effect
Proposes an action a person approves
MCP tool
plan_change
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.

Plan change request body
FieldTypeNotes
targetIdoptionalid—
agentNoteoptionalstringup to 1000 chars
planIdrequiredid—
intervaloptionalenumOne of monthly, annual

Returns

data: object

Errors this route can answer besides the shared ones: TOO_MANY_PENDING_ACTIONS, NOT_A_DRAFT, INVALID_TRANSITION, AGENT_ACTIONS_CAP, AGENT_KILL_SWITCH, PLAN_LIMIT.

Example requestSample
curl -X POST "https://api.billingmart.com/v1/actions/planChange" \
  -H "Authorization: Bearer $BILLINGMART_API_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"planId":"<planId>"}'

actions

Credit purchase

POST/v1/actions/creditPurchase

Request creditPurchase: always waits for a person to approve it, whatever the mode; a dry run in plan mode.

Scope
actions:money
Effect
Proposes an action a person approves
MCP tool
credit_purchase
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.

Credit purchase request body
FieldTypeNotes
targetIdoptionalid—
agentNoteoptionalstringup to 1000 chars
packIdrequiredstringmatches ^[A-Za-z0-9_-]{1,64}$

Returns

data: object

Errors this route can answer besides the shared ones: TOO_MANY_PENDING_ACTIONS, NOT_A_DRAFT, INVALID_TRANSITION, AGENT_ACTIONS_CAP, AGENT_KILL_SWITCH, PLAN_LIMIT.

Example requestSample
curl -X POST "https://api.billingmart.com/v1/actions/creditPurchase" \
  -H "Authorization: Bearer $BILLINGMART_API_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"packId":"<packId>"}'

actions

Activate job

POST/v1/actions/activateJob

Request activateJob: runs at once only under a matching owner rule (auto), else waits for a person (ask); a dry run in plan mode.

Scope
actions:records
Effect
Proposes an action a person approves
MCP tool
activate_job
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.

Activate job request body
FieldTypeNotes
targetIdrequiredid—
agentNoteoptionalstringup to 1000 chars

Returns

data: object

Errors this route can answer besides the shared ones: TOO_MANY_PENDING_ACTIONS, NOT_A_DRAFT, INVALID_TRANSITION, AGENT_ACTIONS_CAP, AGENT_KILL_SWITCH, PLAN_LIMIT.

Example requestSample
curl -X POST "https://api.billingmart.com/v1/actions/activateJob" \
  -H "Authorization: Bearer $BILLINGMART_API_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"targetId":"<targetId>"}'

actions

Delete job

POST/v1/actions/deleteJob

Request deleteJob: always waits for a person to approve it, whatever the mode; a dry run in plan mode.

Scope
actions:records
Effect
Proposes an action a person approves
MCP tool
delete_job
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.

Delete job request body
FieldTypeNotes
targetIdrequiredid—
agentNoteoptionalstringup to 1000 chars
reasonrequiredstringup to 500 chars
voidInvoicesrequiredboolean—
voidBillsrequiredboolean—
discardEstimatesrequiredboolean—
unlinkEntriesoptionalboolean—
withSubJobsoptionalboolean—
planHashrequiredstringmatches ^[0-9a-f]{32}$

Returns

data: object

Errors this route can answer besides the shared ones: TOO_MANY_PENDING_ACTIONS, NOT_A_DRAFT, INVALID_TRANSITION, AGENT_ACTIONS_CAP, AGENT_KILL_SWITCH, PLAN_LIMIT.

Example requestSample
curl -X POST "https://api.billingmart.com/v1/actions/deleteJob" \
  -H "Authorization: Bearer $BILLINGMART_API_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"targetId":"<targetId>","reason":"<reason>","voidInvoices":false,"voidBills":false,"discardEstimates":false,"planHash":"<planHash>"}'

actions

Attach job document

POST/v1/actions/attachJobDocument

Request attachJobDocument: always waits for a person to approve it, whatever the mode; a dry run in plan mode.

Scope
actions:records
Effect
Proposes an action a person approves
MCP tool
attach_job_document
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.

Attach job document request body
FieldTypeNotes
targetIdrequiredid—
agentNoteoptionalstringup to 1000 chars

Returns

data: object

Errors this route can answer besides the shared ones: TOO_MANY_PENDING_ACTIONS, NOT_A_DRAFT, INVALID_TRANSITION, AGENT_ACTIONS_CAP, AGENT_KILL_SWITCH, PLAN_LIMIT.

Example requestSample
curl -X POST "https://api.billingmart.com/v1/actions/attachJobDocument" \
  -H "Authorization: Bearer $BILLINGMART_API_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"targetId":"<targetId>"}'

actions

Apply work config

POST/v1/actions/applyWorkConfig

Request applyWorkConfig: always waits for a person to approve it, whatever the mode; a dry run in plan mode.

Scope
actions:admin
Effect
Proposes an action a person approves
MCP tool
apply_work_config
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.

Apply work config request body
FieldTypeNotes
targetIdrequiredid—
agentNoteoptionalstringup to 1000 chars
acceptoptionalstring[]up to 400 items

Returns

data: object

Errors this route can answer besides the shared ones: TOO_MANY_PENDING_ACTIONS, NOT_A_DRAFT, INVALID_TRANSITION, AGENT_ACTIONS_CAP, AGENT_KILL_SWITCH, PLAN_LIMIT.

Example requestSample
curl -X POST "https://api.billingmart.com/v1/actions/applyWorkConfig" \
  -H "Authorization: Bearer $BILLINGMART_API_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"targetId":"<targetId>"}'

actions

Set job sharing

POST/v1/actions/setJobSharing

Request setJobSharing: always waits for a person to approve it, whatever the mode; a dry run in plan mode.

Scope
actions:records
Effect
Proposes an action a person approves
MCP tool
set_job_sharing
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.

Set job sharing request body
FieldTypeNotes
targetIdrequiredid—
agentNoteoptionalstringup to 1000 chars
sharingrequiredobject—
sharing.documentOverridesoptionalobject—
sharing.payButtonsoptionalboolean—
sharing.portaloptionalboolean—
sharing.publicLinkoptionalboolean—
sharing.showAdjustmentsoptionalboolean—
sharing.showBillsoptionalboolean—
sharing.showDocumentsoptionalenumOne of none, selected, all
sharing.showEstimatesoptionalboolean—
sharing.showFieldsoptionalboolean—
sharing.showInvoicesoptionalboolean—
sharing.showNextStepoptionalboolean—
sharing.showPaymentsoptionalboolean—
sharing.showStageoptionalboolean—
sharing.showSubJobsoptionalboolean—

Returns

data: object

Errors this route can answer besides the shared ones: TOO_MANY_PENDING_ACTIONS, NOT_A_DRAFT, INVALID_TRANSITION, AGENT_ACTIONS_CAP, AGENT_KILL_SWITCH, PLAN_LIMIT.

Example requestSample
curl -X POST "https://api.billingmart.com/v1/actions/setJobSharing" \
  -H "Authorization: Bearer $BILLINGMART_API_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"targetId":"<targetId>","sharing":{}}'

actions

Issue job adjustment

POST/v1/actions/issueJobAdjustment

Request issueJobAdjustment: always waits for a person to approve it, whatever the mode; a dry run in plan mode.

Scope
actions:records
Effect
Proposes an action a person approves
MCP tool
issue_job_adjustment
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.

Issue job adjustment request body
FieldTypeNotes
targetIdrequiredid—
agentNoteoptionalstringup to 1000 chars
adjustmentIdrequiredid—

Returns

data: object

Errors this route can answer besides the shared ones: TOO_MANY_PENDING_ACTIONS, NOT_A_DRAFT, INVALID_TRANSITION, AGENT_ACTIONS_CAP, AGENT_KILL_SWITCH, PLAN_LIMIT.

Example requestSample
curl -X POST "https://api.billingmart.com/v1/actions/issueJobAdjustment" \
  -H "Authorization: Bearer $BILLINGMART_API_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"targetId":"<targetId>","adjustmentId":"<adjustmentId>"}'

actions

Revise invoice

POST/v1/actions/reviseInvoice

Request reviseInvoice: always waits for a person to approve it, whatever the mode; a dry run in plan mode.

Scope
actions:records
Effect
Proposes an action a person approves
MCP tool
revise_invoice
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.

Revise invoice request body
FieldTypeNotes
targetIdrequiredid—
agentNoteoptionalstringup to 1000 chars
expectedUpdatedAtrequiredstringThe invoice’s updatedAt as read: a revision never overwrites a newer change. — up to 64 chars
lineItems[]requiredobject[]up to 200 items · at least 1
lineItems[].idoptionalid—
lineItems[].descriptionoptionalstringWhat the line is for. Optional with a presetKey (the item’s name is used). — up to 2000 chars
lineItems[].quantityMillioptionalintegerQuantity in thousandths: 1000 is one unit, 1500 is 1.5 hours. Defaults to 1000.
lineItems[].rateBasisoptionalenumHow the price applies: fixed for one flat charge, hourly, daily, perUnit, percentage… Optional with a presetKey. — One of fixed, hourly, daily, weekly, monthly, perUnit, perMile, perKilometre, percentage
lineItems[].unitPriceoptionalobjectPrice per unit in integer minor units of the document currency ($5,000.00 is 500000).
lineItems[].unitPrice.minorUnitsrequiredinteger—
lineItems[].unitPrice.currencyrequiredCurrency—
lineItems[].rateBasisPointsoptionalinteger—
lineItems[].taxTreatmentoptionalstring—
lineItems[].taxRateBasisPointsoptionalinteger—
lineItems[].discountBasisPointsoptionalinteger—
lineItems[].presetKeyoptionalstringThe key of one of the business’s products and services (get_business_context lists them); the server fills what the line leaves out. — up to 64 chars
issueDateoptionalstringmatches ^\d{4}-\d{2}-\d{2}$
dueDateoptionalstringmatches ^\d{4}-\d{2}-\d{2}$
termsoptionalstringup to 4000 chars
notesoptionalstringup to 4000 chars
poNumberoptionalstringup to 64 chars
customFieldsoptionalobject—
reasonoptionalstringup to 500 chars
emailCustomerrequiredboolean—
dryRunoptionalbooleanAnswer what the revision would do (totals, status, autopay) and create nothing.

Returns

data: object

Errors this route can answer besides the shared ones: TOO_MANY_PENDING_ACTIONS, NOT_A_DRAFT, INVALID_TRANSITION, AGENT_ACTIONS_CAP, AGENT_KILL_SWITCH, PLAN_LIMIT.

Example requestSample
curl -X POST "https://api.billingmart.com/v1/actions/reviseInvoice" \
  -H "Authorization: Bearer $BILLINGMART_API_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"targetId":"<targetId>","expectedUpdatedAt":"<expectedUpdatedAt>","emailCustomer":false}'

actions

Void job adjustment

POST/v1/actions/voidJobAdjustment

Request voidJobAdjustment: always waits for a person to approve it, whatever the mode; a dry run in plan mode.

Scope
actions:records
Effect
Proposes an action a person approves
MCP tool
void_job_adjustment
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.

Void job adjustment request body
FieldTypeNotes
targetIdrequiredid—
agentNoteoptionalstringup to 1000 chars
adjustmentIdrequiredid—
reasonrequiredstringup to 500 chars

Returns

data: object

Errors this route can answer besides the shared ones: TOO_MANY_PENDING_ACTIONS, NOT_A_DRAFT, INVALID_TRANSITION, AGENT_ACTIONS_CAP, AGENT_KILL_SWITCH, PLAN_LIMIT.

Example requestSample
curl -X POST "https://api.billingmart.com/v1/actions/voidJobAdjustment" \
  -H "Authorization: Bearer $BILLINGMART_API_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"targetId":"<targetId>","adjustmentId":"<adjustmentId>","reason":"<reason>"}'

actions

Rotate payment link token

POST/v1/actions/rotatePaymentLinkToken

Request rotatePaymentLinkToken: waits for a person to approve it when a connected assistant asks; only the built-in BillingMart Agent, in Auto, may run it under a matching owner rule; a dry run in plan mode.

Scope
actions:records
Effect
Proposes an action a person approves
MCP tool
rotate_payment_link_address
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.

Rotate payment link token request body
FieldTypeNotes
targetIdrequiredid—
agentNoteoptionalstringup to 1000 chars

Returns

data: object

Errors this route can answer besides the shared ones: TOO_MANY_PENDING_ACTIONS, NOT_A_DRAFT, INVALID_TRANSITION, AGENT_ACTIONS_CAP, AGENT_KILL_SWITCH, PLAN_LIMIT.

Example requestSample
curl -X POST "https://api.billingmart.com/v1/actions/rotatePaymentLinkToken" \
  -H "Authorization: Bearer $BILLINGMART_API_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"targetId":"<targetId>"}'

actions

Wait

GET/v1/actions/{actionId}/wait

Wait, up to 25 seconds, for a person to decide an action this connection proposed. Answers as soon as the status leaves pending; otherwise answers the pending action with retryAfterSeconds. Served by its own function so a parked wait never starves the API.

Scope
actions:read
Effect
Read only
MCP tool
wait_for_action
Retries
Safe to repeat

Parameters

Wait parameters
NameInTypeNotes
actionIdrequiredpathid—
maxWaitSecondsoptionalqueryintegermin 0 · max 25

Returns

data: object

Example requestSample
curl -X GET "https://api.billingmart.com/v1/actions/{actionId}/wait" \
  -H "Authorization: Bearer $BILLINGMART_API_KEY"

actions

Withdraw

POST/v1/actions/{actionId}/withdraw

Withdraw a pending action this connection proposed. Nothing runs; a person can no longer approve it.

Scope
actions:propose
Effect
Writes a draft or record
MCP tool
withdraw_action
Retries
Send an Idempotency-Key; a repeat replays the stored answer for 24 hours

Parameters

Withdraw parameters
NameInTypeNotes
actionIdrequiredpathid—

Returns

data: object

Errors this route can answer besides the shared ones: ALREADY_DECIDED.

Example requestSample
curl -X POST "https://api.billingmart.com/v1/actions/{actionId}/withdraw" \
  -H "Authorization: Bearer $BILLINGMART_API_KEY" \
  -H "Idempotency-Key: $(uuidgen)"
Next section

Webhooks

Endpoints BillingMart signs and posts events to, and the log of every attempt.

Continue to Webhooks →

Try it against your sandbox

Create a bmk_test_ key in the console. It can only reach your sandbox workspace.

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