Payabli Customer API

The Customer API from Payabli — 4 operation(s) for customer.

OpenAPI Specification

payabli-customer-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: API reference Bill Customer API
  version: 1.0.0
servers:
- url: https://api-sandbox.payabli.com/api
  description: Sandbox
- url: https://api.payabli.com/api
  description: Production
tags:
- name: Customer
paths:
  /Customer/single/{entry}:
    post:
      operationId: AddCustomer
      summary: Add customer
      description: 'Creates a customer in an entrypoint. An identifier is required to create customer records. Change your identifier settings in Settings > Custom Fields in the Payabli Portal.

        If you don''t include an identifier, the record is rejected.'
      tags:
      - Customer
      parameters:
      - name: entry
        in: path
        description: The entrypoint identifier.
        required: true
        schema:
          $ref: '#/components/schemas/Entrypointfield'
      - name: forceCustomerCreation
        in: query
        description: When `true`, the request creates a new customer record, regardless of whether customer identifiers match an existing customer.
        required: false
        schema:
          type: boolean
          default: false
      - name: replaceExisting
        in: query
        description: 'Flag indicating to replace existing customer with a new record. Possible values: 0 (don''t replace), 1 (replace). Default is `0`.'
        required: false
        schema:
          type: integer
          default: 0
      - name: Authorization
        in: header
        description: 'OAuth2 Bearer access token from the client-credentials flow. See [OAuth authentication](/developers/oauth-authentication).

          '
        required: true
        schema:
          type: string
      - name: idempotencyKey
        in: header
        description: _Optional but recommended_ A unique ID that you can include to prevent duplicating objects or transactions in the case that a request is sent more than once. This key isn't generated in Payabli, you must generate it yourself. This key persists for 2 minutes. After 2 minutes, you can reuse the key if needed.
        required: false
        schema:
          $ref: '#/components/schemas/IdempotencyKey'
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PayabliApiResponseCustomerQuery'
        '400':
          description: Bad request / invalid data.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PayabliErrorBody'
        '401':
          description: Unauthorized request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PayabliErrorBody'
        '500':
          description: Internal server error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PayabliErrorBody'
        '503':
          description: Database connection error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PayabliErrorBody'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CustomerData'
  /Customer/{customerId}:
    get:
      operationId: GetCustomer
      summary: Get customer record
      description: Retrieves a customer's record and details.
      tags:
      - Customer
      parameters:
      - name: customerId
        in: path
        description: Payabli-generated customer ID. Maps to "Customer ID" column in the Payabli Portal.
        required: true
        schema:
          type: integer
      - name: Authorization
        in: header
        description: 'OAuth2 Bearer access token from the client-credentials flow. See [OAuth authentication](/developers/oauth-authentication).

          '
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomerQueryRecords'
        '400':
          description: Bad request / invalid data.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PayabliErrorBody'
        '401':
          description: Unauthorized request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PayabliErrorBody'
        '500':
          description: Internal server error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PayabliErrorBody'
        '503':
          description: Database connection error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PayabliErrorBody'
    put:
      operationId: UpdateCustomer
      summary: Update customer record
      description: Update a customer record. Include only the fields you want to change.
      tags:
      - Customer
      parameters:
      - name: customerId
        in: path
        description: Payabli-generated customer ID. Maps to "Customer ID" column in the Payabli Portal.
        required: true
        schema:
          type: integer
      - name: Authorization
        in: header
        description: 'OAuth2 Bearer access token from the client-credentials flow. See [OAuth authentication](/developers/oauth-authentication).

          '
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PayabliApiResponse00Responsedatanonobject'
        '400':
          description: Bad request / invalid data.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PayabliErrorBody'
        '401':
          description: Unauthorized request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PayabliErrorBody'
        '500':
          description: Internal server error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PayabliErrorBody'
        '503':
          description: Database connection error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PayabliErrorBody'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CustomerData'
    delete:
      operationId: DeleteCustomer
      summary: Delete customer record
      description: Delete a customer record.
      tags:
      - Customer
      parameters:
      - name: customerId
        in: path
        description: Payabli-generated customer ID. Maps to "Customer ID" column in the Payabli Portal.
        required: true
        schema:
          type: integer
      - name: Authorization
        in: header
        description: 'OAuth2 Bearer access token from the client-credentials flow. See [OAuth authentication](/developers/oauth-authentication).

          '
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PayabliApiResponse00Responsedatanonobject'
        '400':
          description: Bad request / invalid data.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PayabliErrorBody'
        '401':
          description: Unauthorized request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PayabliErrorBody'
        '500':
          description: Internal server error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PayabliErrorBody'
        '503':
          description: Database connection error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PayabliErrorBody'
  /Customer/link/{customerId}/{transId}:
    get:
      operationId: LinkCustomerTransaction
      summary: Link Customer to Transaction
      description: Links a customer to a transaction by ID.
      tags:
      - Customer
      parameters:
      - name: customerId
        in: path
        description: Payabli-generated customer ID. Maps to "Customer ID" column in the Payabli Portal.
        required: true
        schema:
          type: integer
      - name: transId
        in: path
        description: ReferenceId for the transaction (PaymentId).
        required: true
        schema:
          type: string
      - name: Authorization
        in: header
        description: 'OAuth2 Bearer access token from the client-credentials flow. See [OAuth authentication](/developers/oauth-authentication).

          '
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PayabliApiResponse00Responsedatanonobject'
        '400':
          description: Bad request / invalid data.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PayabliErrorBody'
        '401':
          description: Unauthorized request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PayabliErrorBody'
        '500':
          description: Internal server error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PayabliErrorBody'
        '503':
          description: Database connection error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PayabliErrorBody'
  /Customer/{customerId}/consent:
    post:
      operationId: RequestConsent
      summary: Request consent opt-in
      description: Sends the consent opt-in email to the customer email address in the customer record.
      tags:
      - Customer
      parameters:
      - name: customerId
        in: path
        description: Payabli-generated customer ID. Maps to "Customer ID" column in the Payabli Portal.
        required: true
        schema:
          type: integer
      - name: Authorization
        in: header
        description: 'OAuth2 Bearer access token from the client-credentials flow. See [OAuth authentication](/developers/oauth-authentication).

          '
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PayabliApiResponse00Responsedatanonobject'
        '400':
          description: Bad request / invalid data.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PayabliErrorBody'
        '401':
          description: Unauthorized request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PayabliErrorBody'
        '500':
          description: Internal server error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PayabliErrorBody'
        '503':
          description: Database connection error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PayabliErrorBody'
components:
  schemas:
    CustomerQueryRecordsCustomerConsent:
      type: object
      properties:
        eCommunication:
          $ref: '#/components/schemas/CustomerQueryRecordsCustomerConsentECommunication'
          description: Describes the customer's email communications consent status.
        sms:
          $ref: '#/components/schemas/CustomerQueryRecordsCustomerConsentSms'
          description: Describes the customer's SMS communications consent status.
      title: CustomerQueryRecordsCustomerConsent
    AccountId:
      type: string
      description: Custom identifier for payment connector.
      title: AccountId
    Shippingaddress:
      type: string
      description: The shipping address.
      title: Shippingaddress
    AvsResponse:
      type: string
      description: 'Text code describing the result for address validation (applies only for

        card transactions).

        '
      title: AvsResponse
    FreightAmount:
      type: number
      format: double
      description: Freight/shipping amount.
      title: FreightAmount
    Maskedaccount:
      type: string
      description: 'Masked card or bank account used in transaction. In the case of Apple

        Pay, this is a masked DPAN (device primary account number).

        '
      title: Maskedaccount
    PayabliErrorBodyResponseData:
      type: object
      properties:
        explanation:
          type: string
          description: Human-readable explanation of what happened.
        todoAction:
          type: string
          description: Suggested resolution.
      description: Object with detailed error context.
      title: PayabliErrorBodyResponseData
    MfaMode:
      type: integer
      title: MfaMode
    CvvResponseText:
      type: string
      description: 'Text code describing the result for CVV validation (applies only for card

        transactions).

        '
      title: CvvResponseText
    BillDataPaymentTerms:
      type: string
      enum:
      - PIA
      - CIA
      - UR
      - NET10
      - NET20
      - NET30
      - NET45
      - NET60
      - NET90
      - EOM
      - MFI
      - 5MFI
      - 10MFI
      - 15MFI
      - 20MFI
      - 2/10NET30
      - UF
      - 10UF
      - 20UF
      - 25UF
      - 50UF
      description: 'Payment terms for invoice. If no terms are defined, then response data for

        this field defaults to `NET30`. Mirrors the values in

        [`Terms`](#schema-terms).

        '
      title: BillDataPaymentTerms
    Email:
      type: string
      format: email
      description: Email address.
      title: Email
    Accountexp:
      type: string
      description: Expiration date of card used in transaction.
      title: Accountexp
    SplitCount:
      type: integer
      description: 'Number of split funding instructions associated with the transaction.

        Returns `0` when the transaction has no splits.

        '
      title: SplitCount
    CvvResponse:
      type: string
      description: 'Text code describing the result for CVV validation (applies only for card

        transactions).

        '
      title: CvvResponse
    ResultCodeText:
      type: string
      description: 'Description of the result code. See

        [Pay In unified response codes](/guides/pay-in-unified-response-codes-reference)

        for more information.

        '
      title: ResultCodeText
    Discount:
      type: number
      format: double
      description: Discount applied to the invoice.
      title: Discount
    CustomerStatus:
      type: integer
      description: 'Customer Status. Possible values:


        - `-99` Deleted

        - `0` Inactive

        - `1` Active

        - `85` Locked (typically due to multiple failed login attempts)

        '
      title: CustomerStatus
    ItemUnitofMeasure:
      type: string
      description: Unit of measurement. Max length of 100 characters.
      title: ItemUnitofMeasure
    SummaryCommodityCode:
      type: string
      description: Commodity code.
      title: SummaryCommodityCode
    TransactionTime:
      type: string
      format: date-time
      description: Timestamp when transaction was submitted, in UTC.
      title: TransactionTime
    Entrypointfield:
      type: string
      description: The entrypoint identifier.
      title: Entrypointfield
    PageIdentifier:
      type: string
      description: Auxiliary validation used internally by payment pages and components.
      title: PageIdentifier
    IdempotencyKey:
      type: string
      description: '_Optional but recommended._ A unique ID that you can include to prevent

        duplicating objects or transactions in the case that a request is sent

        more than once. This key isn''t generated in Payabli; you must generate it

        yourself. The key persists for 2 minutes. After 2 minutes, you can reuse

        the key if needed.

        '
      title: IdempotencyKey
    QueryTransactionPayorData:
      type: object
      properties:
        Identifiers:
          type: array
          items:
            description: Any type
          description: Array of field names to be used as identifiers.
        FirstName:
          type: string
          description: Customer/Payor first name.
        LastName:
          type: string
          description: Customer/Payor last name.
        CompanyName:
          type: string
          description: Customer's company name.
        BillingAddress1:
          type: string
          description: Customer's billing address.
        BillingAddress2:
          type: string
          description: Additional line for Customer's billing address.
        BillingCity:
          type: string
          description: Customer's billing city.
        BillingState:
          type: string
          description: Customer's billing state. Must be 2-letter state code for address in US.
        BillingZip:
          $ref: '#/components/schemas/BillingZip'
          description: Customer's billing ZIP code.
        BillingCountry:
          type: string
          description: Customer's billing country.
        BillingPhone:
          type: string
          description: Customer's phone number.
        BillingEmail:
          $ref: '#/components/schemas/Email'
          description: Customer's email address.
        CustomerNumber:
          $ref: '#/components/schemas/CustomerNumberNullable'
        ShippingAddress1:
          $ref: '#/components/schemas/Shippingaddress'
        ShippingAddress2:
          $ref: '#/components/schemas/Shippingaddressadditional'
        ShippingCity:
          $ref: '#/components/schemas/Shippingcity'
        ShippingState:
          $ref: '#/components/schemas/Shippingstate'
        ShippingZip:
          $ref: '#/components/schemas/Shippingzip'
        ShippingCountry:
          $ref: '#/components/schemas/Shippingcountry'
        customerId:
          $ref: '#/components/schemas/CustomerId'
        customerStatus:
          $ref: '#/components/schemas/CustomerStatus'
        AdditionalData:
          $ref: '#/components/schemas/AdditionalDataMap'
      title: QueryTransactionPayorData
    DutyAmount:
      type: number
      format: double
      description: Duty amount.
      title: DutyAmount
    OptinStatus:
      type: integer
      description: 'Customer''s consent status. Allowed status:


        - `0`: Customer hasn''t opted in to communications

        - `-1`: Customer opt in pending

        - `1`: Customer has opted in to communications

        '
      title: OptinStatus
    Tax:
      type: number
      format: double
      description: Tax rate in percent applied to the invoice.
      title: Tax
    FileContent:
      type: object
      properties:
        fContent:
          type: string
          description: 'Content of file, Base64-encoded. Ignored if `furl` is specified. Max

            upload size is 30 MB.

            '
        filename:
          type: string
          description: The name of the attached file.
        ftype:
          $ref: '#/components/schemas/FileContentFtype'
        furl:
          type: string
          description: Optional URL provided to show or download the file remotely.
      description: Contains details about a file. Max upload size is 30 MB.
      title: FileContent
    AchSecCode:
      type: string
      description: "Standard Entry Class (SEC) code is a three letter code that describes\nhow an ACH payment was authorized. Supported values are:\n\n- **PPD** (Prearranged Payment and Deposit) — Used for credits or debits\n  where an accountholder authorizes a company to initiate either a single\n  or recurring transaction to their personal bank account. Common examples\n  include direct deposit of payroll, mortgage payments, or utility bills.\n  This is the default value for subscription payments.\n- **WEB** (Internet-Initiated/Mobile Entry) — Used for debit entries when\n  authorization is obtained from an accountholder via the internet or a\n  wireless network. Common examples are online bill payments, ecommerce\n  purchases, and mobile app payments where the consumer enters their\n  banking information online.\n- **TEL** (Telephone-Initiated Entry) — Used for one-time debit entries\n  where authorization is obtained from a consumer via telephone. Common\n  examples are phone-based purchases or bill payments where the consumer\n  provides their banking information over the phone.\n- **CCD** (Corporate Credit or Debit) — Used for fund transfers between\n  business accounts. This code is specifically for business-to-business\n  transactions. Common examples include vendor payments and other\n  business-to-business payments.\n- **BOC** (Back Office Conversion) — Used to convert paper checks received\n  in-person at a point-of-sale or staffed payment location into electronic\n  ACH debits. Required for Remote Deposit Capture (RDC) transactions. Only\n  supports consumer checks; business, government, and mailed checks\n  aren't eligible.\n"
      title: AchSecCode
    ItemDescription:
      type: string
      description: Item or product description. Max length of 250 characters.
      title: ItemDescription
    CreatedAt:
      type: string
      format: date-time
      description: Timestamp of when record was created, in UTC.
      title: CreatedAt
    BinData:
      type: object
      properties:
        binMatchedLength:
          type: string
          description: 'The number of characters from the beginning of the card number that

            were matched against a Bank Identification Number (BIN) or the Card

            Range table.'
        binCardBrand:
          type: string
          description: 'The card brand. For example, Visa, Mastercard, American Express,

            Discover.'
        binCardType:
          type: string
          description: 'The type of card: `Credit` or `Debit`. Case can vary between

            processors, so compare this value case-insensitively.'
        binCardCategory:
          type: string
          description: 'The category of the card, which indicates the card product. For example: Standard, Gold, Platinum, etc. The binCardCategory for prepaid cards is marked `PREPAID`.'
        binCardIssuer:
          type: string
          description: The name of the financial institution that issued the card.
        binCardIssuerCountry:
          type: string
          description: The issuing financial institution's country name.
        binCardIssuerCountryCodeA2:
          type: string
          description: The issuing financial institution's two-character ISO country code. See [this resource](https://www.iso.org/obp/ui/#search) for a list of codes.
        binCardIssuerCountryNumber:
          type: string
          description: The issuing financial institution's ISO standard numeric country code. See [this resource](https://www.iso.org/obp/ui/#search) for a list of codes.
        binCardIsRegulated:
          type: string
          description: Indicates whether the card is regulated.
        binCardUseCategory:
          type: string
          description: The use category classification for the card.
        binCardIssuerCountryCodeA3:
          type: string
          description: 'The issuing financial institution''s three-character ISO country code.

            See [this resource](https://www.iso.org/obp/ui/#search) for a list of

            codes.'
      description: 'Object containing information related to the card. This object is `null`

        unless the payment method is card. If the payment method is Apple Pay, the

        binData will be related to the DPAN (device primary account number), not

        the card connected to Apple Pay.'
      title: BinData
    Holdername:
      type: string
      description: The cardholder name.
      title: Holdername
    ResponseText:
      type: string
      description: 'Response text for operation: ''Success'' or ''Declined''.

        '
      title: ResponseText
    AchHolderType:
      type: string
      enum:
      - personal
      - business
      default: personal
      description: 'The bank''s accountholder type: personal or business.

        '
      title: AchHolderType
    Shippingstate:
      type: string
      description: Shipping state or province.
      title: Shippingstate
    Initiator:
      type: string
      description: 'The transaction''s initiator. Indicates who initiated the transaction.

        '
      title: Initiator
    CustomerQueryRecords:
      type: object
      properties:
        customerId:
          $ref: '#/components/schemas/CustomerId'
        customerNumber:
          $ref: '#/components/schemas/CustomerNumberNullable'
        customerUsername:
          type: string
          description: Username for customer.
        customerStatus:
          $ref: '#/components/schemas/CustomerStatus'
        Company:
          type: string
          description: Company name.
        Firstname:
          type: string
          description: Customer first name.
        Lastname:
          type: string
          description: Customer last name.
        Phone:
          type: string
          description: Customer phone number.
        Email:
          $ref: '#/components/schemas/Email'
          description: Customer email address.
        Address:
          type: string
          description: Customer address.
        Address1:
          type: string
          description: Additional line for customer address.
        City:
          type: string
          description: Customer city.
        State:
          type: string
          description: Customer state.
        Zip:
          type: string
          description: Customer postal code.
        Country:
          type: string
          description: Customer country.
        ShippingAddress:
          $ref: '#/components/schemas/Shippingaddress'
        ShippingAddress1:
          $ref: '#/components/schemas/Shippingaddressadditional'
        ShippingCity:
          $ref: '#/components/schemas/Shippingcity'
        ShippingState:
          $ref: '#/components/schemas/Shippingstate'
        ShippingZip:
          $ref: '#/components/schemas/Shippingzip'
        ShippingCountry:
          $ref: '#/components/schemas/Shippingcountry'
        Balance:
          type: number
          format: double
          description: Customer balance.
        TimeZone:
          $ref: '#/components/schemas/Timezone'
        MFA:
          $ref: '#/components/schemas/Mfa'
        MFAMode:
          $ref: '#/components/schemas/MfaMode'
        snProvider:
          type: string
          description: 'Social network linked to customer. Possible values:

            - `facebook`

            - `google`

            - `twitter`

            - `microsoft`'
        snIdentifier:
          type: string
          description: Identifier or token for customer in linked social network.
        snData:
          type: string
          description: Additional data provided by the social network related to the customer.
        LastUpdated:
          type: string
          format: date-time
          description: Date and time of last update.
        Created:
          type: string
          format: date-time
          description: Date and time created.
        AdditionalFields:
          type: object
          additionalProperties:
            type: string
          description: List of additional custom fields in format key:value.
        IdentifierFields:
          $ref: '#/components/schemas/Identifierfields'
        Subscriptions:
          type: array
          items:
            $ref: '#/components/schemas/SubscriptionQueryRecords'
          description: List of subscriptions associated to the customer.
        StoredMethods:
          type: array
          items:
            $ref: '#/components/schemas/MethodQueryRecords'
          description: List of payment methods associated to the customer.
        customerSummary:
          $ref: '#/components/schemas/CustomerSummaryRecord'
        PaypointLegalname:
          $ref: '#/components/schemas/Legalname'
          description: Paypoint legal name.
        PaypointDbaname:
          $ref: '#/components/schemas/Dbaname'
          description: Paypoint DBA name.
        ParentOrgName:
          $ref: '#/components/schemas/OrgParentName'
        ParentOrgId:
          $ref: '#/components/schemas/OrgParentId'
        PaypointEntryname:
          $ref: '#/components/schemas/Entrypointfield'
        pageidentifier:
          $ref: '#/components/schemas/PageIdentifier'
        externalPaypointID:
          $ref: '#/components/schemas/ExternalPaypointId'
        customerConsent:
          $ref: '#/components/schemas/CustomerQueryRecordsCustomerConsent'
        customerPortal:
          type:
          - string
          - 'null'
      title: CustomerQueryRecords
    PayabliApiResponse00Responsedatanonobject:
      type: object
      properties:
        responseCode:
          $ref: '#/components/schemas/Responsecode'
        pageIdentifier:
          $ref: '#/components/schemas/PageIdentifier'
        roomId:
          type: integer
          format: int64
          description: Describes the room ID. Only in use on Boarding endpoints, returns `0` when not applicable.
        isSuccess:
          $ref: '#/components/schemas/IsSuccess'
        responseText:
          $ref: '#/components/schemas/ResponseText'
        responseData:
          $ref: '#/components/schemas/Responsedatanonobject'
      required:
      - responseText
      title: PayabliApiResponse00Responsedatanonobject
    FeeAmount:
      type: number
      format: double
      description: Service fee or sub-charge applied.
      title: FeeAmount
    CustomerId:
      type: integer
      format: int64
      description: The Payabli-generated unique ID for the customer.
      title: CustomerId
    ExternalProcessorInformation:
      type: string
      description: Information from the external processor about the transaction.
      title: ExternalProcessorInformation
    CustomerNumberNullable:
      type: string
      description: 'User-provided unique identifier for the customer. This is typically the

        customer ID from your own system.

        '
      title: CustomerNumberNullable
    BillItem:
      type: object
      properties:
        itemCategories:
          type: array
          items:
            type: string
          description: Array of tags classifying item or product.
        itemCommodityCode:
          $ref: '#/components/schemas/ItemCommodityCode'
        itemCost:
          type: number
          format: double
          description: Item or product price per unit.
        itemDescription:
          $ref: '#/components/schemas/ItemDescription'
        itemMode:
          type: integer
          description: 'Internal class of item or product: value `0` is only for invoices,

            `1` for bills, and `2` is common for both. Required on invoice line

            items — invoice creation fails with `Invalid item data` if it''s omitted.

            '
        itemProductCode:
          $ref: '#/components/schemas/ItemProductCode'
        itemProductName:
          $ref: '#/components/schemas/ItemProductName'
        itemQty:
          type: integer
          description: Quantity of item or product.
        itemTaxAmount:
          type: number
          format: double
          description: Tax amount applied to item or product.
        itemTaxRate:
          type: number
          format: double
          description: Tax rate applied to item or product.
        itemTotalAmount:
          t

# --- truncated at 32 KB (74 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/payabli/refs/heads/main/openapi/payabli-customer-api-openapi.yml