Skip to main content

Webhooks & Events

Moxie can notify your integration when things happen in a workspace. When a subscribed event fires, Moxie sends an HTTP POST to the endpoint you registered, with the event object as the JSON body.

Delivery headers​

HeaderValueDescription
X-Event-Originwithmoxie.comIdentifies the sender.
X-Event-Typee.g. InvoiceVoidedThe event name (see catalog below). Use it to route the payload.

Invoice events​

Invoice events carry an InvoiceMini payload (the same shape returned by Search Payable Invoices, including invoice totals, tax, taxPercentage, taxRule, taxBreakdown, payments, and lineItems).

X-Event-TypeFires when
InvoiceSentAn invoice is sent to a client.
InvoiceVoidedA sent invoice with no payments is voided. The invoice moves to VOIDED.
InvoiceWriteOffA sent or partially paid invoice is written off. The invoice moves to WRITE-OFF.
PaymentReceivedA payment is recorded against an invoice.
Voided vs. write-off

InvoiceVoided and InvoiceWriteOff let an accounting integration react to a cancellation or write-off — for example, issuing a matching storno on the accounting platform. Note the constraints: an invoice can only be voided from SENT with no payments; it can be written off from SENT or PARTIAL.

Example payload (InvoiceVoided)​

{
"id": "66b0f2a1c3a9e40012ab34cd",
"accountId": 10016,
"invoiceNumber": 1042,
"invoiceNumberFormatted": "E-2026-042",
"clientId": "66b0f2a1c3a9e40012ab34cd",
"status": "VOIDED",
"invoiceType": "STANDARD",
"currency": "HUF",
"subTotal": 100.00,
"tax": 15.47,
"taxPercentage": 15.47375,
"taxRule": {
"id": "gst-pst",
"name": "GST + PST",
"source": "MOXIE",
"providerId": null,
"effectiveRate": 15.47375,
"components": [
{
"name": "GST",
"rate": 5.0,
"order": 0,
"compound": false,
"compoundOnOrder": null
},
{
"name": "PST",
"rate": 9.975,
"order": 1,
"compound": true,
"compoundOnOrder": null
}
]
},
"taxBreakdown": [
{
"name": "GST",
"rate": 5.0,
"order": 0,
"compound": false,
"taxableAmount": 100.00,
"amount": 5.00
},
{
"name": "PST",
"rate": 9.975,
"order": 1,
"compound": true,
"taxableAmount": 105.00,
"amount": 10.47
}
],
"total": 115.47,
"amountDue": 0.00,
"viewOnlineUrl": "https://pay.withmoxie.com/i/...",
"payments": []
}

Time events and expense automation​

X-Event-TypeFires when
TimerCreateA completed time entry is created, including when a running timer stops.
TimerUpdateA completed time entry is updated.
TimerDeleteA completed time entry is deleted.

Subscribe separately to each event through Subscribe hook, using its name as type and your Make webhook URL as hookUrl. Each payload contains the time entry's stable id. Update events include the current entry; delete events include the entry being removed. duration is in seconds and excludes paused time.

To keep staff-cost expenses in sync in Make:

  1. On TimerCreate, calculate duration / 3600 × hourly rate, create the expense, and store its returned id against the time entry id in a Make data store. Reuse this mapping if an event is delivered again to avoid duplicate expenses.
  2. On TimerUpdate, find the mapped expense, recalculate the cost, and update the expense with PATCH: {"id":"expense-id","amount":75.0}. Omitted fields retain their saved values.
  3. On TimerDelete, find the mapped expense and call Delete expense. It returns true on success. Remove the mapping after successful deletion; a 404 means the expense is already absent from the API key's workspace.

Moxie does not link expenses to time entries automatically. If a mapping is missing, reconcile it with the original expense before changing records. Time entries already added to an invoice cannot be edited or deleted.

Full event catalog​

The X-Event-Type values Moxie can send:

ClientCreate, ClientUpdate, ClientDelete,
InvoiceSent, InvoiceVoided, InvoiceWriteOff, PaymentReceived,
AgreementSent, AgreementViewed, AgreementSigned,
ProposalSent, ProposalViewed, ProposalSigned,
ProjectCreate, ProjectUpdate, ProjectComplete,
TimerCreate, TimerUpdate, TimerDelete,
FormCompleted, MeetingScheduled, MeetingUpdated, MeetingCancelled,
DeliverableApproval, DeliverableCreate, DeliverableUpdate, DeliverableDelete,
OpportunityCreate, OpportunityUpdate, OpportunityDelete,
TicketCreate, TicketUpdate, TicketDelete, TicketClose, TicketComment