> ## Documentation Index
> Fetch the complete documentation index at: https://docs.paypathiq.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Submit a bounded asynchronous batch

> Requires the write scope of every kind in the batch (customers:write, receivables:write, payment_observations:write, financial_corrections:write). Queues up to 100 records, each the exact body of its synchronous operation, for asynchronous processing in array order. 202 acknowledges queued work only: it does not mean any record was accepted. Each record runs through the same authorization, schema and canonical operation as its synchronous route, with grants rechecked when it runs. A record whose declared dependency did not succeed is never attempted. A retry with the same identifier and an identical body returns the current state with 200 and queues nothing new, so a lost acknowledgement is safe to retry. A batch never declares a complete book.



## OpenAPI

````yaml /generated/inbound-api-v1.openapi.json put /v1/clients/{clientCode}/batches/{externalBatchId}
openapi: 3.1.0
info:
  description: >-
    Send Customers, Receivables, and Payment observations and related financial
    evidence from your source system to PayPathIQ, one record at a time or as
    bounded asynchronous batches, and read back changes. Every operation listed
    here is implemented; capabilities that are not implemented are not listed.
    Start in sandbox with a sandbox key and synthetic data. Every error type
    links to a page at https://docs.paypathiq.com/problems/{code}.
  title: PayPathIQ Inbound Receivables API
  version: 1.0.0
servers:
  - description: Sandbox
    url: https://api.sandbox.paypathiq.com
  - description: Production
    url: https://api.paypathiq.com
security:
  - BearerAuth: []
tags:
  - description: >-
      PayPathIQ-owned delivery of receipts to the accounting Source, with
      acknowledgement kept separate.
    name: Receipt delivery
  - description: People and businesses that owe one Client.
    name: Customers
  - description: Independently recoverable Receivables.
    name: Receivables
  - description: Immutable evidence of external payments, refunds, and reversals.
    name: Payment observations
  - description: >-
      Ordered Source balance snapshots for transaction and snapshot-only
      connections.
    name: Balance snapshots
  - description: >-
      Bounded asynchronous ingestion of up to 100 records with exact per-record
      outcomes.
    name: Batches
  - description: >-
      Verified complete-book declarations that flag and hold Receivables missing
      from the book.
    name: Complete books
  - description: Durable, resumable record of committed Customer and Receivable changes.
    name: Changes
  - description: >-
      Optional signed, minimal notifications that a Customer or Receivable
      changed.
    name: Webhooks
  - description: >-
      Fixed-amount hosted payment pages through the Client's own payment
      provider merchant.
    name: Payment requests
  - description: >-
      Partner-owned delivery of confirmed Payments to accounting, kept separate
      from accounting acceptance.
    name: Payment delivery
  - description: Explicit Receivable pause and closure commands.
    name: Receivable lifecycle
  - description: >-
      Explicit, revisioned instructions that let PayPathIQ begin recovery for a
      Receivable.
    name: Recovery instructions
  - description: >-
      Permissioned working collection position, holds, commitments and action
      outcomes, separate from the Source representation.
    name: Collection summaries
  - description: Whether accepted source evidence is recent enough to act on.
    name: Source freshness
  - description: This machine-readable API contract.
    name: Specification
paths:
  /v1/clients/{clientCode}/batches/{externalBatchId}:
    put:
      tags:
        - Batches
      summary: Submit a bounded asynchronous batch
      description: >-
        Requires the write scope of every kind in the batch (customers:write,
        receivables:write, payment_observations:write,
        financial_corrections:write). Queues up to 100 records, each the exact
        body of its synchronous operation, for asynchronous processing in array
        order. 202 acknowledges queued work only: it does not mean any record
        was accepted. Each record runs through the same authorization, schema
        and canonical operation as its synchronous route, with grants rechecked
        when it runs. A record whose declared dependency did not succeed is
        never attempted. A retry with the same identifier and an identical body
        returns the current state with 200 and queues nothing new, so a lost
        acknowledgement is safe to retry. A batch never declares a complete
        book.
      operationId: putBatch
      parameters:
        - description: >-
            Stable non-sensitive Client code authorized by the Integration
            grant.
          in: path
          name: clientCode
          required: true
          schema:
            $ref: '#/components/schemas/ExternalResourceId'
        - description: >-
            Caller-assigned identifier of this batch submission. Reusing it with
            an identical body is a safe retry.
          in: path
          name: externalBatchId
          required: true
          schema:
            $ref: '#/components/schemas/ExternalResourceId'
      requestBody:
        description: One uncompressed resource representation, limited to 256 KiB.
        content:
          application/json:
            example:
              records:
                - recordId: r1
                  kind: customer
                  externalId: CUS_123
                  body:
                    contacts:
                      - address:
                          countryCode: IE
                          line1: 1 Example Street
                          line2: Example Building
                          locality: Dublin
                          postalCode: D02 X285
                          region: Dublin
                          type: home
                        email:
                          address: avery@example.test
                          type: personal
                        externalContactId: CON_7F3K2Q
                        fullName: Avery Example
                        isCustomerSelf: true
                        isMain: true
                        phone:
                          number: '+35315550123'
                          type: mobile
                    name:
                      firstName: Avery
                      lastName: Example
                    sourceReference: member-ref-example
                    type: person
                - recordId: r2
                  kind: receivable
                  externalId: REC_123
                  dependsOn:
                    - r1
                  body:
                    financialType: loan_balance
                    sourceRevision: 1
                    balanceBreakdown:
                      costs:
                        amount: '0.00'
                        currency: EUR
                      fees:
                        amount: '50.00'
                        currency: EUR
                      interest:
                        amount: '200.00'
                        currency: EUR
                      principal:
                        amount: '1000.00'
                        currency: EUR
                    creditUnion:
                      arrearsAmount:
                        amount: '1250.00'
                        currency: EUR
                      contractualInstalment:
                        amount:
                          amount: '125.00'
                          currency: EUR
                        frequency: monthly
                      defaultDate: '2026-07-01'
                      loanAccountReference: loan-ref-example
                      loanType: personal_loan
                      totalOutstandingAmount:
                        amount: '4000.00'
                        currency: EUR
                    dueDate: '2026-08-01'
                    recoverableAmount:
                      amount: '1250.00'
                      currency: EUR
                    responsibleCustomers:
                      - externalCustomerId: CUS_123
                        role: primary
                    sourceReference: receivable-ref-example
                - recordId: r3
                  kind: payment_observation
                  externalId: PAY_123
                  dependsOn:
                    - r2
                  body:
                    allocations:
                      - amount:
                          amount: '250.00'
                          currency: EUR
                        externalReceivableId: REC_123
                    amount:
                      amount: '300.00'
                      currency: EUR
                    effectiveAt: '2026-08-29T11:45:00Z'
                    externalCustomerId: CUS_123
                    method: bank_transfer
                    sourceReference: payment-ref-example
                    type: payment
            schema:
              $ref: '#/components/schemas/Batch'
        required: true
      responses:
        '200':
          content:
            application/json:
              example:
                externalBatchId: BATCH_2026_10_15
                status: partially_succeeded
                bookCompleteness: not_declared
                submittedAt: '2026-10-15T02:00:00.000Z'
                completedAt: '2026-10-15T02:00:07.000Z'
                counts:
                  total: 3
                  pending: 0
                  succeeded: 1
                  failed: 1
                  dependencyFailed: 1
                records:
                  - position: 1
                    recordId: r1
                    kind: customer
                    externalId: CUS_123
                    status: succeeded
                    httpStatus: 201
                  - position: 2
                    recordId: r2
                    kind: receivable
                    externalId: REC_123
                    status: failed
                    httpStatus: 422
                    problem:
                      type: profile_mismatch
                  - position: 3
                    recordId: r3
                    kind: payment_observation
                    externalId: PAY_123
                    status: dependency_failed
                    blockedBy: r2
              schema:
                $ref: '#/components/schemas/BatchResponse'
          description: Identical safe retry; current progress.
          headers:
            Cache-Control:
              description: Integration-facing responses are never cached.
              schema:
                const: no-store
                type: string
            PayPathIQ-Api-Version:
              description: >-
                Public API contract version; industry profile is fixed by the
                current Integration grant.
              schema:
                type: string
                const: v1
            X-Request-Id:
              description: PayPathIQ-generated support correlation identifier.
              schema:
                format: uuid
                type: string
        '202':
          content:
            application/json:
              example:
                externalBatchId: BATCH_2026_10_15
                status: queued
                bookCompleteness: not_declared
                submittedAt: '2026-10-15T02:00:00.000Z'
                counts:
                  total: 3
                  pending: 3
                  succeeded: 0
                  failed: 0
                  dependencyFailed: 0
                records:
                  - position: 1
                    recordId: r1
                    kind: customer
                    externalId: CUS_123
                    status: pending
                  - position: 2
                    recordId: r2
                    kind: receivable
                    externalId: REC_123
                    status: pending
                  - position: 3
                    recordId: r3
                    kind: payment_observation
                    externalId: PAY_123
                    status: pending
              schema:
                $ref: '#/components/schemas/BatchResponse'
          description: Batch durably queued. No record has been accepted yet.
          headers:
            Cache-Control:
              description: Integration-facing responses are never cached.
              schema:
                const: no-store
                type: string
            PayPathIQ-Api-Version:
              description: >-
                Public API contract version; industry profile is fixed by the
                current Integration grant.
              schema:
                type: string
                const: v1
            X-Request-Id:
              description: PayPathIQ-generated support correlation identifier.
              schema:
                format: uuid
                type: string
        '400':
          content:
            application/problem+json:
              examples:
                malformed_json:
                  value:
                    detail: Request body is not valid JSON.
                    requestId: 29400000-0000-4000-8000-000000000001
                    status: 400
                    title: Request body is not valid JSON.
                    type: https://docs.paypathiq.com/problems/malformed_json
              schema:
                $ref: '#/components/schemas/Problem'
          description: Request body is not valid JSON.
          headers:
            Cache-Control:
              description: Integration-facing responses are never cached.
              schema:
                const: no-store
                type: string
            PayPathIQ-Api-Version:
              description: >-
                Public API contract version; industry profile is fixed by the
                current Integration grant.
              schema:
                type: string
                const: v1
            X-Request-Id:
              description: PayPathIQ-generated support correlation identifier.
              schema:
                format: uuid
                type: string
        '401':
          content:
            application/problem+json:
              examples:
                invalid_api_key:
                  value:
                    detail: >-
                      API key is invalid, inactive, revoked, or for another
                      environment.
                    requestId: 29400000-0000-4000-8000-000000000001
                    status: 401
                    title: >-
                      API key is invalid, inactive, revoked, or for another
                      environment.
                    type: https://docs.paypathiq.com/problems/invalid_api_key
              schema:
                $ref: '#/components/schemas/Problem'
          description: API key is invalid, inactive, revoked, or for another environment.
          headers:
            Cache-Control:
              description: Integration-facing responses are never cached.
              schema:
                const: no-store
                type: string
            PayPathIQ-Api-Version:
              description: >-
                Public API contract version; industry profile is fixed by the
                current Integration grant.
              schema:
                type: string
                const: v1
            X-Request-Id:
              description: PayPathIQ-generated support correlation identifier.
              schema:
                format: uuid
                type: string
        '403':
          content:
            application/problem+json:
              examples:
                client_scope_denied:
                  value:
                    detail: >-
                      The Client code is unknown, the grant lacks the required
                      scope, or the calling address is outside the grant's IP
                      allowlist.
                    requestId: 29400000-0000-4000-8000-000000000001
                    status: 403
                    title: >-
                      The Client code is unknown, the grant lacks the required
                      scope, or the calling address is outside the grant's IP
                      allowlist.
                    type: https://docs.paypathiq.com/problems/client_scope_denied
              schema:
                $ref: '#/components/schemas/Problem'
          description: >-
            The Client code is unknown, the grant lacks the required scope, or
            the calling address is outside the grant's IP allowlist.
          headers:
            Cache-Control:
              description: Integration-facing responses are never cached.
              schema:
                const: no-store
                type: string
            PayPathIQ-Api-Version:
              description: >-
                Public API contract version; industry profile is fixed by the
                current Integration grant.
              schema:
                type: string
                const: v1
            X-Request-Id:
              description: PayPathIQ-generated support correlation identifier.
              schema:
                format: uuid
                type: string
        '409':
          content:
            application/problem+json:
              examples:
                batch_conflict:
                  value:
                    detail: >-
                      This batch identifier already holds a different
                      submission.
                    requestId: 29400000-0000-4000-8000-000000000001
                    status: 409
                    title: >-
                      This batch identifier already holds a different
                      submission.
                    type: https://docs.paypathiq.com/problems/batch_conflict
              schema:
                $ref: '#/components/schemas/Problem'
          description: This batch identifier already holds a different submission.
          headers:
            Cache-Control:
              description: Integration-facing responses are never cached.
              schema:
                const: no-store
                type: string
            PayPathIQ-Api-Version:
              description: >-
                Public API contract version; industry profile is fixed by the
                current Integration grant.
              schema:
                type: string
                const: v1
            X-Request-Id:
              description: PayPathIQ-generated support correlation identifier.
              schema:
                format: uuid
                type: string
        '413':
          content:
            application/problem+json:
              examples:
                request_too_large:
                  value:
                    detail: Request body exceeds the 256 KiB resource limit.
                    requestId: 29400000-0000-4000-8000-000000000001
                    status: 413
                    title: Request body exceeds the 256 KiB resource limit.
                    type: https://docs.paypathiq.com/problems/request_too_large
              schema:
                $ref: '#/components/schemas/Problem'
          description: Request body exceeds the 256 KiB resource limit.
          headers:
            Cache-Control:
              description: Integration-facing responses are never cached.
              schema:
                const: no-store
                type: string
            PayPathIQ-Api-Version:
              description: >-
                Public API contract version; industry profile is fixed by the
                current Integration grant.
              schema:
                type: string
                const: v1
            X-Request-Id:
              description: PayPathIQ-generated support correlation identifier.
              schema:
                format: uuid
                type: string
        '415':
          content:
            application/problem+json:
              examples:
                unsupported_media_type:
                  value:
                    detail: >-
                      Media type or content encoding is unsupported. Send
                      uncompressed application/json for PUT and POST, and
                      application/merge-patch+json for PATCH.
                    requestId: 29400000-0000-4000-8000-000000000001
                    status: 415
                    title: >-
                      Media type or content encoding is unsupported. Send
                      uncompressed application/json for PUT and POST, and
                      application/merge-patch+json for PATCH.
                    type: https://docs.paypathiq.com/problems/unsupported_media_type
              schema:
                $ref: '#/components/schemas/Problem'
          description: >-
            Media type or content encoding is unsupported. Send uncompressed
            application/json for PUT and POST, and application/merge-patch+json
            for PATCH.
          headers:
            Cache-Control:
              description: Integration-facing responses are never cached.
              schema:
                const: no-store
                type: string
            PayPathIQ-Api-Version:
              description: >-
                Public API contract version; industry profile is fixed by the
                current Integration grant.
              schema:
                type: string
                const: v1
            X-Request-Id:
              description: PayPathIQ-generated support correlation identifier.
              schema:
                format: uuid
                type: string
        '422':
          content:
            application/problem+json:
              examples:
                validation_error:
                  value:
                    detail: >-
                      Route parameters or the representation are invalid. Route
                      parameters are checked before authentication. Field errors
                      carry a code such as invalid_format, unrecognized_keys,
                      custom, sensitive_external_id, or
                      sensitive_source_reference.
                    errors:
                      - code: invalid_format
                        detail: Invalid ISO date
                        pointer: /dueDate
                    requestId: 29400000-0000-4000-8000-000000000001
                    status: 422
                    title: >-
                      Route parameters or the representation are invalid. Route
                      parameters are checked before authentication. Field errors
                      carry a code such as invalid_format, unrecognized_keys,
                      custom, sensitive_external_id, or
                      sensitive_source_reference.
                    type: https://docs.paypathiq.com/problems/validation_error
              schema:
                $ref: '#/components/schemas/Problem'
          description: >-
            Route parameters or the representation are invalid. Route parameters
            are checked before authentication. Field errors carry a code such as
            invalid_format, unrecognized_keys, custom, sensitive_external_id, or
            sensitive_source_reference.
          headers:
            Cache-Control:
              description: Integration-facing responses are never cached.
              schema:
                const: no-store
                type: string
            PayPathIQ-Api-Version:
              description: >-
                Public API contract version; industry profile is fixed by the
                current Integration grant.
              schema:
                type: string
                const: v1
            X-Request-Id:
              description: PayPathIQ-generated support correlation identifier.
              schema:
                format: uuid
                type: string
        '429':
          content:
            application/problem+json:
              examples:
                batch_limit_exceeded:
                  value:
                    detail: >-
                      The connection already has 2 queued or running batches.
                      Wait for one to finish.
                    requestId: 29400000-0000-4000-8000-000000000001
                    status: 429
                    title: >-
                      The connection already has 2 queued or running batches.
                      Wait for one to finish.
                    type: https://docs.paypathiq.com/problems/batch_limit_exceeded
                rate_limit_exceeded:
                  value:
                    detail: >-
                      Each API key may send 60 requests per minute and run 1
                      request at a time.
                    requestId: 29400000-0000-4000-8000-000000000001
                    status: 429
                    title: >-
                      Each API key may send 60 requests per minute and run 1
                      request at a time.
                    type: https://docs.paypathiq.com/problems/rate_limit_exceeded
              schema:
                $ref: '#/components/schemas/Problem'
          description: >-
            The connection already has 2 queued or running batches. Wait for one
            to finish. Each API key may send 60 requests per minute and run 1
            request at a time.
          headers:
            Cache-Control:
              description: Integration-facing responses are never cached.
              schema:
                const: no-store
                type: string
            PayPathIQ-Api-Version:
              description: >-
                Public API contract version; industry profile is fixed by the
                current Integration grant.
              schema:
                type: string
                const: v1
            X-Request-Id:
              description: PayPathIQ-generated support correlation identifier.
              schema:
                format: uuid
                type: string
            Retry-After:
              description: Seconds until this unchanged request may be retried.
              schema:
                minimum: 1
                type: integer
        '503':
          content:
            application/problem+json:
              examples:
                projection_unavailable:
                  value:
                    detail: >-
                      An unexpected error prevented a safe commit, and nothing
                      was saved. Retry with backoff.
                    requestId: 29400000-0000-4000-8000-000000000001
                    status: 503
                    title: >-
                      An unexpected error prevented a safe commit, and nothing
                      was saved. Retry with backoff.
                    type: https://docs.paypathiq.com/problems/projection_unavailable
              schema:
                $ref: '#/components/schemas/Problem'
          description: >-
            An unexpected error prevented a safe commit, and nothing was saved.
            Retry with backoff.
          headers:
            Cache-Control:
              description: Integration-facing responses are never cached.
              schema:
                const: no-store
                type: string
            PayPathIQ-Api-Version:
              description: >-
                Public API contract version; industry profile is fixed by the
                current Integration grant.
              schema:
                type: string
                const: v1
            X-Request-Id:
              description: PayPathIQ-generated support correlation identifier.
              schema:
                format: uuid
                type: string
      security:
        - BearerAuth: []
components:
  schemas:
    ExternalResourceId:
      type: string
      pattern: ^[A-Za-z0-9_-]{1,128}$
    Batch:
      type: object
      properties:
        records:
          minItems: 1
          maxItems: 100
          type: array
          items:
            oneOf:
              - type: object
                properties:
                  recordId:
                    type: string
                    pattern: ^[A-Za-z0-9_-]{1,128}$
                    description: >-
                      Identifier of this record within the batch. Unique in the
                      batch.
                  externalId:
                    type: string
                    pattern: ^[A-Za-z0-9_-]{1,128}$
                    description: >-
                      The external identifier the same synchronous operation
                      takes in its URL path.
                  dependsOn:
                    description: >-
                      recordIds of earlier records that must succeed first. A
                      record whose dependency did not succeed is never
                      attempted.
                    maxItems: 10
                    type: array
                    items:
                      type: string
                      pattern: ^[A-Za-z0-9_-]{1,128}$
                  kind:
                    type: string
                    const: customer
                  body:
                    anyOf:
                      - type: object
                        properties:
                          name:
                            type: object
                            properties:
                              firstName:
                                type: string
                                minLength: 1
                                maxLength: 120
                              lastName:
                                type: string
                                minLength: 1
                                maxLength: 120
                              middleNames:
                                maxItems: 3
                                type: array
                                items:
                                  type: string
                                  minLength: 1
                                  maxLength: 120
                            required:
                              - firstName
                              - lastName
                            additionalProperties: false
                          sourceReference:
                            type: string
                            minLength: 1
                            maxLength: 200
                          type:
                            type: string
                            const: person
                          contacts:
                            maxItems: 8
                            type: array
                            items:
                              type: object
                              properties:
                                address:
                                  type: object
                                  properties:
                                    countryCode:
                                      type: string
                                      pattern: ^[A-Z]{2}$
                                    line1:
                                      type: string
                                      minLength: 1
                                      maxLength: 120
                                    line2:
                                      type: string
                                      minLength: 1
                                      maxLength: 120
                                    locality:
                                      type: string
                                      minLength: 1
                                      maxLength: 120
                                    postalCode:
                                      type: string
                                      minLength: 1
                                      maxLength: 20
                                    region:
                                      type: string
                                      minLength: 1
                                      maxLength: 120
                                    type:
                                      type: string
                                      enum:
                                        - home
                                        - work
                                        - other
                                  required:
                                    - countryCode
                                    - line1
                                    - locality
                                    - type
                                  additionalProperties: false
                                email:
                                  type: object
                                  properties:
                                    address:
                                      type: string
                                      maxLength: 254
                                      format: email
                                      pattern: >-
                                        ^(?:[A-Za-z0-9_'+\-]+\.)*[A-Za-z0-9_'+\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$
                                    type:
                                      type: string
                                      enum:
                                        - personal
                                        - work
                                        - other
                                  required:
                                    - address
                                    - type
                                  additionalProperties: false
                                externalContactId:
                                  type: string
                                  pattern: ^[A-Za-z0-9_-]{1,128}$
                                  description: >-
                                    Caller-assigned, stable, non-sensitive
                                    identifier for this Contact within its
                                    Customer. Required to change Contacts after
                                    the Customer is created.
                                fullName:
                                  type: string
                                  minLength: 1
                                  maxLength: 200
                                isCustomerSelf:
                                  type: boolean
                                isMain:
                                  type: boolean
                                phone:
                                  type: object
                                  properties:
                                    number:
                                      type: string
                                      pattern: ^\+[1-9]\d{7,14}$
                                    type:
                                      type: string
                                      enum:
                                        - mobile
                                        - home
                                        - work
                                        - other
                                  required:
                                    - number
                                    - type
                                  additionalProperties: false
                              required:
                                - fullName
                                - isCustomerSelf
                                - isMain
                              additionalProperties: false
                          safetyAssertions:
                            maxItems: 5
                            type: array
                            items:
                              oneOf:
                                - type: object
                                  properties:
                                    effectiveAt:
                                      type: string
                                      format: date-time
                                      pattern: >-
                                        ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z))$
                                    state:
                                      type: string
                                      enum:
                                        - active
                                        - cleared
                                    type:
                                      type: string
                                      enum:
                                        - deceased_customer
                                        - legal_representation
                                        - safeguarding_risk
                                        - insolvency
                                  required:
                                    - effectiveAt
                                    - state
                                    - type
                                  additionalProperties: false
                                - type: object
                                  properties:
                                    channels:
                                      minItems: 1
                                      maxItems: 4
                                      type: array
                                      items:
                                        type: string
                                        enum:
                                          - email
                                          - sms
                                          - phone
                                          - post
                                    effectiveAt:
                                      type: string
                                      format: date-time
                                      pattern: >-
                                        ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z))$
                                    state:
                                      type: string
                                      enum:
                                        - active
                                        - cleared
                                    type:
                                      type: string
                                      const: client_do_not_contact
                                  required:
                                    - channels
                                    - effectiveAt
                                    - state
                                    - type
                                  additionalProperties: false
                            description: >-
                              At most one assertion per type; ordering is
                              semantically irrelevant.
                        required:
                          - name
                          - type
                        additionalProperties: false
                      - type: object
                        properties:
                          legalName:
                            type: string
                            minLength: 1
                            maxLength: 200
                          sourceReference:
                            type: string
                            minLength: 1
                            maxLength: 200
                          type:
                            type: string
                            const: business
                          contacts:
                            maxItems: 8
                            type: array
                            items:
                              type: object
                              properties:
                                address:
                                  type: object
                                  properties:
                                    countryCode:
                                      type: string
                                      pattern: ^[A-Z]{2}$
                                    line1:
                                      type: string
                                      minLength: 1
                                      maxLength: 120
                                    line2:
                                      type: string
                                      minLength: 1
                                      maxLength: 120
                                    locality:
                                      type: string
                                      minLength: 1
                                      maxLength: 120
                                    postalCode:
                                      type: string
                                      minLength: 1
                                      maxLength: 20
                                    region:
                                      type: string
                                      minLength: 1
                                      maxLength: 120
                                    type:
                                      type: string
                                      enum:
                                        - home
                                        - work
                                        - other
                                  required:
                                    - countryCode
                                    - line1
                                    - locality
                                    - type
                                  additionalProperties: false
                                email:
                                  type: object
                                  properties:
                                    address:
                                      type: string
                                      maxLength: 254
                                      format: email
                                      pattern: >-
                                        ^(?:[A-Za-z0-9_'+\-]+\.)*[A-Za-z0-9_'+\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$
                                    type:
                                      type: string
                                      enum:
                                        - personal
                                        - work
                                        - other
                                  required:
                                    - address
                                    - type
                                  additionalProperties: false
                                externalContactId:
                                  type: string
                                  pattern: ^[A-Za-z0-9_-]{1,128}$
                                  description: >-
                                    Caller-assigned, stable, non-sensitive
                                    identifier for this Contact within its
                                    Customer. Required to change Contacts after
                                    the Customer is created.
                                fullName:
                                  type: string
                                  minLength: 1
                                  maxLength: 200
                                isCustomerSelf:
                                  type: boolean
                                isMain:
                                  type: boolean
                                phone:
                                  type: object
                                  properties:
                                    number:
                                      type: string
                                      pattern: ^\+[1-9]\d{7,14}$
                                    type:
                                      type: string
                                      enum:
                                        - mobile
                                        - home
                                        - work
                                        - other
                                  required:
                                    - number
                                    - type
                                  additionalProperties: false
                              required:
                                - fullName
                                - isCustomerSelf
                                - isMain
                              additionalProperties: false
                          safetyAssertions:
                            maxItems: 5
                            type: array
                            items:
                              oneOf:
                                - type: object
                                  properties:
                                    effectiveAt:
                                      type: string
                                      format: date-time
                                      pattern: >-
                                        ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z))$
                                    state:
                                      type: string
                                      enum:
                                        - active
                                        - cleared
                                    type:
                                      type: string
                                      enum:
                                        - deceased_customer
                                        - legal_representation
                                        - safeguarding_risk
                                        - insolvency
                                  required:
                                    - effectiveAt
                                    - state
                                    - type
                                  additionalProperties: false
                                - type: object
                                  properties:
                                    channels:
                                      minItems: 1
                                      maxItems: 4
                                      type: array
                                      items:
                                        type: string
                                        enum:
                                          - email
                                          - sms
                                          - phone
                                          - post
                                    effectiveAt:
                                      type: string
                                      format: date-time
                                      pattern: >-
                                        ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z))$
                                    state:
                                      type: string
                                      enum:
                                        - active
                                        - cleared
                                    type:
                                      type: string
                                      const: client_do_not_contact
                                  required:
                                    - channels
                                    - effectiveAt
                                    - state
                                    - type
                                  additionalProperties: false
                            description: >-
                              At most one assertion per type; ordering is
                              semantically irrelevant.
                        required:
                          - legalName
                          - type
                        additionalProperties: false
                required:
                  - recordId
                  - externalId
                  - kind
                  - body
                additionalProperties: false
              - type: object
                properties:
                  recordId:
                    type: string
                    pattern: ^[A-Za-z0-9_-]{1,128}$
                    description: >-
                      Identifier of this record within the batch. Unique in the
                      batch.
                  externalId:
                    type: string
                    pattern: ^[A-Za-z0-9_-]{1,128}$
                    description: >-
                      The external identifier the same synchronous operation
                      takes in its URL path.
                  dependsOn:
                    description: >-
                      recordIds of earlier records that must succeed first. A
                      record whose dependency did not succeed is never
                      attempted.
                    maxItems: 10
                    type: array
                    items:
                      type: string
                      pattern: ^[A-Za-z0-9_-]{1,128}$
                  kind:
                    type: string
                    const: receivable
                  body:
                    oneOf:
                      - type: object
                        properties:
                          balanceBreakdown:
                            type: object
                            properties:
                              costs:
                                type: object
                                properties:
                                  amount:
                                    type: string
                                    pattern: ^(0|[1-9]\d{0,13})\.\d{2}$
                                  currency:
                                    type: string
                                    const: EUR
                                required:
                                  - amount
                                  - currency
                                additionalProperties: false
                              fees:
                                type: object
                                properties:
                                  amount:
                                    type: string
                                    pattern: ^(0|[1-9]\d{0,13})\.\d{2}$
                                  currency:
                                    type: string
                                    const: EUR
                                required:
                                  - amount
                                  - currency
                                additionalProperties: false
                              interest:
                                type: object
                                properties:
                                  amount:
                                    type: string
                                    pattern: ^(0|[1-9]\d{0,13})\.\d{2}$
                                  currency:
                                    type: string
                                    const: EUR
                                required:
                                  - amount
                                  - currency
                                additionalProperties: false
                              principal:
                                type: object
                                properties:
                                  amount:
                                    type: string
                                    pattern: ^(0|[1-9]\d{0,13})\.\d{2}$
                                  currency:
                                    type: string
                                    const: EUR
                                required:
                                  - amount
                                  - currency
                                additionalProperties: false
                            required:
                              - costs
                              - fees
                              - interest
                              - principal
                            additionalProperties: false
                            description: >-
                              All four amounts are required when a breakdown is
                              supplied; use 0.00 where needed.
                          creditUnion:
                            type: object
                            properties:
                              arrearsAmount:
                                type: object
                                properties:
                                  amount:
                                    type: string
                                    pattern: ^(0|[1-9]\d{0,13})\.\d{2}$
                                  currency:
                                    type: string
                                    const: EUR
                                required:
                                  - amount
                                  - currency
                                additionalProperties: false
                              contractualInstalment:
                                type: object
                                properties:
                                  amount:
                                    type: object
                                    properties:
                                      amount:
                                        type: string
                                        pattern: ^(0|[1-9]\d{0,13})\.\d{2}$
                                      currency:
                                        type: string
                                        const: EUR
                                    required:
                                      - amount
                                      - currency
                                    additionalProperties: false
                                  frequency:
                                    type: string
                                    enum:
                                      - weekly
                                      - fortnightly
                                      - monthly
                                      - quarterly
                                      - annual
                                required:
                                  - amount
                                  - frequency
                                additionalProperties: false
                              defaultDate:
                                type: string
                                format: date
                                pattern: >-
                                  ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))$
                              loanAccountReference:
                                type: string
                                minLength: 1
                                maxLength: 200
                              loanType:
                                type: string
                                enum:
                                  - personal_loan
                                  - mortgage
                                  - overdraft
                                  - credit_card
                                  - business_loan
                                  - other
                              totalOutstandingAmount:
                                type: object
                                properties:
                                  amount:
                                    type: string
                                    pattern: ^(0|[1-9]\d{0,13})\.\d{2}$
                                  currency:
                                    type: string
                                    const: EUR
                                required:
                                  - amount
                                  - currency
                                additionalProperties: false
                            required:
                              - loanAccountReference
                              - loanType
                            additionalProperties: false
                          propertyManagement:
                            not: {}
                          financialType:
                            type: string
                            enum:
                              - loan_instalment
                              - accelerated_balance
                              - loan_balance
                          sourceRevision:
                            type: integer
                            exclusiveMinimum: 0
                            maximum: 9007199254740991
                          dueDate:
                            type: string
                            format: date
                            pattern: >-
                              ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))$
                          receivableSafetyAssertions:
                            maxItems: 3
                            type: array
                            items:
                              type: object
                              properties:
                                effectiveAt:
                                  type: string
                                  format: date-time
                                  pattern: >-
                                    ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z))$
                                state:
                                  type: string
                                  enum:
                                    - active
                                    - cleared
                                type:
                                  type: string
                                  enum:
                                    - dispute
                                    - complaint
                                    - statute_barred
                              required:
                                - effectiveAt
                                - state
                                - type
                              additionalProperties: false
                            description: >-
                              At most one assertion per type; ordering is
                              semantically irrelevant.
                          recoverableAmount:
                            type: object
                            properties:
                              amount:
                                type: string
                                pattern: ^(0|[1-9]\d{0,13})\.\d{2}$
                              currency:
                                type: string
                                const: EUR
                            required:
                              - amount
                              - currency
                            additionalProperties: false
                          responsibleCustomers:
                            minItems: 1
                            maxItems: 8
                            type: array
                            items:
                              type: object
                              properties:
                                externalCustomerId:
                                  type: string
                                  pattern: ^[A-Za-z0-9_-]{1,128}$
                                  description: >-
                                    Caller-assigned, opaque identifier for this
                                    Customer's source-system record. It is not a
                                    PayPathIQ ID, member number, loan or account
                                    number, or contact detail. Keep it stable
                                    when Customer details change.
                                role:
                                  type: string
                                  enum:
                                    - primary
                                    - joint
                                    - guarantor
                              required:
                                - externalCustomerId
                                - role
                              additionalProperties: false
                            description: >-
                              Customer identifiers must be unique and exactly
                              one role must be primary.
                          sourceReference:
                            type: string
                            minLength: 1
                            maxLength: 200
                        required:
                          - creditUnion
                          - financialType
                          - sourceRevision
                          - dueDate
                          - recoverableAmount
                          - responsibleCustomers
                          - sourceReference
                        additionalProperties: false
                      - type: object
                        properties:
                          balanceBreakdown:
                            type: object
                            properties:
                              costs:
                                type: object
                                properties:
                                  amount:
                                    type: string
                                    pattern: ^(0|[1-9]\d{0,13})\.\d{2}$
                                  currency:
                                    type: string
                                    const: EUR
                                required:
                                  - amount
                                  - currency
                                additionalProperties: false
                              fees:
                                type: object
                                properties:
                                  amount:
                                    type: string
                                    pattern: ^(0|[1-9]\d{0,13})\.\d{2}$
                                  currency:
                                    type: string
                                    const: EUR
                                required:
                                  - amount
                                  - currency
                                additionalProperties: false
                              interest:
                                type: object
                                properties:
                                  amount:
                                    type: string
                                    pattern: ^(0|[1-9]\d{0,13})\.\d{2}$
                                  currency:
                                    type: string
                                    const: EUR
                                required:
                                  - amount
                                  - currency
                                additionalProperties: false
                              principal:
                                type: object
                                properties:
                                  amount:
                                    type: string
                                    pattern: ^(0|[1-9]\d{0,13})\.\d{2}$
                                  currency:
                                    type: string
                                    const: EUR
                                required:
                                  - amount
                                  - currency
                                additionalProperties: false
                            required:
                              - costs
                              - fees
                              - interest
                              - principal
                            additionalProperties: false
                            description: >-
                              All four amounts are required when a breakdown is
                              supplied; use 0.00 where needed.
                          creditUnion:
                            not: {}
                          propertyManagement:
                            type: object
                            properties:
                              version:
                                type: string
                                const: v1
                              developmentReference:
                                type: string
                                minLength: 1
                                maxLength: 200
                              unitReference:
                                type: string
                                minLength: 1
                                maxLength: 200
                              demandReference:
                                type: string
                                minLength: 1
                                maxLength: 200
                            required:
                              - version
                              - developmentReference
                              - unitReference
                              - demandReference
                            additionalProperties: false
                          financialType:
                            type: string
                            const: service_charge_demand
                          sourceRevision:
                            type: integer
                            exclusiveMinimum: 0
                            maximum: 9007199254740991
                          dueDate:
                            type: string
                            format: date
                            pattern: >-
                              ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))$
                          receivableSafetyAssertions:
                            maxItems: 3
                            type: array
                            items:
                              type: object
                              properties:
                                effectiveAt:
                                  type: string
                                  format: date-time
                                  pattern: >-
                                    ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z))$
                                state:
                                  type: string
                                  enum:
                                    - active
                                    - cleared
                                type:
                                  type: string
                                  enum:
                                    - dispute
                                    - complaint
                                    - statute_barred
                              required:
                                - effectiveAt
                                - state
                                - type
                              additionalProperties: false
                            description: >-
                              At most one assertion per type; ordering is
                              semantically irrelevant.
                          recoverableAmount:
                            type: object
                            properties:
                              amount:
                                type: string
                                pattern: ^(0|[1-9]\d{0,13})\.\d{2}$
                              currency:
                                type: string
                                const: EUR
                            required:
                              - amount
                              - currency
                            additionalProperties: false
                          responsibleCustomers:
                            minItems: 1
                            maxItems: 8
                            type: array
                            items:
                              type: object
                              properties:
                                externalCustomerId:
                                  type: string
                                  pattern: ^[A-Za-z0-9_-]{1,128}$
                                  description: >-
                                    Caller-assigned, opaque identifier for this
                                    Customer's source-system record. It is not a
                                    PayPathIQ ID, member number, loan or account
                                    number, or contact detail. Keep it stable
                                    when Customer details change.
                                role:
                                  type: string
                                  enum:
                                    - primary
                                    - joint
                                    - guarantor
                              required:
                                - externalCustomerId
                                - role
                              additionalProperties: false
                            description: >-
                              Customer identifiers must be unique and exactly
                              one role must be primary.
                          sourceReference:
                            type: string
                            minLength: 1
                            maxLength: 200
                        required:
                          - propertyManagement
                          - financialType
                          - sourceRevision
                          - dueDate
                          - recoverableAmount
                          - responsibleCustomers
                          - sourceReference
                        additionalProperties: false
                    description: >-
                      Each financial type requires exactly its industry context.
                      The balance breakdown must sum exactly to
                      recoverableAmount.
                required:
                  - recordId
                  - externalId
                  - kind
                  - body
                additionalProperties: false
              - type: object
                properties:
                  recordId:
                    type: string
                    pattern: ^[A-Za-z0-9_-]{1,128}$
                    description: >-
                      Identifier of this record within the batch. Unique in the
                      batch.
                  externalId:
                    type: string
                    pattern: ^[A-Za-z0-9_-]{1,128}$
                    description: >-
                      The external identifier the same synchronous operation
                      takes in its URL path.
                  dependsOn:
                    description: >-
                      recordIds of earlier records that must succeed first. A
                      record whose dependency did not succeed is never
                      attempted.
                    maxItems: 10
                    type: array
                    items:
                      type: string
                      pattern: ^[A-Za-z0-9_-]{1,128}$
                  kind:
                    type: string
                    const: payment_observation
                  body:
                    oneOf:
                      - type: object
                        properties:
                          amount:
                            type: object
                            properties:
                              amount:
                                type: string
                                pattern: ^(0|[1-9]\d{0,13})\.\d{2}$
                              currency:
                                type: string
                                const: EUR
                            required:
                              - amount
                              - currency
                            additionalProperties: false
                          effectiveAt:
                            type: string
                            format: date-time
                            pattern: >-
                              ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z))$
                          method:
                            type: string
                            enum:
                              - bank_transfer
                              - direct_debit
                              - card
                              - cash
                              - cheque
                              - unknown
                          sourceReference:
                            type: string
                            minLength: 1
                            maxLength: 200
                          allocations:
                            description: >-
                              Explicit allocations to Receivables. Each
                              Receivable may appear once and the total may not
                              exceed amount; any remainder stays unapplied. When
                              omitted, the connection's Client-approved
                              allocation rule may apply, otherwise the whole
                              amount stays unapplied.
                            minItems: 1
                            maxItems: 25
                            type: array
                            items:
                              type: object
                              properties:
                                amount:
                                  type: object
                                  properties:
                                    amount:
                                      type: string
                                      pattern: ^(0|[1-9]\d{0,13})\.\d{2}$
                                    currency:
                                      type: string
                                      const: EUR
                                  required:
                                    - amount
                                    - currency
                                  additionalProperties: false
                                externalReceivableId:
                                  type: string
                                  pattern: ^[A-Za-z0-9_-]{1,128}$
                              required:
                                - amount
                                - externalReceivableId
                              additionalProperties: false
                          externalCustomerId:
                            description: >-
                              The paying Customer, when known. Required for a
                              Client-approved allocation rule to apply;
                              unapplied funds are associated with this Customer.
                            type: string
                            pattern: ^[A-Za-z0-9_-]{1,128}$
                          type:
                            type: string
                            const: payment
                        required:
                          - amount
                          - effectiveAt
                          - method
                          - sourceReference
                          - type
                        additionalProperties: false
                      - type: object
                        properties:
                          amount:
                            type: object
                            properties:
                              amount:
                                type: string
                                pattern: ^(0|[1-9]\d{0,13})\.\d{2}$
                              currency:
                                type: string
                                const: EUR
                            required:
                              - amount
                              - currency
                            additionalProperties: false
                          effectiveAt:
                            type: string
                            format: date-time
                            pattern: >-
                              ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z))$
                          method:
                            type: string
                            enum:
                              - bank_transfer
                              - direct_debit
                              - card
                              - cash
                              - cheque
                              - unknown
                          sourceReference:
                            type: string
                            minLength: 1
                            maxLength: 200
                          allocations:
                            description: >-
                              The part of the correction returned to each
                              Receivable the related Payment was allocated to.
                              Each Receivable may appear once and the total may
                              not exceed amount; any remainder is taken from the
                              related Payment's unapplied funds. When omitted,
                              the whole amount is taken from unapplied funds.
                            minItems: 1
                            maxItems: 25
                            type: array
                            items:
                              type: object
                              properties:
                                amount:
                                  type: object
                                  properties:
                                    amount:
                                      type: string
                                      pattern: ^(0|[1-9]\d{0,13})\.\d{2}$
                                    currency:
                                      type: string
                                      const: EUR
                                  required:
                                    - amount
                                    - currency
                                  additionalProperties: false
                                externalReceivableId:
                                  type: string
                                  pattern: ^[A-Za-z0-9_-]{1,128}$
                                resultingRecoverableAmount:
                                  description: >-
                                    Optional guard. When sent, it must equal the
                                    Receivable's locked working balance plus
                                    this amount, otherwise nothing is saved.
                                  type: object
                                  properties:
                                    amount:
                                      type: string
                                      pattern: ^(0|[1-9]\d{0,13})\.\d{2}$
                                    currency:
                                      type: string
                                      const: EUR
                                  required:
                                    - amount
                                    - currency
                                  additionalProperties: false
                              required:
                                - amount
                                - externalReceivableId
                              additionalProperties: false
                          relatedExternalPaymentObservationId:
                            type: string
                            pattern: ^[A-Za-z0-9_-]{1,128}$
                          type:
                            type: string
                            const: refund
                        required:
                          - amount
                          - effectiveAt
                          - method
                          - sourceReference
                          - relatedExternalPaymentObservationId
                          - type
                        additionalProperties: false
                      - type: object
                        properties:
                          amount:
                            type: object
                            properties:
                              amount:
                                type: string
                                pattern: ^(0|[1-9]\d{0,13})\.\d{2}$
                              currency:
                                type: string
                                const: EUR
                            required:
                              - amount
                              - currency
                            additionalProperties: false
                          effectiveAt:
                            type: string
                            format: date-time
                            pattern: >-
                              ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z))$
                          method:
                            type: string
                            enum:
                              - bank_transfer
                              - direct_debit
                              - card
                              - cash
                              - cheque
                              - unknown
                          sourceReference:
                            type: string
                            minLength: 1
                            maxLength: 200
                          allocations:
                            description: >-
                              The part of the correction returned to each
                              Receivable the related Payment was allocated to.
                              Each Receivable may appear once and the total may
                              not exceed amount; any remainder is taken from the
                              related Payment's unapplied funds. When omitted,
                              the whole amount is taken from unapplied funds.
                            minItems: 1
                            maxItems: 25
                            type: array
                            items:
                              type: object
                              properties:
                                amount:
                                  type: object
                                  properties:
                                    amount:
                                      type: string
                                      pattern: ^(0|[1-9]\d{0,13})\.\d{2}$
                                    currency:
                                      type: string
                                      const: EUR
                                  required:
                                    - amount
                                    - currency
                                  additionalProperties: false
                                externalReceivableId:
                                  type: string
                                  pattern: ^[A-Za-z0-9_-]{1,128}$
                                resultingRecoverableAmount:
                                  description: >-
                                    Optional guard. When sent, it must equal the
                                    Receivable's locked working balance plus
                                    this amount, otherwise nothing is saved.
                                  type: object
                                  properties:
                                    amount:
                                      type: string
                                      pattern: ^(0|[1-9]\d{0,13})\.\d{2}$
                                    currency:
                                      type: string
                                      const: EUR
                                  required:
                                    - amount
                                    - currency
                                  additionalProperties: false
                              required:
                                - amount
                                - externalReceivableId
                              additionalProperties: false
                          relatedExternalPaymentObservationId:
                            type: string
                            pattern: ^[A-Za-z0-9_-]{1,128}$
                          type:
                            type: string
                            const: reversal
                        required:
                          - amount
                          - effectiveAt
                          - method
                          - sourceReference
                          - relatedExternalPaymentObservationId
                          - type
                        additionalProperties: false
                    description: >-
                      A payment applies explicit allocations first, otherwise a
                      Client-approved allocation rule, otherwise it stays
                      unapplied; only allocated amounts reduce a Receivable. A
                      refund or reversal records an exact, possibly partial,
                      amount against the original Payment: the part named in
                      allocations returns to those Receivables and the remainder
                      is taken from the Payment's unapplied funds. Cumulative
                      corrections cannot exceed the Payment, any allocation, or
                      the unapplied remainder. Recording evidence never executes
                      a transfer.
                required:
                  - recordId
                  - externalId
                  - kind
                  - body
                additionalProperties: false
              - type: object
                properties:
                  recordId:
                    type: string
                    pattern: ^[A-Za-z0-9_-]{1,128}$
                    description: >-
                      Identifier of this record within the batch. Unique in the
                      batch.
                  externalId:
                    type: string
                    pattern: ^[A-Za-z0-9_-]{1,128}$
                    description: >-
                      The external identifier the same synchronous operation
                      takes in its URL path.
                  dependsOn:
                    description: >-
                      recordIds of earlier records that must succeed first. A
                      record whose dependency did not succeed is never
                      attempted.
                    maxItems: 10
                    type: array
                    items:
                      type: string
                      pattern: ^[A-Za-z0-9_-]{1,128}$
                  kind:
                    type: string
                    const: credit_note
                  body:
                    oneOf:
                      - type: object
                        properties:
                          amount:
                            type: object
                            properties:
                              amount:
                                type: string
                                pattern: ^(0|[1-9]\d{0,13})\.\d{2}$
                              currency:
                                type: string
                                const: EUR
                            required:
                              - amount
                              - currency
                            additionalProperties: false
                          externalReceivableId:
                            type: string
                            pattern: ^[A-Za-z0-9_-]{1,128}$
                          sourceRevision:
                            type: integer
                            exclusiveMinimum: 0
                            maximum: 9007199254740991
                          effectiveAt:
                            type: string
                            format: date-time
                            pattern: >-
                              ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z))$
                          reason:
                            type: string
                            enum:
                              - billing_correction
                              - contractual_credit
                          sourceReference:
                            type: string
                            minLength: 1
                            maxLength: 200
                          type:
                            type: string
                            const: credit_note
                        required:
                          - amount
                          - externalReceivableId
                          - sourceRevision
                          - effectiveAt
                          - reason
                          - sourceReference
                          - type
                        additionalProperties: false
                      - type: object
                        properties:
                          amount:
                            type: object
                            properties:
                              amount:
                                type: string
                                pattern: ^(0|[1-9]\d{0,13})\.\d{2}$
                              currency:
                                type: string
                                const: EUR
                            required:
                              - amount
                              - currency
                            additionalProperties: false
                          externalReceivableId:
                            type: string
                            pattern: ^[A-Za-z0-9_-]{1,128}$
                          sourceRevision:
                            type: integer
                            exclusiveMinimum: 0
                            maximum: 9007199254740991
                          effectiveAt:
                            type: string
                            format: date-time
                            pattern: >-
                              ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z))$
                          reason:
                            type: string
                            enum:
                              - billing_correction
                              - source_adjustment
                          sourceReference:
                            type: string
                            minLength: 1
                            maxLength: 200
                          type:
                            type: string
                            const: adjustment
                          direction:
                            type: string
                            enum:
                              - increase
                              - decrease
                        required:
                          - amount
                          - externalReceivableId
                          - sourceRevision
                          - effectiveAt
                          - reason
                          - sourceReference
                          - type
                          - direction
                        additionalProperties: false
                      - type: object
                        properties:
                          amount:
                            type: object
                            properties:
                              amount:
                                type: string
                                pattern: ^(0|[1-9]\d{0,13})\.\d{2}$
                              currency:
                                type: string
                                const: EUR
                            required:
                              - amount
                              - currency
                            additionalProperties: false
                          externalReceivableId:
                            type: string
                            pattern: ^[A-Za-z0-9_-]{1,128}$
                          sourceRevision:
                            type: integer
                            exclusiveMinimum: 0
                            maximum: 9007199254740991
                          effectiveAt:
                            type: string
                            format: date-time
                            pattern: >-
                              ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z))$
                          reason:
                            type: string
                            const: approved_write_off
                          sourceReference:
                            type: string
                            minLength: 1
                            maxLength: 200
                          type:
                            type: string
                            const: write_off
                        required:
                          - amount
                          - externalReceivableId
                          - sourceRevision
                          - effectiveAt
                          - reason
                          - sourceReference
                          - type
                        additionalProperties: false
                required:
                  - recordId
                  - externalId
                  - kind
                  - body
                additionalProperties: false
              - type: object
                properties:
                  recordId:
                    type: string
                    pattern: ^[A-Za-z0-9_-]{1,128}$
                    description: >-
                      Identifier of this record within the batch. Unique in the
                      batch.
                  externalId:
                    type: string
                    pattern: ^[A-Za-z0-9_-]{1,128}$
                    description: >-
                      The external identifier the same synchronous operation
                      takes in its URL path.
                  dependsOn:
                    description: >-
                      recordIds of earlier records that must succeed first. A
                      record whose dependency did not succeed is never
                      attempted.
                    maxItems: 10
                    type: array
                    items:
                      type: string
                      pattern: ^[A-Za-z0-9_-]{1,128}$
                  kind:
                    type: string
                    const: adjustment
                  body:
                    oneOf:
                      - type: object
                        properties:
                          amount:
                            type: object
                            properties:
                              amount:
                                type: string
                                pattern: ^(0|[1-9]\d{0,13})\.\d{2}$
                              currency:
                                type: string
                                const: EUR
                            required:
                              - amount
                              - currency
                            additionalProperties: false
                          externalReceivableId:
                            type: string
                            pattern: ^[A-Za-z0-9_-]{1,128}$
                          sourceRevision:
                            type: integer
                            exclusiveMinimum: 0
                            maximum: 9007199254740991
                          effectiveAt:
                            type: string
                            format: date-time
                            pattern: >-
                              ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z))$
                          reason:
                            type: string
                            enum:
                              - billing_correction
                              - contractual_credit
                          sourceReference:
                            type: string
                            minLength: 1
                            maxLength: 200
                          type:
                            type: string
                            const: credit_note
                        required:
                          - amount
                          - externalReceivableId
                          - sourceRevision
                          - effectiveAt
                          - reason
                          - sourceReference
                          - type
                        additionalProperties: false
                      - type: object
                        properties:
                          amount:
                            type: object
                            properties:
                              amount:
                                type: string
                                pattern: ^(0|[1-9]\d{0,13})\.\d{2}$
                              currency:
                                type: string
                                const: EUR
                            required:
                              - amount
                              - currency
                            additionalProperties: false
                          externalReceivableId:
                            type: string
                            pattern: ^[A-Za-z0-9_-]{1,128}$
                          sourceRevision:
                            type: integer
                            exclusiveMinimum: 0
                            maximum: 9007199254740991
                          effectiveAt:
                            type: string
                            format: date-time
                            pattern: >-
                              ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z))$
                          reason:
                            type: string
                            enum:
                              - billing_correction
                              - source_adjustment
                          sourceReference:
                            type: string
                            minLength: 1
                            maxLength: 200
                          type:
                            type: string
                            const: adjustment
                          direction:
                            type: string
                            enum:
                              - increase
                              - decrease
                        required:
                          - amount
                          - externalReceivableId
                          - sourceRevision
                          - effectiveAt
                          - reason
                          - sourceReference
                          - type
                          - direction
                        additionalProperties: false
                      - type: object
                        properties:
                          amount:
                            type: object
                            properties:
                              amount:
                                type: string
                                pattern: ^(0|[1-9]\d{0,13})\.\d{2}$
                              currency:
                                type: string
                                const: EUR
                            required:
                              - amount
                              - currency
                            additionalProperties: false
                          externalReceivableId:
                            type: string
                            pattern: ^[A-Za-z0-9_-]{1,128}$
                          sourceRevision:
                            type: integer
                            exclusiveMinimum: 0
                            maximum: 9007199254740991
                          effectiveAt:
                            type: string
                            format: date-time
                            pattern: >-
                              ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z))$
                          reason:
                            type: string
                            const: approved_write_off
                          sourceReference:
                            type: string
                            minLength: 1
                            maxLength: 200
                          type:
                            type: string
                            const: write_off
                        required:
                          - amount
                          - externalReceivableId
                          - sourceRevision
                          - effectiveAt
                          - reason
                          - sourceReference
                          - type
                        additionalProperties: false
                required:
                  - recordId
                  - externalId
                  - kind
                  - body
                additionalProperties: false
              - type: object
                properties:
                  recordId:
                    type: string
                    pattern: ^[A-Za-z0-9_-]{1,128}$
                    description: >-
                      Identifier of this record within the batch. Unique in the
                      batch.
                  externalId:
                    type: string
                    pattern: ^[A-Za-z0-9_-]{1,128}$
                    description: >-
                      The external identifier the same synchronous operation
                      takes in its URL path.
                  dependsOn:
                    description: >-
                      recordIds of earlier records that must succeed first. A
                      record whose dependency did not succeed is never
                      attempted.
                    maxItems: 10
                    type: array
                    items:
                      type: string
                      pattern: ^[A-Za-z0-9_-]{1,128}$
                  kind:
                    type: string
                    const: write_off
                  body:
                    oneOf:
                      - type: object
                        properties:
                          amount:
                            type: object
                            properties:
                              amount:
                                type: string
                                pattern: ^(0|[1-9]\d{0,13})\.\d{2}$
                              currency:
                                type: string
                                const: EUR
                            required:
                              - amount
                              - currency
                            additionalProperties: false
                          externalReceivableId:
                            type: string
                            pattern: ^[A-Za-z0-9_-]{1,128}$
                          sourceRevision:
                            type: integer
                            exclusiveMinimum: 0
                            maximum: 9007199254740991
                          effectiveAt:
                            type: string
                            format: date-time
                            pattern: >-
                              ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z))$
                          reason:
                            type: string
                            enum:
                              - billing_correction
                              - contractual_credit
                          sourceReference:
                            type: string
                            minLength: 1
                            maxLength: 200
                          type:
                            type: string
                            const: credit_note
                        required:
                          - amount
                          - externalReceivableId
                          - sourceRevision
                          - effectiveAt
                          - reason
                          - sourceReference
                          - type
                        additionalProperties: false
                      - type: object
                        properties:
                          amount:
                            type: object
                            properties:
                              amount:
                                type: string
                                pattern: ^(0|[1-9]\d{0,13})\.\d{2}$
                              currency:
                                type: string
                                const: EUR
                            required:
                              - amount
                              - currency
                            additionalProperties: false
                          externalReceivableId:
                            type: string
                            pattern: ^[A-Za-z0-9_-]{1,128}$
                          sourceRevision:
                            type: integer
                            exclusiveMinimum: 0
                            maximum: 9007199254740991
                          effectiveAt:
                            type: string
                            format: date-time
                            pattern: >-
                              ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z))$
                          reason:
                            type: string
                            enum:
                              - billing_correction
                              - source_adjustment
                          sourceReference:
                            type: string
                            minLength: 1
                            maxLength: 200
                          type:
                            type: string
                            const: adjustment
                          direction:
                            type: string
                            enum:
                              - increase
                              - decrease
                        required:
                          - amount
                          - externalReceivableId
                          - sourceRevision
                          - effectiveAt
                          - reason
                          - sourceReference
                          - type
                          - direction
                        additionalProperties: false
                      - type: object
                        properties:
                          amount:
                            type: object
                            properties:
                              amount:
                                type: string
                                pattern: ^(0|[1-9]\d{0,13})\.\d{2}$
                              currency:
                                type: string
                                const: EUR
                            required:
                              - amount
                              - currency
                            additionalProperties: false
                          externalReceivableId:
                            type: string
                            pattern: ^[A-Za-z0-9_-]{1,128}$
                          sourceRevision:
                            type: integer
                            exclusiveMinimum: 0
                            maximum: 9007199254740991
                          effectiveAt:
                            type: string
                            format: date-time
                            pattern: >-
                              ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z))$
                          reason:
                            type: string
                            const: approved_write_off
                          sourceReference:
                            type: string
                            minLength: 1
                            maxLength: 200
                          type:
                            type: string
                            const: write_off
                        required:
                          - amount
                          - externalReceivableId
                          - sourceRevision
                          - effectiveAt
                          - reason
                          - sourceReference
                          - type
                        additionalProperties: false
                required:
                  - recordId
                  - externalId
                  - kind
                  - body
                additionalProperties: false
              - type: object
                properties:
                  recordId:
                    type: string
                    pattern: ^[A-Za-z0-9_-]{1,128}$
                    description: >-
                      Identifier of this record within the batch. Unique in the
                      batch.
                  externalId:
                    type: string
                    pattern: ^[A-Za-z0-9_-]{1,128}$
                    description: >-
                      The external identifier the same synchronous operation
                      takes in its URL path.
                  dependsOn:
                    description: >-
                      recordIds of earlier records that must succeed first. A
                      record whose dependency did not succeed is never
                      attempted.
                    maxItems: 10
                    type: array
                    items:
                      type: string
                      pattern: ^[A-Za-z0-9_-]{1,128}$
                  kind:
                    type: string
                    const: balance_snapshot
                  body:
                    type: object
                    properties:
                      asOf:
                        type: string
                        format: date-time
                        pattern: >-
                          ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z))$
                        description: >-
                          UTC time at which the Source produced these balances.
                          Never earlier than the previous accepted snapshot.
                      balances:
                        minItems: 1
                        maxItems: 100
                        type: array
                        items:
                          type: object
                          properties:
                            externalReceivableId:
                              type: string
                              pattern: ^[A-Za-z0-9_-]{1,128}$
                            recoverableAmount:
                              type: object
                              properties:
                                amount:
                                  type: string
                                  pattern: ^(0|[1-9]\d{0,13})\.\d{2}$
                                currency:
                                  type: string
                                  const: EUR
                              required:
                                - amount
                                - currency
                              additionalProperties: false
                              description: >-
                                The Source's authoritative balance for this
                                Receivable at asOf.
                            sourceRevision:
                              type: integer
                              exclusiveMinimum: 0
                              maximum: 9007199254740991
                              description: >-
                                The Receivable's Source revision this balance
                                belongs to. Never lower than the accepted
                                revision.
                          required:
                            - externalReceivableId
                            - recoverableAmount
                            - sourceRevision
                          additionalProperties: false
                        description: >-
                          Incremental scope: Receivables omitted here are
                          unaffected. Each Receivable appears at most once.
                      sourcePosition:
                        type: integer
                        exclusiveMinimum: 0
                        maximum: 9007199254740991
                        description: >-
                          Strictly increasing position of this snapshot in the
                          Source's ordered feed, across the connection.
                    required:
                      - asOf
                      - balances
                      - sourcePosition
                    additionalProperties: false
                required:
                  - recordId
                  - externalId
                  - kind
                  - body
                additionalProperties: false
          description: >-
            Processed in array order, at most 100 per batch. Each record is the
            exact body of the synchronous operation for its kind.
      required:
        - records
      additionalProperties: false
    BatchResponse:
      type: object
      properties:
        externalBatchId:
          type: string
          pattern: ^[A-Za-z0-9_-]{1,128}$
        status:
          type: string
          enum:
            - queued
            - running
            - succeeded
            - partially_succeeded
            - failed
          description: >-
            queued and running mean work is outstanding; submission never
            implies acceptance. succeeded: every record succeeded.
            partially_succeeded: some records did not succeed. failed: no record
            succeeded.
        bookCompleteness:
          type: string
          const: not_declared
          description: >-
            A batch never declares a complete book, and no missing-record
            processing follows from any batch outcome, however it finishes.
            Completeness is declared only through a separate verified
            complete-book declaration.
        submittedAt:
          type: string
          format: date-time
          pattern: >-
            ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z))$
        completedAt:
          type: string
          format: date-time
          pattern: >-
            ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z))$
        counts:
          type: object
          properties:
            total:
              type: integer
              minimum: -9007199254740991
              maximum: 9007199254740991
            pending:
              type: integer
              minimum: -9007199254740991
              maximum: 9007199254740991
            succeeded:
              type: integer
              minimum: -9007199254740991
              maximum: 9007199254740991
            failed:
              type: integer
              minimum: -9007199254740991
              maximum: 9007199254740991
            dependencyFailed:
              type: integer
              minimum: -9007199254740991
              maximum: 9007199254740991
          required:
            - total
            - pending
            - succeeded
            - failed
            - dependencyFailed
          additionalProperties: false
        records:
          maxItems: 100
          type: array
          items:
            type: object
            properties:
              position:
                type: integer
                minimum: 1
                maximum: 100
              recordId:
                type: string
                pattern: ^[A-Za-z0-9_-]{1,128}$
              kind:
                type: string
                enum:
                  - customer
                  - receivable
                  - payment_observation
                  - credit_note
                  - adjustment
                  - write_off
                  - balance_snapshot
              externalId:
                type: string
                pattern: ^[A-Za-z0-9_-]{1,128}$
              status:
                type: string
                enum:
                  - pending
                  - succeeded
                  - failed
                  - dependency_failed
                description: >-
                  pending: not yet finished. succeeded: the synchronous
                  operation accepted it (httpStatus 201 created, 200 updated or
                  identical replay). failed: the operation refused it; problem
                  names why. dependency_failed: not attempted because blockedBy
                  did not succeed.
              httpStatus:
                type: integer
                minimum: -9007199254740991
                maximum: 9007199254740991
              problem:
                type: object
                properties:
                  type:
                    type: string
                    description: >-
                      Problem code, documented at
                      https://docs.paypathiq.com/problems/{code}.
                required:
                  - type
                additionalProperties: false
              blockedBy:
                type: string
                pattern: ^[A-Za-z0-9_-]{1,128}$
            required:
              - position
              - recordId
              - kind
              - externalId
              - status
            additionalProperties: false
      required:
        - externalBatchId
        - status
        - bookCompleteness
        - submittedAt
        - counts
        - records
      additionalProperties: false
    Problem:
      type: object
      properties:
        detail:
          type: string
        errors:
          maxItems: 20
          type: array
          items:
            type: object
            properties:
              code:
                type: string
              detail:
                type: string
              pointer:
                type: string
            required:
              - code
              - detail
              - pointer
            additionalProperties: false
        requestId:
          type: string
          format: uuid
          pattern: >-
            ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
        status:
          type: integer
          minimum: 400
          maximum: 599
        title:
          type: string
        type:
          type: string
          format: uri
      required:
        - detail
        - requestId
        - status
        - title
        - type
      additionalProperties: false
  securitySchemes:
    BearerAuth:
      bearerFormat: ppiq_test_<keyId>_<secret> or ppiq_live_<keyId>_<secret>
      description: >-
        Integration-owned environment-specific API key. Never paste a production
        key into documentation tools.
      scheme: bearer
      type: http

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.