Confido Legal · AsyncAPI Specification

Confido Legal Webhooks

Version 1.0.0

AsyncAPI description of the Confido Legal webhook surface, generated by API Evangelist from the provider's published webhook documentation. Confido Legal does not publish an AsyncAPI document of its own; every event name, payload field, header, signature algorithm and retry interval below is taken verbatim from https://docs.confidolegal.com/docs/webhooks/configure and https://docs.confidolegal.com/docs/webhooks/webhook-types. Confido POSTs an ARRAY of minimal payloads to the registered URL. Each payload carries identifiers only — the consumer then queries the GraphQL API for current state.

View Spec View on GitHub ComplianceDisbursementsGraphQLIOLTALawLawTechLegalLegal TechnologyPaymentsTrust AccountingAsyncAPIEventsWebhooks

Channels

webhookEndpoint
A single HTTPS endpoint receives every selected event type. The request body is an ARRAY of event payloads, not a single object. You receive nothing for types you have not selected in the portal.

Messages

TransactionCreated
Transaction created
Sent when a new Transaction is created.
TransactionFundsInTransit
TransactionFundsInTransit
Sent when a Transaction moves to FUNDS_IN_TRANSIT.
TransactionDeposited
TransactionDeposited
Sent when a Transaction is deposited in the Firm's account.
TransactionVoided
TransactionVoided
Sent when a Transaction is voided.
TransactionRefunded
TransactionRefunded
Sent when a Transaction is fully refunded.
TransactionPartiallyRefunded
TransactionPartiallyRefunded
Sent when a Transaction is partially refunded.
TransactionAchReturned
TransactionAchReturned
Sent when a settled ACH payment is returned by the bank and funds are reversed. Partial returns do not exist.
DisbursementUpdated
DisbursementUpdated
Sent when a disbursement is updated. Uniquely among Confido events the payload carries BOTH disbursement and oldDisbursement, so the consumer can diff the transition rather than re-query.
FirmUpdated
FirmUpdated
Sent when a Firm is updated, including every firm.status change.
StatementCreated
StatementCreated
Emitted when a monthly statement has been created for a Firm.
StatementUpdated
StatementUpdated
Emitted if a statement is updated. Documented as very unlikely — statements should be final at statement.created.
StoredPaymentMethodCreated
StoredPaymentMethodCreated
StoredPaymentMethodUpdated
StoredPaymentMethodUpdated
StoredPaymentMethodDeleted
StoredPaymentMethodDeleted
StoredDisbursementMethodCreated
StoredDisbursementMethodCreated
StoredDisbursementMethodUpdated
StoredDisbursementMethodUpdated
StoredDisbursementMethodDeleted
StoredDisbursementMethodDeleted

Servers

https
subscriber
The webhook URL YOU register in the Confido Legal Partner Portal under Settings > Webhooks, or with the webhookUrlCreate mutation. Confido is the publisher; your endpoint is the server that receives the POST.

AsyncAPI Specification

confido-legal-webhooks-asyncapi.yml Raw ↑
asyncapi: 3.0.0
info:
  title: Confido Legal Webhooks
  version: 1.0.0
  description: 'AsyncAPI description of the Confido Legal webhook surface, generated by API Evangelist

    from the provider''s published webhook documentation. Confido Legal does not publish an

    AsyncAPI document of its own; every event name, payload field, header, signature

    algorithm and retry interval below is taken verbatim from

    https://docs.confidolegal.com/docs/webhooks/configure and

    https://docs.confidolegal.com/docs/webhooks/webhook-types.


    Confido POSTs an ARRAY of minimal payloads to the registered URL. Each payload carries

    identifiers only — the consumer then queries the GraphQL API for current state.

    '
  contact:
    name: Confido Legal Support
    email: support@confidolegal.com
    url: https://confidolegal.com/contact
  externalDocs:
    url: https://docs.confidolegal.com/docs/webhooks/configure
x-provenance:
  generated: '2026-09-05'
  method: generated
  source: https://docs.confidolegal.com/docs/webhooks/webhook-types
  note: Generated from documentation, not harvested. Confido publishes no AsyncAPI file; probed /asyncapi.yaml
    and /asyncapi.json on docs.confidolegal.com and api.gravity-legal.com, both absent.
defaultContentType: application/json
servers:
  subscriber:
    host: your-application.example.com
    protocol: https
    description: The webhook URL YOU register in the Confido Legal Partner Portal under Settings > Webhooks,
      or with the webhookUrlCreate mutation. Confido is the publisher; your endpoint is the server that
      receives the POST.
channels:
  webhookEndpoint:
    address: /
    title: Registered webhook endpoint
    description: A single HTTPS endpoint receives every selected event type. The request body is an ARRAY
      of event payloads, not a single object. You receive nothing for types you have not selected in the
      portal.
    messages:
      DisbursementUpdated:
        $ref: '#/components/messages/DisbursementUpdated'
      FirmUpdated:
        $ref: '#/components/messages/FirmUpdated'
      StatementCreated:
        $ref: '#/components/messages/StatementCreated'
      StatementUpdated:
        $ref: '#/components/messages/StatementUpdated'
      StoredPaymentMethodCreated:
        $ref: '#/components/messages/StoredPaymentMethodCreated'
      StoredPaymentMethodUpdated:
        $ref: '#/components/messages/StoredPaymentMethodUpdated'
      StoredPaymentMethodDeleted:
        $ref: '#/components/messages/StoredPaymentMethodDeleted'
      StoredDisbursementMethodCreated:
        $ref: '#/components/messages/StoredDisbursementMethodCreated'
      StoredDisbursementMethodUpdated:
        $ref: '#/components/messages/StoredDisbursementMethodUpdated'
      StoredDisbursementMethodDeleted:
        $ref: '#/components/messages/StoredDisbursementMethodDeleted'
      TransactionCreated:
        $ref: '#/components/messages/TransactionCreated'
      TransactionFundsInTransit:
        $ref: '#/components/messages/TransactionFundsInTransit'
      TransactionDeposited:
        $ref: '#/components/messages/TransactionDeposited'
      TransactionVoided:
        $ref: '#/components/messages/TransactionVoided'
      TransactionRefunded:
        $ref: '#/components/messages/TransactionRefunded'
      TransactionPartiallyRefunded:
        $ref: '#/components/messages/TransactionPartiallyRefunded'
      TransactionAchReturned:
        $ref: '#/components/messages/TransactionAchReturned'
operations:
  receiveWebhook:
    action: receive
    channel:
      $ref: '#/channels/webhookEndpoint'
    title: Receive a Confido Legal webhook batch
    description: Verify the X-SIGNATURE HMAC-SHA512 header, deduplicate on eventId, and respond 2xx within
      5 seconds. Non-2xx or slower puts the event into the retry ladder (5 min, 20 min, 60 min, 1 day,
      dead letter). If an event dead-letters and the URL has had no successful response in 24 hours, Confido
      DISABLES the URL and it must be re-enabled in the Partner Portal.
    messages:
    - $ref: '#/channels/webhookEndpoint/messages/TransactionCreated'
    - $ref: '#/channels/webhookEndpoint/messages/DisbursementUpdated'
    - $ref: '#/channels/webhookEndpoint/messages/FirmUpdated'
components:
  schemas:
    EventEnvelope:
      type: object
      required:
      - data
      - type
      - firmId
      - eventId
      properties:
        data:
          type: object
          description: The specific data for this webhook type. Shape varies by event type.
        type:
          type: string
          description: The event type, e.g. transaction.created.
        firmId:
          type: string
          description: The id of the Firm this event is associated with.
        eventId:
          type: string
          description: Unique id for this event. USE IT AS YOUR IDEMPOTENCY KEY — manual resends reuse
            the same eventId, so a handler keyed on it is safe against retries and replays.
    IdRef:
      type: object
      required:
      - id
      properties:
        id:
          type: string
    DisbursementSnapshot:
      type: object
      description: Documented snapshot fields carried on disbursement.updated.
      properties:
        id:
          type: string
        allowedMethods:
          type: array
          items:
            type: string
            description: DisbursementMethod enum
        amount:
          type: integer
          description: Amount in cents.
        authorizedIdentities:
          type: array
          items:
            type: object
        clientId:
          type:
          - string
          - 'null'
        fundingAccountId:
          type: string
        matterId:
          type:
          - string
          - 'null'
        metadata:
          type:
          - object
          - 'null'
        publicKey:
          type:
          - string
          - 'null'
        status:
          type: string
          description: DisbursementStatus enum
  messageTraits:
    ConfidoWebhook:
      headers:
        type: object
        required:
        - X-SIGNATURE
        properties:
          X-SIGNATURE:
            type: string
            description: Base64-encoded HMAC-SHA512 of the JSON-serialized payload, keyed with the webhook
              secret from the Partner Portal. Verify before processing.
      bindings:
        http:
          method: POST
  messages:
    TransactionCreated:
      name: transaction.created
      title: Transaction created
      summary: Sent when a new Transaction is created.
      traits:
      - $ref: '#/components/messageTraits/ConfidoWebhook'
      payload:
        type: object
        allOf:
        - $ref: '#/components/schemas/EventEnvelope'
        properties:
          data:
            type: object
            properties:
              transaction:
                type: object
                description: Documented typing for this event is richer than the id-only shape used by
                  the other transaction events. Full typing is browsable in the sandbox playground under
                  root > Query > transaction.
                properties:
                  id:
                    type: string
                  achReturnCode:
                    type:
                    - string
                    - 'null'
                  achReturnReason:
                    type:
                    - string
                    - 'null'
                  aggregatePaymentLink:
                    $ref: '#/components/schemas/IdRef'
                  amountProcessed:
                    type: number
                  amountRefunded:
                    type: number
                  bankAccount:
                    $ref: '#/components/schemas/IdRef'
                  cardBrand:
                    type:
                    - string
                    - 'null'
                  client:
                    $ref: '#/components/schemas/IdRef'
                  createdOn:
                    type: string
                    format: date-time
                  disbursement:
                    $ref: '#/components/schemas/IdRef'
                  disbursementAmounts:
                    type:
                    - object
                    - 'null'
                  errorMessage:
                    type:
                    - string
                    - 'null'
                  firm:
                    $ref: '#/components/schemas/IdRef'
                  lastFour:
                    type:
                    - string
                    - 'null'
                  matter:
                    $ref: '#/components/schemas/IdRef'
                  payerEmail:
                    type:
                    - string
                    - 'null'
                  payerName:
                    type:
                    - string
                    - 'null'
                  payerNotes:
                    type:
                    - string
                    - 'null'
                  paymentMethod:
                    type: string
                    description: TransactionPaymentMethod enum
                  payment:
                    $ref: '#/components/schemas/IdRef'
                  paymentLink:
                    $ref: '#/components/schemas/IdRef'
                  settledOn:
                    type:
                    - string
                    - 'null'
                    format: date-time
                  standingLink:
                    $ref: '#/components/schemas/IdRef'
                  status_v2:
                    type: string
                    description: TransactionStatus2 enum
                  storedPaymentMethod:
                    $ref: '#/components/schemas/IdRef'
                  subscription:
                    $ref: '#/components/schemas/IdRef'
                  type:
                    type: string
                    description: TransactionType enum
    TransactionFundsInTransit:
      name: transaction.funds_in_transit
      summary: Sent when a Transaction moves to FUNDS_IN_TRANSIT.
      traits:
      - $ref: '#/components/messageTraits/ConfidoWebhook'
      payload:
        $ref: '#/components/schemas/EventEnvelope'
    TransactionDeposited:
      name: transaction.deposited
      summary: Sent when a Transaction is deposited in the Firm's account.
      traits:
      - $ref: '#/components/messageTraits/ConfidoWebhook'
      payload:
        $ref: '#/components/schemas/EventEnvelope'
    TransactionVoided:
      name: transaction.voided
      summary: Sent when a Transaction is voided.
      traits:
      - $ref: '#/components/messageTraits/ConfidoWebhook'
      payload:
        $ref: '#/components/schemas/EventEnvelope'
    TransactionRefunded:
      name: transaction.refunded
      summary: Sent when a Transaction is fully refunded.
      traits:
      - $ref: '#/components/messageTraits/ConfidoWebhook'
      payload:
        $ref: '#/components/schemas/EventEnvelope'
    TransactionPartiallyRefunded:
      name: transaction.partially_refunded
      summary: Sent when a Transaction is partially refunded.
      traits:
      - $ref: '#/components/messageTraits/ConfidoWebhook'
      payload:
        $ref: '#/components/schemas/EventEnvelope'
    TransactionAchReturned:
      name: transaction.ach_returned
      summary: Sent when a settled ACH payment is returned by the bank and funds are reversed. Partial
        returns do not exist.
      traits:
      - $ref: '#/components/messageTraits/ConfidoWebhook'
      payload:
        $ref: '#/components/schemas/EventEnvelope'
    DisbursementUpdated:
      name: disbursement.updated
      summary: Sent when a disbursement is updated. Uniquely among Confido events the payload carries
        BOTH disbursement and oldDisbursement, so the consumer can diff the transition rather than re-query.
      traits:
      - $ref: '#/components/messageTraits/ConfidoWebhook'
      payload:
        type: object
        allOf:
        - $ref: '#/components/schemas/EventEnvelope'
        properties:
          data:
            type: object
            properties:
              disbursement:
                $ref: '#/components/schemas/DisbursementSnapshot'
              oldDisbursement:
                $ref: '#/components/schemas/DisbursementSnapshot'
    FirmUpdated:
      name: firm.updated
      summary: Sent when a Firm is updated, including every firm.status change.
      traits:
      - $ref: '#/components/messageTraits/ConfidoWebhook'
      payload:
        $ref: '#/components/schemas/EventEnvelope'
    StatementCreated:
      name: statement.created
      summary: Emitted when a monthly statement has been created for a Firm.
      traits:
      - $ref: '#/components/messageTraits/ConfidoWebhook'
      payload:
        $ref: '#/components/schemas/EventEnvelope'
    StatementUpdated:
      name: statement.updated
      summary: Emitted if a statement is updated. Documented as very unlikely — statements should be final
        at statement.created.
      traits:
      - $ref: '#/components/messageTraits/ConfidoWebhook'
      payload:
        $ref: '#/components/schemas/EventEnvelope'
    StoredPaymentMethodCreated:
      name: stored_payment_method.created
      traits:
      - $ref: '#/components/messageTraits/ConfidoWebhook'
      payload:
        $ref: '#/components/schemas/EventEnvelope'
    StoredPaymentMethodUpdated:
      name: stored_payment_method.updated
      traits:
      - $ref: '#/components/messageTraits/ConfidoWebhook'
      payload:
        $ref: '#/components/schemas/EventEnvelope'
    StoredPaymentMethodDeleted:
      name: stored_payment_method.deleted
      traits:
      - $ref: '#/components/messageTraits/ConfidoWebhook'
      payload:
        $ref: '#/components/schemas/EventEnvelope'
    StoredDisbursementMethodCreated:
      name: stored_disbursement_method.created
      traits:
      - $ref: '#/components/messageTraits/ConfidoWebhook'
      payload:
        $ref: '#/components/schemas/EventEnvelope'
    StoredDisbursementMethodUpdated:
      name: stored_disbursement_method.updated
      traits:
      - $ref: '#/components/messageTraits/ConfidoWebhook'
      payload:
        $ref: '#/components/schemas/EventEnvelope'
    StoredDisbursementMethodDeleted:
      name: stored_disbursement_method.deleted
      traits:
      - $ref: '#/components/messageTraits/ConfidoWebhook'
      payload:
        $ref: '#/components/schemas/EventEnvelope'

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/confido-legal-webhooks-asyncapi"
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 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.