DualEntry · AsyncAPI Specification

Dualentry Webhooks

Version

View Spec View on GitHub CompanyArtificial IntelligenceAccountingERPFinanceFinancial OperationsBookkeepingRevenue RecognitionFintechAsyncAPIWebhooksEvents

AsyncAPI Specification

dualentry-webhooks.yml Raw ↑
generated: '2026-07-18'
method: searched
source: https://docs.dualentry.com/accountants/integrations/webhooks
docs: https://docs.dualentry.com/accountants/integrations/webhooks
spec_type: Webhooks
surface: webhooks
transport: HTTPS POST to subscriber-registered endpoints
topics_catalog_endpoint: GET /public/v2/webhooks/topics/
registration:
  method: POST /public/v2/webhooks/
  body: '{"url": "https://your-app.example.com/webhook", "topics": ["core.customer/created"]}'
  signing_secret: returned once on creation, never retrievable again
topic_pattern: <app>.<Model>/<action>
actions: [created, updated, deleted]
example_topics:
- core.customer/created
- core.invoice/created
- core.invoice/updated
- core.bill/created
- core.journalentry/created
allowlisted_models_note: >-
  Topics are drawn from an explicit allowlist (customers, invoices, bills,
  journal entries, and other core records); the full live catalog is retrievable
  via the topics endpoint.
envelope:
  fields:
    event_id: unique event identifier
    api_version: dated API version string (e.g. 2026-06-27)
    topic: e.g. core.invoice/created
    object_type: e.g. core.Invoice
    object: '{ id: <record id> } — id reference only; full record fetched separately'
    webhook_uuid: subscription identifier
    created_at: ISO 8601 timestamp
signing:
  algorithm: HMAC-SHA256
  signed_payload: '"<timestamp>.<raw_body>"'
  encoding: hex
  headers:
    signature: Dualentry-Webhook-Signature-V1
    timestamp: Dualentry-Webhook-Request-Timestamp
    webhook_uuid: Dualentry-Webhook-Uuid
  replay_window_seconds: 300
  verification: recompute HMAC over exact raw body, constant-time compare, reject stale timestamps
delivery:
  guarantee: at-least-once
  backoff: exponential
  terminal_success: 2xx
  no_retry_statuses: [400, 401, 403, 404, 405, 410, 422]
  honor_retry_after: [429]
  retry_statuses: [5xx, timeouts]
  auto_disable: endpoints failing continuously for 5 days are auto-disabled (last_error=webhook_disabled)

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/dualentry-webhooks"
All asyncapi
curl "https://apis.io/api/v1/asyncapis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no email required.

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