AsyncAPI 2.6 description of the documented webhook / event surface across Sage developer products. Sage's webhook story is fragmented across product lines and only a subset of products publish a webhook capability. This spec captures only the surfaces that Sage actually documents publicly; products without a documented webhook capability are listed at the bottom of this description. Documented webhook surfaces modelled here: - Sage Intacct - Outbound webhooks (REST API) https://developer.sage.com/intacct/docs/developer-portal/guides/webhooks https://developer.sage.com/intacct/docs/developer-portal/webhooks-triggers/ https://developer.sage.com/intacct/docs/1/sage-intacct-rest-api/webhooks-and-triggers Outbound webhooks fire when objects in Sage Intacct are created or updated. The 2025 R2 release added a Platform event queue trigger that queues payloads in storage for delivery. - Sage Intacct - Smart Events (legacy Platform Services) https://developer.intacct.com/api/customization-services/smart-events/ https://developer.intacct.com/customization-services/smart-event-walkthrough/ Smart Events fire on Add, Set and Delete operations against Intacct objects (for example ARINVOICE, SODOCUMENT). The HTTP POST action delivers a payload to an external URL. - Sage People - Webhooks https://developer.sage.com/people/guides/webhooks/ Sage People webhooks notify subscribers when an Employee record is created or updated. The documented payload contains the Employee identifier; subscribers fetch the full record from the People API. - Sage Construction Management - Webhooks https://api-ext.sagecm.intacct.com/Documentation/GettingStarted Sage Construction Management can call a configured URL after a feature action (such as Company create). One webhook path can serve all features, or a different path can be configured per feature. A customer-defined security signature is delivered in the request header. - Sage Payments Out - Provider webhook notifications https://developer.sage.com/payments-out/provider-api/reference/provider-webhook-notifications-api/ https://developer.sage.com/payments-out/guides/provider/understand-provider-messaging-webhooks/ Provider-facing webhook notifications API used by payment providers integrating with the Sage Payments Out platform. Products WITHOUT a documented native webhook surface (as of the source documentation reviewed): - Sage Accounting / Business Cloud Accounting - no native webhook surface is documented on developer.sage.com; integrators use polling or a third-party iPaaS to derive change events. - Sage 50 Accounts - no documented webhook surface. - Sage 200 - no documented webhook surface. - Sage X3 - no documented webhook surface (GraphQL and SOAP only). Caveats: - Sage does not publish a single canonical, machine-readable webhook event catalogue. Payload field names and JSON Schemas are not published in full for most of the surfaces above. Where the schema is not publicly specified, message payloads in this spec are modelled as open `object` types and the description records that fact, rather than fabricating field names. - All channel paths are subscriber-hosted endpoints that the customer configures inside the relevant Sage product UI or via the relevant management API. The paths shown are illustrative placeholders.
View SpecView on GitHubAccountingBusiness ManagementCloud SoftwareERPPayrollHRAsyncAPIEventsWebhooks
Channels
/sage/intacct/webhook
publishreceiveIntacctEvent
Receive a Sage Intacct outbound webhook or Smart Event POST
Subscriber endpoint that receives Sage Intacct outbound webhook events and Smart Event HTTP POST deliveries. Intacct delivers one event per HTTP POST request. Subscribers should respond with a 2xx status code; Intacct outbound webhooks retry automatically on delivery failure.
/sage/people/webhook
publishreceivePeopleEvent
Receive a Sage People Employee webhook
Subscriber endpoint that receives Sage People Employee webhook events. Documented coverage is limited to the Employee object; the payload delivers the Id of the affected Employee and subscribers fetch the full record from the Sage People API.
/sage/cm/webhook
publishreceiveConstructionManagementEvent
Receive a Sage Construction Management feature webhook
Subscriber endpoint that receives Sage Construction Management webhook events. The administrator selects which feature(s) drive deliveries to this path (Company, Lead, Project, Estimate, Prime Contract, Job Cost Code, Labor Timecards, Equipment Timecards, Misc. Expenses, Project Financial). The customer-defined security signature is delivered in the request header and must be validated by the subscriber.
/sage/payments-out/webhook
publishreceivePaymentsOutProviderNotification
Receive a Sage Payments Out provider webhook notification
Provider endpoint that receives Sage Payments Out provider webhook notifications. The notification surface is documented as part of the Provider API and is targeted at payment providers integrating with Sage Payments Out.
Messages
✉
IntacctObjectAdded
Sage Intacct object Add event
An object was created in Sage Intacct
✉
IntacctObjectUpdated
Sage Intacct object Set event
An object was updated in Sage Intacct
✉
IntacctObjectDeleted
Sage Intacct object Delete event
An object was deleted in Sage Intacct
✉
PeopleEmployeeCreated
Sage People Employee created
A new Employee record was created in Sage People
✉
PeopleEmployeeUpdated
Sage People Employee updated
An existing Employee record was updated in Sage People
✉
ConstructionManagementFeatureEvent
Sage Construction Management feature event
A configured feature action occurred in Sage Construction Management
✉
PaymentsOutProviderNotification
Sage Payments Out provider notification
Provider webhook notification from Sage Payments Out
Servers
https
intacctSubscriber{webhookUrl}
Customer-hosted HTTPS endpoint that receives outbound webhook POSTs from Sage Intacct (REST outbound webhooks, Platform event queue triggers, or Smart Events with an HTTP POST action). The full URL is configured in the Intacct tenant.
https
peopleSubscriber{webhookUrl}
Customer-hosted HTTPS endpoint that receives Sage People webhook POSTs. The endpoint is registered on a Webhook object that references a Named Credential in the Sage People tenant.
https
constructionManagementSubscriber{webhookUrl}
Customer-hosted HTTPS endpoint that receives Sage Construction Management webhook POSTs. One path can serve every feature, or a different path can be configured per feature in the Sage Construction Management settings.
https
paymentsOutSubscriber{webhookUrl}
Provider-hosted HTTPS endpoint registered with Sage Payments Out to receive provider webhook notifications.
asyncapi: 2.6.0
info:
title: Sage Webhooks
version: '1.0.0'
description: |-
AsyncAPI 2.6 description of the documented webhook / event surface across
Sage developer products. Sage's webhook story is fragmented across product
lines and only a subset of products publish a webhook capability. This spec
captures only the surfaces that Sage actually documents publicly; products
without a documented webhook capability are listed at the bottom of this
description.
Documented webhook surfaces modelled here:
- Sage Intacct - Outbound webhooks (REST API)
https://developer.sage.com/intacct/docs/developer-portal/guides/webhooks
https://developer.sage.com/intacct/docs/developer-portal/webhooks-triggers/
https://developer.sage.com/intacct/docs/1/sage-intacct-rest-api/webhooks-and-triggers
Outbound webhooks fire when objects in Sage Intacct are created or
updated. The 2025 R2 release added a Platform event queue trigger that
queues payloads in storage for delivery.
- Sage Intacct - Smart Events (legacy Platform Services)
https://developer.intacct.com/api/customization-services/smart-events/
https://developer.intacct.com/customization-services/smart-event-walkthrough/
Smart Events fire on Add, Set and Delete operations against Intacct
objects (for example ARINVOICE, SODOCUMENT). The HTTP POST action
delivers a payload to an external URL.
- Sage People - Webhooks
https://developer.sage.com/people/guides/webhooks/
Sage People webhooks notify subscribers when an Employee record is
created or updated. The documented payload contains the Employee
identifier; subscribers fetch the full record from the People API.
- Sage Construction Management - Webhooks
https://api-ext.sagecm.intacct.com/Documentation/GettingStarted
Sage Construction Management can call a configured URL after a feature
action (such as Company create). One webhook path can serve all
features, or a different path can be configured per feature. A
customer-defined security signature is delivered in the request header.
- Sage Payments Out - Provider webhook notifications
https://developer.sage.com/payments-out/provider-api/reference/provider-webhook-notifications-api/
https://developer.sage.com/payments-out/guides/provider/understand-provider-messaging-webhooks/
Provider-facing webhook notifications API used by payment providers
integrating with the Sage Payments Out platform.
Products WITHOUT a documented native webhook surface (as of the source
documentation reviewed):
- Sage Accounting / Business Cloud Accounting - no native webhook surface
is documented on developer.sage.com; integrators use polling or a
third-party iPaaS to derive change events.
- Sage 50 Accounts - no documented webhook surface.
- Sage 200 - no documented webhook surface.
- Sage X3 - no documented webhook surface (GraphQL and SOAP only).
Caveats:
- Sage does not publish a single canonical, machine-readable webhook
event catalogue. Payload field names and JSON Schemas are not
published in full for most of the surfaces above. Where the schema is
not publicly specified, message payloads in this spec are modelled as
open `object` types and the description records that fact, rather
than fabricating field names.
- All channel paths are subscriber-hosted endpoints that the customer
configures inside the relevant Sage product UI or via the relevant
management API. The paths shown are illustrative placeholders.
contact:
name: Sage Developer Support
url: https://developer.sage.com/support/
license:
name: Sage Developer Terms
url: https://developer.sage.com/
defaultContentType: application/json
servers:
intacctSubscriber:
url: '{webhookUrl}'
protocol: https
description: |-
Customer-hosted HTTPS endpoint that receives outbound webhook POSTs from
Sage Intacct (REST outbound webhooks, Platform event queue triggers, or
Smart Events with an HTTP POST action). The full URL is configured in
the Intacct tenant.
variables:
webhookUrl:
default: https://example.com/sage/intacct/webhook
description: Fully-qualified HTTPS URL of the subscriber endpoint.
security:
- intacctSignature: []
peopleSubscriber:
url: '{webhookUrl}'
protocol: https
description: |-
Customer-hosted HTTPS endpoint that receives Sage People webhook POSTs.
The endpoint is registered on a Webhook object that references a Named
Credential in the Sage People tenant.
variables:
webhookUrl:
default: https://example.com/sage/people/webhook
description: Fully-qualified HTTPS URL of the subscriber endpoint.
security:
- namedCredential: []
constructionManagementSubscriber:
url: '{webhookUrl}'
protocol: https
description: |-
Customer-hosted HTTPS endpoint that receives Sage Construction
Management webhook POSTs. One path can serve every feature, or a
different path can be configured per feature in the Sage Construction
Management settings.
variables:
webhookUrl:
default: https://example.com/sage/cm/webhook
description: Fully-qualified HTTPS URL of the subscriber endpoint.
security:
- cmSignature: []
paymentsOutSubscriber:
url: '{webhookUrl}'
protocol: https
description: |-
Provider-hosted HTTPS endpoint registered with Sage Payments Out to
receive provider webhook notifications.
variables:
webhookUrl:
default: https://example.com/sage/payments-out/webhook
description: Fully-qualified HTTPS URL of the subscriber endpoint.
channels:
/sage/intacct/webhook:
description: |-
Subscriber endpoint that receives Sage Intacct outbound webhook events
and Smart Event HTTP POST deliveries. Intacct delivers one event per
HTTP POST request. Subscribers should respond with a 2xx status code;
Intacct outbound webhooks retry automatically on delivery failure.
bindings:
http:
type: request
method: POST
bindingVersion: '0.3.0'
publish:
operationId: receiveIntacctEvent
summary: Receive a Sage Intacct outbound webhook or Smart Event POST
description: |-
Sage Intacct posts a JSON body to the subscriber endpoint when a
configured object operation occurs (Add, Set, Delete) or when an
outbound webhook subscription fires for a Create or Update on a
subscribed object type. Sage Intacct does not publish a single
canonical JSON Schema for the outbound payload across all object
types; the payload shape depends on the subscribed object and on the
Smart Event configuration (XML or HTTP POST body authored by the
Intacct administrator).
message:
oneOf:
- $ref: '#/components/messages/IntacctObjectAdded'
- $ref: '#/components/messages/IntacctObjectUpdated'
- $ref: '#/components/messages/IntacctObjectDeleted'
/sage/people/webhook:
description: |-
Subscriber endpoint that receives Sage People Employee webhook events.
Documented coverage is limited to the Employee object; the payload
delivers the Id of the affected Employee and subscribers fetch the
full record from the Sage People API.
bindings:
http:
type: request
method: POST
bindingVersion: '0.3.0'
publish:
operationId: receivePeopleEvent
summary: Receive a Sage People Employee webhook
description: |-
Sage People posts a notification to the subscriber endpoint when a
new Employee is created or an existing Employee is updated.
message:
oneOf:
- $ref: '#/components/messages/PeopleEmployeeCreated'
- $ref: '#/components/messages/PeopleEmployeeUpdated'
/sage/cm/webhook:
description: |-
Subscriber endpoint that receives Sage Construction Management webhook
events. The administrator selects which feature(s) drive deliveries to
this path (Company, Lead, Project, Estimate, Prime Contract, Job Cost
Code, Labor Timecards, Equipment Timecards, Misc. Expenses, Project
Financial). The customer-defined security signature is delivered in
the request header and must be validated by the subscriber.
bindings:
http:
type: request
method: POST
bindingVersion: '0.3.0'
publish:
operationId: receiveConstructionManagementEvent
summary: Receive a Sage Construction Management feature webhook
description: |-
Sage Construction Management posts to the configured URL after a
feature action is performed in the application (for example, adding
a Company). The set of features that can drive webhook deliveries
mirrors the public API Reference feature list.
message:
$ref: '#/components/messages/ConstructionManagementFeatureEvent'
/sage/payments-out/webhook:
description: |-
Provider endpoint that receives Sage Payments Out provider webhook
notifications. The notification surface is documented as part of the
Provider API and is targeted at payment providers integrating with
Sage Payments Out.
bindings:
http:
type: request
method: POST
bindingVersion: '0.3.0'
publish:
operationId: receivePaymentsOutProviderNotification
summary: Receive a Sage Payments Out provider webhook notification
description: |-
Sage Payments Out posts a provider webhook notification to the
registered provider endpoint. The exact set of notification types
and their JSON Schemas are documented inside the Provider API
reference and are not fully reproduced here.
message:
$ref: '#/components/messages/PaymentsOutProviderNotification'
components:
securitySchemes:
intacctSignature:
type: httpApiKey
in: header
name: X-Sage-Signature
description: |-
Sage Intacct delivers a signature on outbound webhook calls so the
subscriber can verify the call originated from Intacct. Sage does
not publish the exact header name or algorithm in a single public
location; the header name shown here is a placeholder for the
documented "signature on the call" mechanism and should be
configured to match the live Intacct delivery in production
integrations.
namedCredential:
type: userPassword
description: |-
Sage People webhooks authenticate to the subscriber endpoint using
the credentials defined on a Named Credential (Custom Metadata
Type) referenced by the Webhook object configured in the tenant.
cmSignature:
type: httpApiKey
in: header
name: X-Sage-CM-Signature
description: |-
Sage Construction Management delivers a customer-defined security
signature in the request header for every webhook invocation. The
signature value is configured by the administrator in the Webhook
tab and must be validated by the subscriber to authenticate the
call from Sage Construction Management. The header name shown is a
placeholder; the documented behaviour is "the signature will be in
the header whenever the webhook is called."
messages:
IntacctObjectAdded:
name: IntacctObjectAdded
title: Sage Intacct object Add event
summary: An object was created in Sage Intacct
description: |-
Delivered when a subscribed Intacct object is created. Smart Events
document the Add condition as "checked whenever a new record is
created." Outbound webhooks document object Create as a delivery
trigger.
contentType: application/json
payload:
$ref: '#/components/schemas/IntacctEventEnvelope'
IntacctObjectUpdated:
name: IntacctObjectUpdated
title: Sage Intacct object Set event
summary: An object was updated in Sage Intacct
description: |-
Delivered when a subscribed Intacct object is updated. Smart Events
document the Set condition as "checked whenever a record is
changed." Outbound webhooks document object Update as a delivery
trigger.
contentType: application/json
payload:
$ref: '#/components/schemas/IntacctEventEnvelope'
IntacctObjectDeleted:
name: IntacctObjectDeleted
title: Sage Intacct object Delete event
summary: An object was deleted in Sage Intacct
description: |-
Delivered when a subscribed Intacct object is deleted. Smart Events
document the Delete condition as "checked whenever a record is
deleted." Delete coverage in REST outbound webhooks is not
guaranteed for every object type.
contentType: application/json
payload:
$ref: '#/components/schemas/IntacctEventEnvelope'
PeopleEmployeeCreated:
name: PeopleEmployeeCreated
title: Sage People Employee created
summary: A new Employee record was created in Sage People
description: |-
Delivered when a new Employee is created. The documented payload
contains the Id of the new Employee; subscribers fetch the full
record from the Sage People API.
contentType: application/json
payload:
$ref: '#/components/schemas/PeopleEmployeeEvent'
PeopleEmployeeUpdated:
name: PeopleEmployeeUpdated
title: Sage People Employee updated
summary: An existing Employee record was updated in Sage People
description: |-
Delivered when an existing Employee is updated. The documented
payload contains the Id of the updated Employee; subscribers fetch
the current record from the Sage People API.
contentType: application/json
payload:
$ref: '#/components/schemas/PeopleEmployeeEvent'
ConstructionManagementFeatureEvent:
name: ConstructionManagementFeatureEvent
title: Sage Construction Management feature event
summary: A configured feature action occurred in Sage Construction Management
description: |-
Delivered when an action occurs against a feature that has been
subscribed to webhook delivery. Sage does not publish a single
canonical event-type enum; the example given in the Getting Started
guide is Company creation triggering an external system update.
contentType: application/json
payload:
$ref: '#/components/schemas/ConstructionManagementEventEnvelope'
PaymentsOutProviderNotification:
name: PaymentsOutProviderNotification
title: Sage Payments Out provider notification
summary: Provider webhook notification from Sage Payments Out
description: |-
Delivered to the provider endpoint registered with Sage Payments
Out. The exact set of notification types and their JSON Schemas are
documented in the Provider Webhook Messaging API reference.
contentType: application/json
payload:
$ref: '#/components/schemas/PaymentsOutProviderEnvelope'
schemas:
IntacctEventEnvelope:
type: object
description: |-
Open envelope for a Sage Intacct outbound webhook or Smart Event
HTTP POST body. Sage does not publish a single canonical JSON
Schema for the outbound payload across object types and operations;
the actual body depends on the subscribed object (for example
ARINVOICE, SODOCUMENT) and on any administrator-authored template
in the Smart Event definition. Additional properties are therefore
permitted and no specific property names are fabricated here.
additionalProperties: true
PeopleEmployeeEvent:
type: object
description: |-
Sage People Employee event payload. The documented behaviour is
that the Id of the affected Employee is sent to the specified
endpoint; the remainder of the payload is not publicly specified.
additionalProperties: true
properties:
Id:
type: string
description: Identifier of the affected Sage People Employee record.
ConstructionManagementEventEnvelope:
type: object
description: |-
Open envelope for a Sage Construction Management webhook delivery.
Sage Construction Management does not publish a JSON Schema for the
outbound body in the public Getting Started documentation; the
envelope is therefore modelled as open and no field names are
fabricated.
additionalProperties: true
PaymentsOutProviderEnvelope:
type: object
description: |-
Open envelope for a Sage Payments Out provider webhook notification.
The Provider Webhook Messaging API reference defines the concrete
notification types and schemas; until those schemas are mirrored
into this AsyncAPI document the payload is modelled as open.
additionalProperties: true
Discovery needs no key. Ratings and market analysis are Pro.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we
store it to create your key and to recognise you if you sign in with another
provider. See our Privacy Policy and
Terms.