asyncapi: 3.0.0
info:
  title: Ingo Payments — IngoPay Webhooks
  version: 1.0.0
  description: >-
    Ingo delivers webhook events to your registered HTTPS endpoint via HTTP POST
    for IngoPay direct payment transactions. Return any 2xx status to
    acknowledge receipt. Non-2xx responses are retried every 60 minutes for up
    to 24 hours.
  contact:
    name: Ingo Payments Integrations
    url: https://developers.ingopayments.com
defaultContentType: application/json
servers:
  webhook:
    host: your-webhook-endpoint.example.com
    protocol: https
    description: Ingo delivers events via HTTP POST to your registered HTTPS endpoint.
channels:
  GatewayTransactionRecipientPaymentStatusCheckIssued:
    address: gateway.transaction.recipient.payment.status.check.issued
    title: Check Issued
    tags:
      - name: Webhooks
    description: Fired when Ingo issues a check for the payment.
    messages:
      GatewayTransactionRecipientPaymentStatusCheckIssuedMessage:
        $ref: >-
          #/components/messages/GatewayTransactionRecipientPaymentStatusCheckIssuedMessage
  GatewayTransactionRecipientPaymentStatusCheckPaid:
    address: gateway.transaction.recipient.payment.status.check.paid
    title: Check Paid
    tags:
      - name: Webhooks
    description: Fired when an issued check is cashed/paid.
    messages:
      GatewayTransactionRecipientPaymentStatusCheckPaidMessage:
        $ref: >-
          #/components/messages/GatewayTransactionRecipientPaymentStatusCheckPaidMessage
  GatewayTransactionRecipientPaymentStatusCheckCanceled:
    address: gateway.transaction.recipient.payment.status.check.canceled
    title: Check Canceled
    tags:
      - name: Webhooks
    description: Fired when an issued check is canceled.
    messages:
      GatewayTransactionRecipientPaymentStatusCheckCanceledMessage:
        $ref: >-
          #/components/messages/GatewayTransactionRecipientPaymentStatusCheckCanceledMessage
  GatewayTransactionRecipientPaymentStatusCheckStopped:
    address: gateway.transaction.recipient.payment.status.check.stopped
    title: Check Stopped
    tags:
      - name: Webhooks
    description: Fired when a stop payment is placed on an issued check.
    messages:
      GatewayTransactionRecipientPaymentStatusCheckStoppedMessage:
        $ref: >-
          #/components/messages/GatewayTransactionRecipientPaymentStatusCheckStoppedMessage
  GatewayTransactionRecipientStatusPaymentCheckReturned:
    address: gateway.transaction.recipient.status.payment.check.returned
    title: Check Returned
    tags:
      - name: Webhooks
    description: >-
      Fired when a check is returned due to positive pay exception or issuer
      rejection.
    messages:
      GatewayTransactionRecipientStatusPaymentCheckReturnedMessage:
        $ref: >-
          #/components/messages/GatewayTransactionRecipientStatusPaymentCheckReturnedMessage
  GatewayTransactionRecipientPaymentStatusReturned:
    address: gateway.transaction.recipient.payment.status.returned
    title: Payment Returned
    tags:
      - name: Webhooks
    description: Fired when a non-check payment is returned by the issuer.
    messages:
      GatewayTransactionRecipientPaymentStatusReturnedMessage:
        $ref: >-
          #/components/messages/GatewayTransactionRecipientPaymentStatusReturnedMessage
  GatewayTransactionRecipientVerificationOfacStatusSuspended:
    address: gateway.transaction.recipient.verification.ofac.status.suspended
    title: OFAC Suspended
    tags:
      - name: Webhooks
    description: >-
      Fired when an initial OFAC hit causes the payment to be suspended pending
      review.
    messages:
      GatewayTransactionRecipientVerificationOfacStatusSuspendedMessage:
        $ref: >-
          #/components/messages/GatewayTransactionRecipientVerificationOfacStatusSuspendedMessage
  GatewayTransactionRecipientVerificationOfacStatusCleared:
    address: gateway.transaction.recipient.verification.ofac.status.cleared
    title: OFAC Cleared
    tags:
      - name: Webhooks
    description: >-
      Fired when an OFAC suspension is resolved and the payment is cleared to
      proceed.
    messages:
      GatewayTransactionRecipientVerificationOfacStatusClearedMessage:
        $ref: >-
          #/components/messages/GatewayTransactionRecipientVerificationOfacStatusClearedMessage
  GatewayTransactionRecipientVerificationOfacStatusFailure:
    address: gateway.transaction.recipient.verification.ofac.status.failure
    title: OFAC Failure
    tags:
      - name: Webhooks
    description: Fired when an OFAC hit is confirmed and the transaction is terminated.
    messages:
      GatewayTransactionRecipientVerificationOfacStatusFailureMessage:
        $ref: >-
          #/components/messages/GatewayTransactionRecipientVerificationOfacStatusFailureMessage
operations:
  receiveGatewayTransactionRecipientPaymentStatusCheckIssued:
    action: receive
    channel:
      $ref: '#/channels/GatewayTransactionRecipientPaymentStatusCheckIssued'
    summary: Check Issued
    tags:
      - name: Payment Events
  receiveGatewayTransactionRecipientPaymentStatusCheckPaid:
    action: receive
    channel:
      $ref: '#/channels/GatewayTransactionRecipientPaymentStatusCheckPaid'
    summary: Check Paid
    tags:
      - name: Payment Events
  receiveGatewayTransactionRecipientPaymentStatusCheckCanceled:
    action: receive
    channel:
      $ref: '#/channels/GatewayTransactionRecipientPaymentStatusCheckCanceled'
    summary: Check Canceled
    tags:
      - name: Payment Events
  receiveGatewayTransactionRecipientPaymentStatusCheckStopped:
    action: receive
    channel:
      $ref: '#/channels/GatewayTransactionRecipientPaymentStatusCheckStopped'
    summary: Check Stopped
    tags:
      - name: Payment Events
  receiveGatewayTransactionRecipientStatusPaymentCheckReturned:
    action: receive
    channel:
      $ref: '#/channels/GatewayTransactionRecipientStatusPaymentCheckReturned'
    summary: Check Returned
    tags:
      - name: Payment Events
  receiveGatewayTransactionRecipientPaymentStatusReturned:
    action: receive
    channel:
      $ref: '#/channels/GatewayTransactionRecipientPaymentStatusReturned'
    summary: Payment Returned
    tags:
      - name: Payment Events
  receiveGatewayTransactionRecipientVerificationOfacStatusSuspended:
    action: receive
    channel:
      $ref: '#/channels/GatewayTransactionRecipientVerificationOfacStatusSuspended'
    summary: OFAC Suspended
    tags:
      - name: OFAC Verification Events
  receiveGatewayTransactionRecipientVerificationOfacStatusCleared:
    action: receive
    channel:
      $ref: '#/channels/GatewayTransactionRecipientVerificationOfacStatusCleared'
    summary: OFAC Cleared
    tags:
      - name: OFAC Verification Events
  receiveGatewayTransactionRecipientVerificationOfacStatusFailure:
    action: receive
    channel:
      $ref: '#/channels/GatewayTransactionRecipientVerificationOfacStatusFailure'
    summary: OFAC Failure
    tags:
      - name: OFAC Verification Events
components:
  messages:
    GatewayTransactionRecipientPaymentStatusCheckIssuedMessage:
      name: GatewayTransactionRecipientPaymentStatusCheckIssuedMessage
      title: Check Issued
      contentType: application/json
      payload:
        type: object
        required:
          - metadata
          - data
        properties:
          metadata:
            $ref: '#/components/schemas/WebhookMetadata'
          data:
            type: object
            required:
              - ancillary
              - event
            properties:
              ancillary:
                $ref: '#/components/schemas/IngoPayCorrelation'
              event:
                allOf:
                  - $ref: '#/components/schemas/WebhookEventBase'
                  - $ref: '#/components/schemas/EventCheckStatus'
      examples:
        - name: Check Issued
          payload:
            data:
              event:
                check_amount: '150.05'
                client_message: Success
                check_number: '100000001'
                status: '100'
              ancillary:
                participant_unique_id2: 111111111-2222-3333333-4444444444
                participant_unique_id1: 22222222-5555-3333333-4444444444
            metadata:
              id: prod1-123456-abcd-1234-ab12-c123d456e789
              topic_description: >-
                This event indicates that the check transaction status has been
                updated to check issued
              topic: gateway.transaction.recipient.payment.status.check.issued
              timestamp: 1605376542
              version: '1'
    GatewayTransactionRecipientPaymentStatusCheckPaidMessage:
      name: GatewayTransactionRecipientPaymentStatusCheckPaidMessage
      title: Check Paid
      contentType: application/json
      payload:
        type: object
        required:
          - metadata
          - data
        properties:
          metadata:
            $ref: '#/components/schemas/WebhookMetadata'
          data:
            type: object
            required:
              - ancillary
              - event
            properties:
              ancillary:
                $ref: '#/components/schemas/IngoPayCorrelation'
              event:
                allOf:
                  - $ref: '#/components/schemas/WebhookEventBase'
                  - $ref: '#/components/schemas/EventCheckStatus'
      examples:
        - name: Check Paid
          payload:
            data:
              ancillary:
                participant_unique_id1: d7cib2ts0b0c77c00uo0
                participant_unique_id2: d4nmvdn8enkc77fehmj0
              event:
                check_number: '0600001017'
                status: '100'
                check_amount: '20.78'
                client_message: Success
            metadata:
              topic: gateway.transaction.recipient.payment.status.check.paid
              topic_description: >-
                This event indicates that the check transaction status has been
                updated to check paid
              timestamp: 1777543385
              version: '1'
              id: f80c9280-6e9b-4de9-a66c-d60aa191da54
    GatewayTransactionRecipientPaymentStatusCheckCanceledMessage:
      name: GatewayTransactionRecipientPaymentStatusCheckCanceledMessage
      title: Check Canceled
      contentType: application/json
      payload:
        type: object
        required:
          - metadata
          - data
        properties:
          metadata:
            $ref: '#/components/schemas/WebhookMetadata'
          data:
            type: object
            required:
              - ancillary
              - event
            properties:
              ancillary:
                $ref: '#/components/schemas/IngoPayCorrelation'
              event:
                allOf:
                  - $ref: '#/components/schemas/WebhookEventBase'
                  - $ref: '#/components/schemas/EventCheckWithReason'
      examples:
        - name: Check Canceled
          payload:
            data:
              event:
                check_amount: '100.50'
                client_message: Success
                check_number: '100000001'
                reason_code: '75'
                status: '100'
              ancillary:
                participant_unique_id2: 111111111-2222-3333333-4444444444
                participant_unique_id1: 22222222-5555-3333333-4444444444
            metadata:
              id: prod1-123456-abcd-1234-ab12-c123d456e789
              topic_description: >-
                This event indicates that the check cancellation has been
                confirmed (by status report file)
              topic: gateway.transaction.recipient.payment.status.check.canceled
              timestamp: 1605283203
              version: '1'
    GatewayTransactionRecipientPaymentStatusCheckStoppedMessage:
      name: GatewayTransactionRecipientPaymentStatusCheckStoppedMessage
      title: Check Stopped
      contentType: application/json
      payload:
        type: object
        required:
          - metadata
          - data
        properties:
          metadata:
            $ref: '#/components/schemas/WebhookMetadata'
          data:
            type: object
            required:
              - ancillary
              - event
            properties:
              ancillary:
                $ref: '#/components/schemas/IngoPayCorrelation'
              event:
                allOf:
                  - $ref: '#/components/schemas/WebhookEventBase'
                  - $ref: '#/components/schemas/EventCheckWithReason'
      examples:
        - name: Check Stopped
          payload:
            data:
              event:
                reason_code: '77'
                client_message: Success
                check_amount: '100.50'
                status: '100'
                check_number: '100000001'
              ancillary:
                participant_unique_id2: 111111111-2222-3333333-4444444444
                tracer_token: ''
                participant_unique_id1: 22222222-5555-3333333-4444444444
            metadata:
              topic_description: >-
                This event indicates that the check stop has been confirmed (by
                status report file)
              id: prod1-123456-abcd-1234-ab12-c123d456e789
              version: '1'
              topic: gateway.transaction.recipient.payment.status.check.stopped
              timestamp: 1632248558
    GatewayTransactionRecipientStatusPaymentCheckReturnedMessage:
      name: GatewayTransactionRecipientStatusPaymentCheckReturnedMessage
      title: Check Returned
      contentType: application/json
      payload:
        type: object
        required:
          - metadata
          - data
        properties:
          metadata:
            $ref: '#/components/schemas/WebhookMetadata'
          data:
            type: object
            required:
              - ancillary
              - event
            properties:
              ancillary:
                $ref: '#/components/schemas/IngoPayCorrelation'
              event:
                allOf:
                  - $ref: '#/components/schemas/WebhookEventBase'
                  - $ref: '#/components/schemas/EventCheckWithReason'
      examples:
        - name: Check Returned
          payload:
            metadata:
              timestamp: 1758740163
              version: '1'
              topic_description: >-
                This event indicates that a check transaction has been returned
                due to positive pay exception
              topic: gateway.transaction.recipient.status.payment.check.returned
              id: sb01-e606fb9e-6f67-4f50-a43d-e8b37ac82182
            data:
              event:
                reason_code: '02'
                client_message: Payment Returned by Issuer
                status: '1114'
                check_amount: '1.05'
                check_number: '400000037'
              ancillary:
                participant_unique_id1: PARTNER-REF-001
                participant_unique_id2: PARTNER-REF-002
                session_id: ''
    GatewayTransactionRecipientPaymentStatusReturnedMessage:
      name: GatewayTransactionRecipientPaymentStatusReturnedMessage
      title: Payment Returned
      contentType: application/json
      payload:
        type: object
        required:
          - metadata
          - data
        properties:
          metadata:
            $ref: '#/components/schemas/WebhookMetadata'
          data:
            type: object
            required:
              - ancillary
              - event
            properties:
              ancillary:
                $ref: '#/components/schemas/IngoPayCorrelation'
              event:
                $ref: '#/components/schemas/WebhookEventBase'
      examples:
        - name: Payment Returned
          payload:
            data:
              ancillary:
                participant_unique_id2: 111111111-2222-3333333-4444444444
                session_id: ''
                participant_unique_id1: 22222222-5555-3333333-4444444444
              event:
                client_message: Payment Returned by Issuer
                status: '1114'
            metadata:
              version: '1'
              topic_description: >-
                This event reports that a previously completed payment to the
                customer has been returned by the account issuer.(Terminal)
              timestamp: 1751983752
              topic: gateway.transaction.recipient.payment.status.returned
              id: prod1-123456-abcd-1234-ab12-c123d456e789
    GatewayTransactionRecipientVerificationOfacStatusSuspendedMessage:
      name: GatewayTransactionRecipientVerificationOfacStatusSuspendedMessage
      title: OFAC Suspended
      contentType: application/json
      payload:
        type: object
        required:
          - metadata
          - data
        properties:
          metadata:
            $ref: '#/components/schemas/WebhookMetadata'
          data:
            type: object
            required:
              - ancillary
              - event
            properties:
              ancillary:
                $ref: '#/components/schemas/IngoPayCorrelation'
              event:
                $ref: '#/components/schemas/WebhookEventBase'
      examples:
        - name: OFAC Suspended
          payload:
            data:
              ancillary:
                participant_unique_id2: 111111111-2222-3333333-4444444444
                session_id: ''
                participant_unique_id1: 22222222-5555-3333333-4444444444
              event:
                client_message: Success - OFAC suspended
                status: '1106'
            metadata:
              version: '1'
              topic_description: >-
                This event reports an initial hit in OFAC screening resulting in
                a suspension of payment processing while the OFAC hit is
                verified.
              timestamp: 1752000309
              topic: gateway.transaction.recipient.verification.ofac.status.suspended
              id: prod1-123456-abcd-1234-ab12-c123d456e789
    GatewayTransactionRecipientVerificationOfacStatusClearedMessage:
      name: GatewayTransactionRecipientVerificationOfacStatusClearedMessage
      title: OFAC Cleared
      contentType: application/json
      payload:
        type: object
        required:
          - metadata
          - data
        properties:
          metadata:
            $ref: '#/components/schemas/WebhookMetadata'
          data:
            type: object
            required:
              - ancillary
              - event
            properties:
              ancillary:
                $ref: '#/components/schemas/IngoPayCorrelation'
              event:
                $ref: '#/components/schemas/WebhookEventBase'
      examples:
        - name: OFAC Cleared
          payload:
            data:
              ancillary:
                participant_unique_id2: 111111111-2222-3333333-4444444444
                session_id: ''
                participant_unique_id1: 22222222-5555-3333333-4444444444
              event:
                client_message: Recipient Verification OFAC Cleared
                status: '1107'
            metadata:
              version: '1'
              topic_description: >-
                This event reports the clearing of a transaction that was
                suspended due to an intial OFAC hit. Transaction processing will
                now resume.
              timestamp: 1752000654
              topic: gateway.transaction.recipient.verification.ofac.status.cleared
              id: prod1-123456-abcd-1234-ab12-c123d456e789
    GatewayTransactionRecipientVerificationOfacStatusFailureMessage:
      name: GatewayTransactionRecipientVerificationOfacStatusFailureMessage
      title: OFAC Failure
      contentType: application/json
      payload:
        type: object
        required:
          - metadata
          - data
        properties:
          metadata:
            $ref: '#/components/schemas/WebhookMetadata'
          data:
            type: object
            required:
              - ancillary
              - event
            properties:
              ancillary:
                $ref: '#/components/schemas/IngoPayCorrelation'
              event:
                $ref: '#/components/schemas/WebhookEventBase'
      examples:
        - name: OFAC Failure
          payload:
            metadata:
              version: '1'
              topic_description: >-
                This event reports the the confirmation of an initial hit in
                OFAC screening. The transaction will now be terminated.
              timestamp: 1734111708
              topic: gateway.transaction.recipient.verification.ofac.status.failure
              id: prod1-123456-abcd-1234-ab12-c123d456e789
            data:
              ancillary:
                participant_unique_id2: 111111111-2222-3333333-4444444444
                session_id: ''
                participant_unique_id1: 22222222-5555-3333333-4444444444
              event:
                client_message: Success
                status: '1108'
  schemas:
    WebhookMetadata:
      type: object
      required:
        - id
        - topic
        - topic_description
        - timestamp
        - version
      description: Delivery metadata present on every webhook event.
      properties:
        id:
          type: string
          maxLength: 50
          description: >-
            Ingo-assigned unique ID for this delivery. Use as your idempotency
            key to deduplicate retries.
          example: prod01-6aaa3079-c1ff-4cae-b77a-4b76026fc846
        topic:
          type: string
          maxLength: 150
          description: Topic name identifying the event type.
        topic_description:
          type: string
          maxLength: 250
          description: Human-readable description of the event.
        timestamp:
          type: integer
          description: Unix timestamp of the webhook delivery.
          example: 1777509495
        version:
          type: string
          maxLength: 5
          description: Payload contract version.
          example: '1'
    WebhookEventBase:
      type: object
      required:
        - status
        - client_message
      description: >-
        Core event outcome fields present on every webhook event. Additional
        event-specific properties may be present — see the individual event
        documentation for the complete schema.
      properties:
        status:
          type: string
          maxLength: 10
          description: Numeric status code for the event outcome.
        client_message:
          type: string
          maxLength: 250
          description: Human-readable description of the event outcome.
        attempt_count:
          type: integer
          description: >-
            Current delivery attempt number. Present when the event type has a
            configurable attempt counter.
          example: 1
        max_attempts:
          type: integer
          description: >-
            Maximum allowed attempts. Present when the event type has a
            configurable attempt counter.
          example: 3
    NotifyCorrelation:
      type: object
      required:
        - notification_id
        - participant_unique_id1
      description: >-
        Transaction correlation identifiers for Notify webhook events. Use these
        fields to match the event to a transaction in your system.
      properties:
        notification_id:
          type: string
          maxLength: 15
          description: Ingo-assigned unique identifier for the staged notification.
          example: '10042781'
        session_id:
          type: string
          maxLength: 50
          nullable: true
          description: Ingo-assigned session identifier, when applicable.
        participant_unique_id1:
          type: string
          maxLength: 100
          description: Your primary correlation ID from the original Notify request.
        participant_unique_id2:
          type: string
          maxLength: 100
          nullable: true
          description: Your optional secondary correlation ID.
        party_id:
          type: string
          maxLength: 36
          nullable: true
          description: >-
            Ingo-assigned ID for the specific party this event relates to.
            Present on multi-party (Notify v4) events.
    IngoPayCorrelation:
      type: object
      required:
        - participant_unique_id1
      description: >-
        Transaction correlation identifiers for IngoPay and Embedded iFrame
        webhook events. Use these fields to match the event to a transaction in
        your system.
      properties:
        tracer_token:
          type: string
          maxLength: 250
          nullable: true
          description: Ingo-assigned tracer identifier for the original request.
        session_id:
          type: string
          maxLength: 50
          nullable: true
          description: Ingo-assigned session identifier for the iFrame interaction.
        participant_unique_id1:
          type: string
          maxLength: 100
          description: Your primary correlation ID from the original request.
        participant_unique_id2:
          type: string
          maxLength: 100
          nullable: true
          description: Your optional secondary correlation ID.
    EventTokenizationSuccess:
      type: object
      required:
        - customer_account_token
        - account_type
        - last_4
        - account_id
        - issuers
      description: >-
        Account tokenization result. The latest contract version (v4) is
        documented here; earlier versions may omit account_id.
      properties:
        customer_account_token:
          type: string
          maxLength: 50
          description: >-
            Opaque token representing the tokenized account. Use in subsequent
            Process or Debit requests.
        account_type:
          type: string
          maxLength: 2
          description: Account type code (CA, AC, SD, RT, PD, PU, VE, BP, CK).
        last_4:
          type: string
          maxLength: 4
          description: Last four characters of the account number for identification.
        expiration_date:
          type: string
          maxLength: 4
          description: >-
            Expiration date in MMYY format. Present for card-based accounts
            only.
        account_id:
          type: string
          maxLength: 36
          description: Ingo-assigned unique identifier for this account.
        issuers:
          type: array
          description: >-
            Details about the account issuer(s). Typically one object per
            account.
          items:
            type: object
            properties:
              payee_id:
                type: string
                maxLength: 20
                description: Ingo-assigned ID for the payee/account issuer.
              payee_name:
                type: string
                maxLength: 100
                description: Name of the payee/account issuer.
              payee_address:
                type: string
                maxLength: 150
                description: Address of the payee/account issuer. May be empty.
              payee_city:
                type: string
                maxLength: 150
                description: City of the payee/account issuer. May be empty.
              payee_state:
                type: string
                maxLength: 2
                description: State of the payee/account issuer. May be empty.
              payee_zip:
                type: string
                maxLength: 10
                description: ZIP code of the payee/account issuer. May be empty.
              issuing_network:
                type: string
                maxLength: 10
                description: >-
                  Network the account was issued under (Visa, MasterCard, ACH,
                  etc.). "NA" if not applicable.
              credit_enabled:
                type: integer
                description: >-
                  1 if account can receive credits for this participant, 0
                  otherwise.
              debit_enabled:
                type: integer
                description: 1 if account can be debited for this participant, 0 otherwise.
              credit_info:
                type: object
                description: Credit disbursement details. Present when credit_enabled is 1.
                properties:
                  min:
                    type: string
                    description: Minimum amount the issuer will accept.
                  max:
                    type: string
                    description: Maximum amount the issuer will accept.
                  card_type:
                    type: string
                    description: >-
                      Type of card (credit, debit, prepaid, DDA, etc.). "NA" if
                      not applicable.
                  estimated_posting_time:
                    type: string
                    description: Human-readable estimated posting time.
                  estimated_posting_date:
                    type: string
                    description: Estimated posting date in MM/DD/YYYY format.
              debit_info:
                type: object
                description: Debit pull details. Present when debit_enabled is 1.
                properties:
                  min:
                    type: string
                    description: Minimum amount the issuer will accept.
                  max:
                    type: string
                    description: Maximum amount the issuer will accept.
                  card_type:
                    type: string
                    description: Type of card. "NA" if not applicable.
        bin:
          type: string
          maxLength: 8
          description: Bank Identification Number. Present for card-based accounts only.
        network_validation:
          type: object
          description: >-
            Reference data from network card validation. Present when network
            validation was performed.
          properties:
            validation_provider_id:
              type: string
              maxLength: 3
              description: 'Card validation provider: 1 = Visa, 3 = MasterCard.'
            name_validation:
              type: object
              description: Name match results.
              properties:
                name_match_status:
                  type: string
                  description: 1 = Name match performed, 2 = Not performed.
                name_match_decision:
                  type: string
                  description: 1 = Match, 2 = Partial, 3 = No match.
                first_name_match_decision:
                  type: string
                  description: 1 = Match, 2 = Partial, 3 = No match.
                last_name_match_decision:
                  type: string
                  description: 1 = Match, 2 = Partial, 3 = No match.
                middle_name_match_decision:
                  type: string
                  description: 1 = Match, 2 = Partial, 3 = No match.
        open_banking_finicity:
          type: object
          description: >-
            Open banking account identification for Finicity. Present when
            client is configured for Finicity.
          properties:
            customer_id:
              type: string
              maxLength: 50
              description: Finicity customer ID.
            account_id:
              type: string
              maxLength: 50
              description: Finicity account ID.
    EventRvdmResult:
      type: object
      required:
        - has_passed
        - was_skipped
        - field_results
      description: Recipient Verification Data Matching (RVDM) outcome.
      properties:
        has_passed:
          type: boolean
          description: Overall result of the RVDM attempt.
        was_skipped:
          type: boolean
          description: Whether RVDM was bypassed per client configuration.
        field_results:
          type: array
          description: Per-field match detail for each data element evaluated.
          items:
            type: object
            required:
              - field_name
              - is_matching
              - is_enabled
              - was_evaluated
              - client_provided_value
              - customer_provided_value
              - hard_fail_on_mismatch
            properties:
              field_name:
                type: string
                maxLength: 150
                description: Name of the field assessed.
              is_matching:
                type: boolean
                description: Whether the field values matched.
              is_enabled:
                type: boolean
                description: Whether this field was enabled for matching.
              was_evaluated:
                type: boolean
                description: Whether this field was evaluated during this attempt.
              client_provided_value:
                type: string
                maxLength: 150
                description: Value you submitted for this field.
              customer_provided_value:
                type: string
                maxLength: 150
                description: Value the customer entered during the iFrame interaction.
              hard_fail_on_mismatch:
                type: boolean
                description: Whether a mismatch on this field constitutes a hard failure.
    EventAuthenticationResult:
      type: object
      required:
        - has_passed
        - was_skipped
        - field_results
      description: >-
        Recipient authentication outcome. Covers RVDM-style data matching
        (field_label identifies each field assessed).
      properties:
        has_passed:
          type: boolean
          description: Overall result of the authentication attempt.
        was_skipped:
          type: boolean
          description: Whether authentication was bypassed per configuration.
        field_results:
          type: array
          description: Per-field match results.
          items:
            type: object
            required:
              - field_label
              - is_matching
              - hard_fail_on_mismatch
            properties:
              field_label:
                type: string
                maxLength: 50
                description: Display label of the field assessed.
              is_matching:
                type: boolean
                description: Whether the field values matched.
              hard_fail_on_mismatch:
                type: boolean
                description: Whether a mismatch constitutes a hard failure.
    EventPaypalVerification:
      type: object
      required:
        - has_passed
        - was_skipped
        - field_results
      description: PayPal account verification outcome.
      properties:
        has_passed:
          type: boolean
          description: Overall result of the PayPal account verification attempt.
        was_skipped:
          type: boolean
          description: Whether verification was bypassed per configuration.
        field_results:
          type: array
          description: Per-field verification results.
          items:
            type: object
            required:
              - field_name
              - is_matching
              - is_enabled
              - was_evaluated
              - client_provided_value
              - paypal_provided_value
              - hard_fail_on_mismatch
            properties:
              field_name:
                type: string
                maxLength: 150
                description: >-
                  Name of the field assessed (e.g. FirstName,
                  IsVerifiedAccount).
              is_matching:
                type: boolean
                description: Whether the field values matched.
              is_enabled:
                type: boolean
                description: Whether this field was enabled for matching.
              was_evaluated:
                type: boolean
                description: Whether this field was evaluated.
              client_provided_value:
                type: string
                maxLength: 150
                description: Value you submitted for this field.
              paypal_provided_value:
                type: string
                maxLength: 150
                description: Value returned by PayPal for this field.
              hard_fail_on_mismatch:
                type: boolean
                description: Whether a mismatch constitutes a hard failure.
    EventCheckStatus:
      type: object
      required:
        - check_number
        - check_amount
      description: Check transaction status detail.
      properties:
        check_number:
          type: string
          maxLength: 10
          description: Check serial number.
        check_amount:
          type: string
          maxLength: 10
          description: Check amount.
    EventCheckWithReason:
      type: object
      required:
        - check_number
        - check_amount
        - reason_code
      description: Check transaction status with reason.
      properties:
        check_number:
          type: string
          maxLength: 10
          description: Check serial number.
        check_amount:
          type: string
          maxLength: 10
          description: Check amount.
        reason_code:
          type: string
          maxLength: 10
          description: Reason code for the check action.
        reason_description:
          type: string
          maxLength: 250
          description: Description of the reason code.
    EventPaymentSuccess:
      type: object
      required:
        - account_id
      description: Successful payment disbursement detail.
      properties:
        account_id:
          type: string
          maxLength: 36
          description: Ingo-assigned unique identifier for the disbursed-to account.
    EventPaymentReturned:
      type: object
      required:
        - return_transaction_id
        - reason_code
        - reason_description
      description: Payment return detail.
      properties:
        return_transaction_id:
          type: string
          maxLength: 15
          description: >-
            Ingo-assigned unique transaction identifier for the return
            transaction.
        reason_code:
          type: string
          maxLength: 10
          description: Reason code for the return.
        reason_description:
          type: string
          maxLength: 250
          description: Description of the return reason.
    EventWithReason:
      type: object
      required:
        - reason_code
        - reason_description
      description: Event detail including a reason code and description.
      properties:
        reason_code:
          type:
            - string
            - integer
          description: Reason code.
        reason_description:
          type: string
          maxLength: 250
          description: Description associated with the reason code.
    EventSettlementAdjustment:
      type: object
      required:
        - reason_code
        - reason_description
        - adjustment_type
        - amount
        - transaction_id
      description: Settlement adjustment detail.
      properties:
        reason_code:
          type: string
          maxLength: 10
          description: Adjustment reason code.
        reason_description:
          type: string
          maxLength: 250
          description: Description associated with the reason code.
        adjustment_type:
          type: string
          maxLength: 20
          description: >-
            "credit" — credits your settlement account. "debit" — debits your
            settlement account.
          enum:
            - credit
            - debit
        amount:
          type: string
          maxLength: 10
          description: Transaction amount.
        transaction_id:
          type: string
          maxLength: 15
          description: >-
            Ingo-assigned unique transaction identifier for the original
            transaction.
    EventRolesChange:
      type: object
      required:
        - role_change
      description: Party role change detail.
      properties:
        role_change:
          type: array
          description: Array of role change objects, one per party whose role is changing.
          items:
            type: object
            required:
              - party_id
              - old_role
              - new_role
            properties:
              party_id:
                type: string
                maxLength: 36
                description: Ingo-assigned ID for the party whose role is changing.
              old_role:
                type: integer
                maxLength: 10
                description: Role ID of the previous role.
              new_role:
                type: integer
                maxLength: 10
                description: Role ID of the new role.
