{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://raw.githubusercontent.com/api-evangelist/fis/main/json-schema/fis-ach-transfer-schema.json",
  "title": "AchTransfer",
  "x-generated": "2026-10-12",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/fis-ach-api-openapi.yml#/components/schemas/AchTransfer",
  "allOf": [
    {
      "$ref": "#/$defs/AchTransferRequest"
    },
    {
      "type": "object",
      "properties": {
        "transferId": {
          "type": "string"
        },
        "status": {
          "type": "string",
          "enum": [
            "CREATED",
            "SUBMITTED",
            "SETTLED",
            "RETURNED",
            "REJECTED"
          ]
        },
        "traceNumber": {
          "type": "string",
          "description": "NACHA trace number"
        },
        "createdAt": {
          "type": "string",
          "format": "date-time"
        }
      }
    }
  ],
  "$defs": {
    "AccountReference": {
      "type": "object",
      "required": [
        "accountNumber",
        "routingNumber"
      ],
      "properties": {
        "accountNumber": {
          "type": "string",
          "description": "Bank account number"
        },
        "routingNumber": {
          "type": "string",
          "pattern": "^\\d{9}$",
          "description": "ABA routing transit number (9 digits)"
        },
        "accountType": {
          "type": "string",
          "enum": [
            "CHECKING",
            "SAVINGS",
            "LOAN"
          ]
        },
        "accountHolderName": {
          "type": "string"
        },
        "bankName": {
          "type": "string"
        },
        "swiftCode": {
          "type": "string",
          "description": "SWIFT/BIC code for international wires"
        }
      }
    },
    "AchTransferRequest": {
      "type": "object",
      "required": [
        "amount",
        "entryClassCode",
        "transactionType",
        "debtorAccount",
        "creditorAccount"
      ],
      "properties": {
        "amount": {
          "type": "number",
          "format": "double",
          "minimum": 0.01
        },
        "entryClassCode": {
          "type": "string",
          "enum": [
            "PPD",
            "CCD",
            "CTX",
            "WEB",
            "TEL",
            "ARC",
            "BOC",
            "POP",
            "RCK"
          ],
          "description": "NACHA Standard Entry Class code"
        },
        "transactionType": {
          "type": "string",
          "enum": [
            "CREDIT",
            "DEBIT"
          ]
        },
        "debtorAccount": {
          "$ref": "#/$defs/AccountReference"
        },
        "creditorAccount": {
          "$ref": "#/$defs/AccountReference"
        },
        "description": {
          "type": "string",
          "maxLength": 10,
          "description": "Company entry description (appears on bank statement)"
        },
        "effectiveDate": {
          "type": "string",
          "format": "date"
        },
        "sameDayAch": {
          "type": "boolean",
          "default": false
        }
      }
    }
  }
}