{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://raw.githubusercontent.com/api-evangelist/divvy/main/json-schema/divvy-payment-response-dto-schema.json",
  "title": "PaymentResponseDto",
  "description": "Payments response.",
  "x-generated": "2026-10-14",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/divvy-bill-v3-api-openapi.yml#/components/schemas/PaymentResponseDto",
  "required": [
    "amount"
  ],
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "description": "BILL-generated ID of the payment. The value begins with `stp`."
    },
    "vendorId": {
      "type": "string",
      "description": "BILL-generated ID of the vendor to be paid. The value begins with `009`."
    },
    "vendorName": {
      "type": "string",
      "description": "Vendor name"
    },
    "billId": {
      "type": "string",
      "description": "BILL-generated ID of the bill to be paid. The value begins with `00n`."
    },
    "billPayments": {
      "type": "array",
      "description": "List of bill payments. When a payment is applied to a bill, the bill payment is identified by a bill payment `id`. The value begins with `blp`.",
      "items": {
        "$ref": "#/$defs/BillPayment"
      }
    },
    "description": {
      "type": "string",
      "description": "Bill payment description. This value is included in the check memo or in the bank descriptor for electronic payments."
    },
    "processDate": {
      "type": "string",
      "description": "Payment process date in the `yyyy-MM-dd` format. On this date, BILL starts processing the payment and starts withdrawing funds from the sender's funding account.",
      "format": "date"
    },
    "fundingAccount": {
      "allOf": [
        {
          "$ref": "#/$defs/FundingAccountResponse"
        },
        {
          "description": "Payment funding information"
        }
      ]
    },
    "amount": {
      "type": "number",
      "description": "Payment amount. For a payment in an international currency (not USD), this value is in the local currency."
    },
    "processingOptions": {
      "allOf": [
        {
          "$ref": "#/$defs/ProcessingOptionsResponse"
        },
        {
          "description": "Payment processing options"
        }
      ]
    },
    "transactionNumber": {
      "type": "string",
      "description": "Payment transaction reference used as an external identifier.\n\nYou can set this field as a unique alphanumeric value for your system to track the payment transaction. The value must be 50 characters or fewer. If you do not set `transactionNumber`, BILL sets this field as a unique alphanumeric payment identification value."
    },
    "confirmationNumber": {
      "type": "string",
      "description": "BILL-generated bill payment confirmation value"
    },
    "status": {
      "allOf": [
        {
          "$ref": "#/$defs/PaymentStatus"
        },
        {
          "description": "Payment status."
        }
      ]
    },
    "exchangeRate": {
      "type": "number",
      "description": "Exchange rate for the payment in an international currency (not USD)"
    },
    "fundingAmount": {
      "type": "number",
      "description": "Payment amount in USD"
    },
    "onlinePayment": {
      "type": "boolean",
      "description": "Payment source.\n* `true`: Payment is made with BILL (online)\n* `false`: Payment is made outside BILL and then recorded in BILL (offline)"
    },
    "disbursementType": {
      "allOf": [
        {
          "$ref": "#/$defs/DisbursementType"
        },
        {
          "description": "Disbursement type. This value is set when you create a payment. See `disbursementInfo` for information about the disbursement method used when BILL processes your payment."
        }
      ]
    },
    "remittanceEmail": {
      "type": "string",
      "description": "Remittance email address set for the vendor"
    },
    "createdTime": {
      "type": "string",
      "description": "Payment created date and time",
      "format": "date-time"
    },
    "updatedTime": {
      "type": "string",
      "description": "Payment updated date and time",
      "format": "date-time"
    },
    "createdBy": {
      "type": "string",
      "description": "BILL-generated ID of the user that created the payment. The value begins with `006`."
    },
    "voidInfo": {
      "type": "array",
      "description": "Void request information",
      "items": {
        "$ref": "#/$defs/VoidInfo"
      }
    },
    "disbursementStatus": {
      "allOf": [
        {
          "$ref": "#/$defs/DisbursementStatus"
        },
        {
          "description": "Payment disbursement status"
        }
      ]
    },
    "disbursementInfo": {
      "allOf": [
        {
          "$ref": "#/$defs/DisbursementInfo"
        },
        {
          "description": "Payment disbursement information. This information is based on the disbursement method used when BILL processes your payment.\n\nFor example, when BILL processes an ACH payment, `disbursementInfo` includes the `sentDate` and `arrivesByDate` fields."
        }
      ]
    },
    "paymentPurpose": {
      "allOf": [
        {
          "$ref": "#/$defs/PaymentPurposeResponse"
        },
        {
          "description": "Payment purpose information"
        }
      ]
    },
    "cardFundingPurpose": {
      "type": "string",
      "description": "Card funding purpose"
    },
    "cancelRequestSubmitted": {
      "type": "boolean",
      "description": "This field is set as `true` if a cancel payment request is submitted.\n\n**Note**: If the payment is cancelled, the payment `status` is set as `CANCELLED`."
    },
    "singleStatus": {
      "allOf": [
        {
          "$ref": "#/$defs/PaymentSingleStatus"
        },
        {
          "description": "Unified payment status. This field provides BILL payment lifecycle updates based on the `status` and `disbursementStatus` values in the response.\n\nSee [Single status payment values](https://developer.bill.com/docs/single-status-payment-values) in the Guides section for the list of available values."
        }
      ]
    }
  },
  "$defs": {
    "AchDisbursement": {
      "type": "object",
      "properties": {
        "sentDate": {
          "type": "string",
          "description": "ACH payment sent date",
          "format": "date"
        },
        "arrivesByDate": {
          "type": "string",
          "description": "ACH payment arrives by date",
          "format": "date"
        }
      },
      "description": "ACH disbursement dto when the disbursement type is ach."
    },
    "BillPayment": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "description": "BILL-generated ID of the bill payment. The value begins with `blp`."
        },
        "billId": {
          "type": "string",
          "description": "BILL-generated ID of the bill to be paid. The value begins with `00n`."
        },
        "amount": {
          "type": "number",
          "description": "Payment amount. For a payment in an international currency (not USD), this value is in the local currency."
        },
        "vendorCredits": {
          "type": "array",
          "description": "Vendor credits applied to the bill payment",
          "items": {
            "$ref": "#/$defs/PaymentVendorCreditResponseDto"
          }
        }
      },
      "description": "Details of bill payment."
    },
    "CheckDeliveryTypeResponse": {
      "type": "string",
      "description": "Enum for Check delivery type.",
      "enum": [
        "STANDARD",
        "UPS_1DAY",
        "UPS_2DAY",
        "UPS_3DAY",
        "RTP_DELIVERY",
        "UNDEFINED"
      ]
    },
    "CheckDisbursement": {
      "type": "object",
      "properties": {
        "sentDate": {
          "type": "string",
          "description": "Check payment sent date",
          "format": "date"
        },
        "arrivesByDate": {
          "type": "string",
          "description": "Check payment arrives by date",
          "format": "date"
        },
        "checkNumber": {
          "type": "integer",
          "description": "Check number",
          "format": "int64"
        },
        "trackingInformation": {
          "type": "string",
          "description": "UPS tracking number for the check. You get a tracking number only for a BILL Pay Faster check payment."
        }
      },
      "description": "Check disbursement dto when the disbursement type is check."
    },
    "DisbursementInfo": {
      "type": "object",
      "properties": {
        "isVoidable": {
          "type": "boolean",
          "description": "Set as `true` if the payment disbursement type can be voided"
        },
        "checkDisbursement": {
          "allOf": [
            {
              "$ref": "#/$defs/CheckDisbursement"
            },
            {
              "description": "Check payment disbursement information"
            }
          ]
        },
        "achDisbursement": {
          "allOf": [
            {
              "$ref": "#/$defs/AchDisbursement"
            },
            {
              "description": "ACH payment disbursement information"
            }
          ]
        },
        "rppsDisbursement": {
          "allOf": [
            {
              "$ref": "#/$defs/RppsDisbursement"
            },
            {
              "description": "ACH payment to verified national vendor disbursement information"
            }
          ]
        },
        "internationalDisbursement": {
          "allOf": [
            {
              "$ref": "#/$defs/InternationalDisbursement"
            },
            {
              "description": "International ePayment disbursement information"
            }
          ]
        },
        "vcardDisbursement": {
          "allOf": [
            {
              "$ref": "#/$defs/VcardDisbursement"
            },
            {
              "description": "Virtual card payment disbursement information"
            }
          ]
        },
        "walletDisbursement": {
          "allOf": [
            {
              "$ref": "#/$defs/WalletDisbursement"
            },
            {
              "description": "Instant Transfer (wallet) payment disbursement information"
            }
          ]
        }
      },
      "description": "Disbursement info."
    },
    "DisbursementStatus": {
      "type": "string",
      "description": "The enum type for disbursement status.",
      "enum": [
        "SCHEDULE",
        "DONE",
        "FAILED",
        "VOID",
        "HOLD",
        "FXHOLD",
        "ESCHEATED",
        "UNDEFINED"
      ]
    },
    "DisbursementSubType": {
      "type": "string",
      "description": "PayBy.",
      "enum": [
        "NONE",
        "WIRE",
        "IACH",
        "LOCAL",
        "MULTIPLE",
        "ACH",
        "UNDEFINED"
      ]
    },
    "DisbursementType": {
      "type": "string",
      "description": "Enum for Disbursement type.",
      "enum": [
        "CHECK",
        "ACH",
        "RPPS",
        "PAYPAL",
        "OFFLINE",
        "INTERNATIONAL_E_PAYMENT",
        "AMEX",
        "VIRTUAL_CARD",
        "WALLET",
        "CREDIT_CARD",
        "UNDEFINED"
      ]
    },
    "FundingAccountResponse": {
      "required": [
        "type"
      ],
      "type": "object",
      "properties": {
        "type": {
          "allOf": [
            {
              "$ref": "#/$defs/FundingAccountTypeResponse"
            },
            {
              "description": "Payment funding type.\n* `BANK_ACCOUNT`: Bank account\n* `CARD_ACCOUNT`: Credit card or debit card\n* `WALLET`: BILL balance\n* `AP_CARD`: AP Card\n\nSee the BILL Help FAQ sections for [BILL balance](https://help.bill.com/direct/s/article/4409933681677) and [AP Card](https://help.bill.com/direct/s/article/000003348) for more information."
            }
          ]
        },
        "id": {
          "type": "string",
          "description": "BILL-generated ID of the selected payment funding type. For the `WALLET` type, the `id` is not required."
        }
      },
      "description": "Funding account details in Payments API."
    },
    "FundingAccountTypeResponse": {
      "type": "string",
      "description": "Funading account type for Payments API.",
      "enum": [
        "BANK_ACCOUNT",
        "CARD_ACCOUNT",
        "WALLET",
        "AP_CARD",
        "UNDEFINED"
      ]
    },
    "InternationalDisbursement": {
      "type": "object",
      "properties": {
        "sentDate": {
          "type": "string",
          "description": "International ePayment sent date",
          "format": "date"
        },
        "arrivesByDate": {
          "type": "string",
          "description": "International ePayment arrives by date",
          "format": "date"
        },
        "amount": {
          "type": "number",
          "description": "Disbursement amount"
        },
        "disbursementSubType": {
          "allOf": [
            {
              "$ref": "#/$defs/DisbursementSubType"
            },
            {
              "description": "Payment delivery method for making the International ePayment"
            }
          ]
        }
      },
      "description": "International disbursement dto when the disbursement type is international."
    },
    "PaymentPurposeCodeResponse": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string",
          "description": "Name"
        },
        "value": {
          "type": "string",
          "description": "Value"
        }
      },
      "description": "Payment purpose code response."
    },
    "PaymentPurposeResponse": {
      "type": "object",
      "properties": {
        "text": {
          "type": "string",
          "description": "Payment purpose text"
        },
        "code": {
          "allOf": [
            {
              "$ref": "#/$defs/PaymentPurposeCodeResponse"
            },
            {
              "description": "Payment purpose code"
            }
          ]
        }
      },
      "description": "Payment purpose response."
    },
    "PaymentSingleStatus": {
      "type": "string",
      "enum": [
        "DISBURSEMENT_FAILED_ACTION_NEEDED",
        "DISBURSEMENT_FAILED_VENDOR_BANK_REJECTED",
        "FUNDING_FAILED_ACTION_NEEDED",
        "EXPIRING",
        "FUNDS_ESCHEATED",
        "CANCELED",
        "FUNDING_FAILED_VOIDED",
        "VOIDED",
        "CLEARED",
        "DELIVERED",
        "DISBURSEMENT_ON_HOLD",
        "VOID_PENDING",
        "SENT",
        "DISBURSEMENT_ON_HOLD_PAYER_IN_REVIEW",
        "PROCESSED",
        "FUNDING_STARTED",
        "FUNDING_ON_HOLD",
        "WAITING_ON_APPROVAL",
        "SCHEDULED",
        "READY_TO_FUND",
        "CANCELLATION_IN_PROGRESS",
        "UNDEFINED",
        "PARTIALLY_CLAIMED",
        "PAID_OFFLINE"
      ]
    },
    "PaymentStatus": {
      "type": "string",
      "description": "The enum Payment status dto.",
      "enum": [
        "APPROVING",
        "SCHEDULED",
        "PAID",
        "CANCELLED",
        "VOID",
        "ESCHEATED",
        "UNDEFINED"
      ]
    },
    "PaymentVendorCreditResponseDto": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "description": "BILL-generated ID of the vendor credit applied to the bill payment. The value begins with `vcr`."
        },
        "amount": {
          "type": "number",
          "description": "Credit amount"
        }
      },
      "description": "Payment vendor credit response DTO."
    },
    "ProcessingOptionsResponse": {
      "type": "object",
      "properties": {
        "requestPayFaster": {
          "type": "boolean",
          "description": "Set as `true` to use BILL Pay Faster. This field is required if `requestCheckDeliveryType` is set.\n\n  See [Payments](https://developer.bill.com/docs/ap-payments)   in the Guides section for information about BILL Pay Faster payments."
        },
        "createBill": {
          "type": "boolean",
          "description": "* Set as `false` to create a vendor payment for an existing bill.\n* Set as `true` to create a bill for a vendor payment. If `createBill` is `true`, do not set `billId` in your payment request."
        },
        "requestCheckDeliveryType": {
          "allOf": [
            {
              "$ref": "#/$defs/CheckDeliveryTypeResponse"
            },
            {
              "description": "BILL Pay Faster payment delivery type. The `RTP_DELIVERY` option is not available for vendor payments by check."
            }
          ]
        }
      },
      "description": "User provided options for processing the payments request."
    },
    "RppsDisbursement": {
      "type": "object",
      "properties": {
        "sentDate": {
          "type": "string",
          "description": "ACH payment to verified national vendor sent date",
          "format": "date"
        },
        "arrivesByDate": {
          "type": "string",
          "description": "ACH payment to verified national vendor arrives by date",
          "format": "date"
        },
        "traceNumber": {
          "type": "integer",
          "description": "Payment trace number. This value is used to uniquely identify a payment in a batch.",
          "format": "int32"
        },
        "batchNumber": {
          "type": "integer",
          "description": "Payment batch number",
          "format": "int32"
        }
      },
      "description": "Rpps disbursement dto when the disbursement type is ACH to verified national vendor."
    },
    "VcardDisbursement": {
      "type": "object",
      "properties": {
        "arrivesByDate": {
          "type": "string",
          "description": "Virtual card payment arrives by date",
          "format": "date"
        },
        "validUntil": {
          "type": "string",
          "description": "Date until when the card is valid",
          "format": "date"
        },
        "last4CardNumber": {
          "type": "string",
          "description": "Masked number for virtual card"
        }
      },
      "description": "Virtual card disbursement dto when the disbursement type is virtual card."
    },
    "VoidInfo": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "description": "BILL-generated ID of the void payment request. The value begins with `vrq`."
        },
        "requestedBy": {
          "type": "string",
          "description": "BILL-generated ID of the user that requested a void payment. The value begins with `006`."
        },
        "type": {
          "allOf": [
            {
              "$ref": "#/$defs/VoidType"
            },
            {
              "description": "Void payment request type."
            }
          ]
        },
        "status": {
          "allOf": [
            {
              "$ref": "#/$defs/VoidStatus"
            },
            {
              "description": "Void payment request status."
            }
          ]
        },
        "reason": {
          "type": "string",
          "description": "Void payment request reason"
        },
        "createdTime": {
          "type": "string",
          "description": "Void payment request created date and time",
          "format": "date-time"
        },
        "updatedTime": {
          "type": "string",
          "description": "Void payment request updated date and time",
          "format": "date-time"
        }
      },
      "description": "Void information for the Payments DTO."
    },
    "VoidStatus": {
      "type": "string",
      "description": "Void status enum.",
      "enum": [
        "TO_BE_PROCESSED",
        "ACCEPTED",
        "REJECTED",
        "NO_OP",
        "ARCHIVED"
      ]
    },
    "VoidType": {
      "type": "string",
      "description": "Void type enum.",
      "enum": [
        "VOID_AND_CREDIT",
        "VOID_AND_REISSUE",
        "VOID_ONLY",
        "VOID_AND_REISSUE_VCARD"
      ]
    },
    "WalletDisbursement": {
      "type": "object",
      "properties": {
        "arrivesByDate": {
          "type": "string",
          "description": "Instant Transfer (wallet) payment arrives by date",
          "format": "date"
        }
      },
      "description": "Wallet disbursement dto when the disbursement type is wallet."
    }
  }
}