Skip to content
Sections

Bank callbacks

Ingest a verified Plaid bank-feed event

POST/financial-bank-provider-webhooks/plaid

Verifies Plaid ES256 key rotation, raw-body SHA-256, environment, timestamp, and replay identity before recording immutable receipt evidence and queuing incremental sync.

Authentication

plaid-verification: <PLAID_VERIFICATION>

Plaid ES256 verification JWT whose request-body hash, key identifier, environment, and issue time are validated before ingestion.

Connection guide

Parameters

plaid-verificationHeader · Required

Plaid ES256 verification JWT whose request-body hash, key identifier, environment, and issue time are validated before ingestion.

string
Full definition
{
  "type": "string",
  "example": "example"
}
Plaid-VerificationHeader · Required

Plaid ES256 JWT binding the exact raw request body hash and issue time.

string
Full definition
{
  "type": "string",
  "example": "example"
}

Request body

Required

Exact Plaid JSON webhook body verified against its raw SHA-256 digest.

application/json

object
Full definition
{
  "type": "object",
  "additionalProperties": {
    "$ref": "#/components/schemas/JsonValue"
  },
  "example": {
    "exampleKey": "example"
  }
}

Responses

200The verified webhook was accepted or recognized as an exact replay.
FinancialBankWebhookResultDto
Full definition
{
  "$ref": "#/components/schemas/FinancialBankWebhookResultDto"
}
Example response · 200 · application/json
{
  "accepted": true,
  "replay": true
}

Schemas

JsonValue

Recursively JSON-safe value used only where the owning contract intentionally allows free-form structured data.

Full definition
{
  "oneOf": [
    {
      "type": "string",
      "nullable": true,
      "example": "example"
    },
    {
      "type": "number",
      "example": 0
    },
    {
      "type": "boolean",
      "example": true
    },
    {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/JsonValue"
      },
      "example": [
        "example"
      ]
    },
    {
      "type": "object",
      "additionalProperties": {
        "$ref": "#/components/schemas/JsonValue"
      },
      "example": {
        "exampleKey": "example"
      }
    }
  ],
  "description": "Recursively JSON-safe value used only where the owning contract intentionally allows free-form structured data.",
  "example": "example"
}
FinancialBankWebhookResultDto

Source-owned Finance PRO representation of financial bank webhook result.

acceptedRequired

True after the signed provider callback passes environment, timestamp, body, and replay validation.

boolean
Full definition
{
  "type": "boolean",
  "description": "True after the signed provider callback passes environment, timestamp, body, and replay validation.",
  "example": true
}
replayRequired

True when the callback matches an already accepted immutable receipt and causes no duplicate processing.

boolean
Full definition
{
  "type": "boolean",
  "description": "True when the callback matches an already accepted immutable receipt and causes no duplicate processing.",
  "example": true
}
Full definition
{
  "type": "object",
  "properties": {
    "accepted": {
      "type": "boolean",
      "description": "True after the signed provider callback passes environment, timestamp, body, and replay validation.",
      "example": true
    },
    "replay": {
      "type": "boolean",
      "description": "True when the callback matches an already accepted immutable receipt and causes no duplicate processing.",
      "example": true
    }
  },
  "required": [
    "accepted",
    "replay"
  ],
  "description": "Source-owned Finance PRO representation of financial bank webhook result.",
  "example": {
    "accepted": true,
    "replay": true
  }
}

Hallify uses essential cookies and optional analytics.

Essential cookies keep sign-in, locale, and theme preferences working. Analytics is off until you choose to allow it.