Rutter · AsyncAPI Specification

Rutter Webhooks

Version

View Spec View on GitHub AccountingB2BCommerceFinancial DataPaymentsUnified APIHRISAsyncAPIEvents

AsyncAPI Specification

Raw ↑
generated: '2026-11-05'
method: searched
source:
  - https://docs.rutter.com/implementation-guides/webhooks
  - https://docs.rutter.com/rest/2024-08-31/basics#webhooks
  - https://help.rutter.com/articles/5827777992-how-do-rutter-webhooks-work
  - https://help.rutter.com/articles/9212187474-how-do-i-set-up-and-receive-webhooks
name: Rutter webhooks
summary: >-
  Rutter emits webhooks for connection status changes and for platform object creation/update/deletion computed on
  each incremental sync, with real-time delivery for QuickBooks Online, Xero and Sage Intacct. Every payload carries a
  type and a code; webhook URLs and payload versions are configured in the dashboard (and readable via the
  /configs/webhooks and /logs/webhooks operations). No AsyncAPI document is published.
asyncapi_published: false
configuration:
  dashboard: Webhook URLs and the webhook payload version are set in the Rutter Dashboard
  api: listWebhooks (GET /configs/webhooks), fetchWebhooksIdById, listWebhookLogs (GET /logs/webhooks), fetchWebhookLog, listEvents (GET /events)
delivery:
  signature_header: X-Rutter-Signature
  signature_scheme: 'sha256= prefix + base64(HMAC-SHA256(payload, organization client secret))'
  rotation_header: 'X-Rutter-Signatures — comma-separated list of all currently active signatures; carries both new and expiring secrets during a client-secret rotation grace period'
  verification: 'Split X-Rutter-Signatures on ", "; compute sha256= + base64(HMAC-SHA256(payload, secret)) for each active client secret; accept if any matches.'
  response_required: 2xx within 5 seconds
  retries:
    policy: exponential backoff with jitter (up to 10 seconds), up to 6 retries, continuing for up to 15 minutes from the webhook's creation time, then marked permanently failed
    schedule:
      - { attempt: 1st retry, delay: ~15s, elapsed: ~15s }
      - { attempt: 2nd retry, delay: ~25s, elapsed: ~40s }
      - { attempt: 3rd retry, delay: ~45s, elapsed: ~1.5 min }
      - { attempt: 4th retry, delay: ~1.5 min, elapsed: ~3 min }
      - { attempt: 5th retry, delay: ~3 min, elapsed: ~6 min }
      - { attempt: 6th retry, delay: ~5.5 min, elapsed: ~11 min }
  realtime_platforms: [QuickBooks Online, Xero, Sage Intacct]
  job_webhook: Both synchronous and asynchronous write requests are backed by a job; a webhook fires to configured URLs when the job succeeds.
events:
  - type: CONNECTION
    codes: [INITIAL_UPDATE, HISTORICAL_UPDATE, INCREMENTAL_SYNC_COMPLETED, CONNECTION_AUTHENTICATED, CONNECTION_UPDATED, CONNECTION_NEEDS_UPDATE, CONNECTION_DISABLED, CONNECTION_ERROR, CONNECTION_LINK_ERROR]
    note: Fetching data before INITIAL_UPDATE returns PRODUCT_NOT_READY.
  - type: PRODUCT
    codes: [PRODUCT_READY, PRODUCT_FINISH_FAILED, PRODUCT_CREATED, PRODUCT_UPDATED, PRODUCT_DELETED]
  - type: ACCOUNT
    codes: [ACCOUNT_CREATED, ACCOUNT_UPDATED]
  - type: BILL
    codes: [BILL_CREATED, BILL_UPDATED, BILL_DELETED]
  - type: BILL_PAYMENT
    codes: [BILL_PAYMENT_CREATED, BILL_PAYMENT_UPDATED]
  - type: CUSTOMER
    codes: [CUSTOMER_CREATED, CUSTOMER_UPDATED]
  - type: INVOICE
    codes: [INVOICE_CREATED, INVOICE_UPDATED]
  - type: INVOICE_CREDIT_MEMO
    codes: [INVOICE_CREDIT_MEMO_CREATED, INVOICE_CREDIT_MEMO_UPDATED]
  - type: JOURNAL_ENTRY
    codes: [JOURNAL_ENTRY_CREATED, JOURNAL_ENTRY_UPDATED]
  - type: VENDOR
    codes: [VENDOR_CREATED, VENDOR_UPDATED]
  - type: ORDER
    codes: [ORDER_CREATED, ORDER_UPDATED, ORDER_DELETED]
  - type: STORE
    codes: [STORE_UPDATED]

Work with this as data

Every AsyncAPI spec here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for asyncapi

4 MCP tools reach this
  • find_asyncapisBrowse and filter every AsyncAPI spec in the catalog.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This AsyncAPI spec
curl "https://apis.io/api/v1/asyncapis/rutter-webhooks"
All asyncapi
curl "https://apis.io/api/v1/asyncapis?limit=25"

Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.

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.

A second provider on the same verified email joins the account you already have.