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

# Save bills

> Save new (or update existing) bills



## OpenAPI

````yaml https://dev.tight.com/v3/api-docs post /v6/bills
openapi: 3.0.1
info:
  title: Tight API
  contact:
    name: Hurdlr, Inc. (dba Tight)
    url: https://www.tight.com
    email: api@tight.com
  version: 6.0.0
servers:
  - url: https://sandbox.tight.com
    description: Staging Environment
  - url: https://prod.tight.com
    description: Production Environment
security:
  - EmbedToken: []
paths:
  /v6/bills:
    post:
      tags:
        - Bills
      summary: Save bills
      description: Save new (or update existing) bills
      operationId: postBills
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/MultiParamBillPostDto'
        required: true
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseListMultiResponseBillGetDto'
        '207':
          description: Some bills failed to save. See response body for error details.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseListMultiResponseBillGetDto'
        '400':
          description: All bills failed to save.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseListMultiResponseBillGetDto'
        '401':
          description: Not authenticated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                result: FAILURE
                error:
                  - type: INVALID_TOKEN
                    message: Invalid access token
        '403':
          description: Not authorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                result: FAILURE
                error:
                  - type: FORBIDDEN
                    message: Expired access token
        '404':
          description: Endpoint not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                result: FAILURE
                error:
                  - type: BAD_REQUEST
                    message: Resource not found
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                result: FAILURE
                error:
                  - type: UNKNOWN_ERROR
                    message: Something went wrong. Please try again later.
      security:
        - EmbedToken: []
components:
  schemas:
    MultiParamBillPostDto:
      required:
        - data
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/BillPostDto'
    ResponseListMultiResponseBillGetDto:
      type: object
      properties:
        result:
          type: string
          description: The result of the action performed.
          enum:
            - SUCCESS
            - FAILURE
        data:
          type: array
          description: The data generated by the action performed.
          items:
            $ref: '#/components/schemas/MultiResponseBillGetDto'
        error:
          type: array
          items:
            $ref: '#/components/schemas/ErrorItem'
    ErrorResponse:
      type: object
      properties:
        result:
          type: string
          description: The result of the action performed.
          enum:
            - SUCCESS
            - FAILURE
        data:
          type: object
          description: The data generated by the action performed.
          nullable: true
        error:
          type: array
          items:
            $ref: '#/components/schemas/ErrorItem'
    BillPostDto:
      required:
        - apiName
        - apiSourceId
        - lineItems
        - name
        - vendorId
      type: object
      properties:
        id:
          type: string
          description: Id of the bill, required when updating an existing bill
          example: bll_158998869
        name:
          type: string
          description: Name of the bill
          nullable: false
          example: Office rent
        billNo:
          type: integer
          description: Bill number
          format: int32
          nullable: false
          example: 1001
        status:
          type: string
          description: Status of the bill
          nullable: false
          example: ACTIVE
          enum:
            - ACTIVE
            - INACTIVE
            - REMOVED
        billStatus:
          type: string
          description: Bill status of the bill
          nullable: false
          example: OPEN
          enum:
            - DRAFT
            - OPEN
            - CLOSED
            - CANCELLED
            - REFUNDED
        date:
          type: string
          description: Date of the bill
          format: date
          nullable: false
          example: '2025-06-26'
        vendorId:
          type: string
          description: Id of the vendor associated with the bill
          nullable: false
          example: vnd_28868401
        apiName:
          type: string
          description: Name of the API from which this bill originated
          nullable: false
          enum:
            - BOX
            - CLOVER
            - STRIPE
            - PLAID
            - KNOX
            - UBER
            - FRESHBOOKS
            - HARVEST
            - KW
            - FRESHBOOKS2
            - CAPITAL_ONE
            - SQUARE
            - DOTLOOP
            - REALOGY
            - UPWORK
            - SHOPIFY
            - DEDUCTR
            - ENTERPRISE
            - MOXIWORKS
            - APPDIRECT
            - LONEWOLF
            - LONEWOLF_TRANSACTIONDESK
            - SAMPLE_BANK
            - TAXBOT
            - GUSTO
            - XERO
            - UNIT
            - MOOV
            - QBO
            - QUALPAY
            - BENCH
            - PARTNER_IMPLEMENTATION
            - CHECK
            - RUTTER
            - WAVE
            - MANUAL_ENTRY
            - CSV_IMPORT
            - ADYEN
            - PAYABLI
            - MANUAL_ENTRY
            - MELIO
            - PARTNER_IMPLEMENTATION
            - STRIPE
        apiSourceId:
          type: string
          description: Id of the bill on associated API
          nullable: true
          example: ext_123
        lineItems:
          type: array
          nullable: false
          items:
            type: object
            properties:
              id:
                type: string
                description: >-
                  Id of the bill line item, required when updating existing line
                  items
                example: bli_123456
              description:
                type: string
                description: Description of the line item
                nullable: false
                example: Office supplies
              amount:
                type: integer
                description: Amount of the line item (in cents)
                format: int32
                nullable: false
                example: 5001
              apiItemId:
                type: string
                description: API item id of the line item
                nullable: false
                example: item_123
              glAccountId:
                type: string
                description: Id of the GL account associated with the line item
                nullable: false
                example: gla_38560327
            description: Line items of the bill
        customData:
          $ref: '#/components/schemas/JsonNode'
    MultiResponseBillGetDto:
      type: object
      properties:
        result:
          type: string
          description: The result of the action performed.
          enum:
            - SUCCESS
            - FAILURE
        statusCode:
          $ref: '#/components/schemas/HttpStatus'
        data:
          $ref: '#/components/schemas/BillGetDto'
        error:
          type: array
          items:
            $ref: '#/components/schemas/ErrorItem'
      description: The data generated by the action performed.
    ErrorItem:
      type: object
      properties:
        type:
          type: string
          description: The type of the error. Safe for programmatic use.
          enum:
            - UNKNOWN_ERROR
            - INVALID_TOKEN
            - EXPIRED_TOKEN
            - FORBIDDEN
            - BAD_REQUEST
            - JSON_ERROR
            - DUPLICATE
            - REQUIRED
            - INVALID_VALUE
            - NOT_MODIFIABLE
            - INVALID_FORMAT
            - NOT_FOUND
        message:
          type: string
          description: >-
            A human-readable message providing more details about the error.
            Safe for displaying to a user.
        param:
          type: string
          description: >-
            If the error is parameter-specific, the parameter related to the
            error. This can be used to display a message near the correct form
            field.
      description: Errors associated with the action performed, if applicable.
    JsonNode:
      type: object
      properties:
        empty:
          type: boolean
        array:
          type: boolean
        'null':
          type: boolean
        object:
          type: boolean
        float:
          type: boolean
        string:
          type: boolean
        number:
          type: boolean
        missingNode:
          type: boolean
        valueNode:
          type: boolean
        nodeType:
          type: string
          enum:
            - ARRAY
            - BINARY
            - BOOLEAN
            - MISSING
            - 'NULL'
            - NUMBER
            - OBJECT
            - POJO
            - STRING
        pojo:
          type: boolean
        integralNumber:
          type: boolean
        floatingPointNumber:
          type: boolean
        short:
          type: boolean
        int:
          type: boolean
        long:
          type: boolean
        double:
          type: boolean
        bigDecimal:
          type: boolean
        bigInteger:
          type: boolean
        textual:
          type: boolean
          deprecated: true
        boolean:
          type: boolean
        binary:
          type: boolean
        container:
          type: boolean
        embeddedValue:
          type: boolean
      description: >-
        Custom JSON in which you can store any data with max length of 2000
        characters
      nullable: true
      example:
        internal_key: some_internal_key
        some_other_field: 23434
    HttpStatus:
      type: integer
      description: The HTTP status code for the action performed.
      format: int32
      enum:
        - 200
        - 400
        - 401
        - 403
        - 404
        - 500
    BillGetDto:
      required:
        - apiName
        - apiSourceId
        - billNo
        - billStatus
        - date
        - id
        - name
        - status
        - vendor
      type: object
      properties:
        id:
          type: string
          description: Id of the bill
          example: bll_158998869
        name:
          type: string
          description: Name of the bill
          example: Office rent
        billNo:
          type: integer
          description: Bill number
          format: int32
          example: 1001
        status:
          type: string
          description: Status of the bill
          example: ACTIVE
          enum:
            - ACTIVE
            - INACTIVE
            - REMOVED
        billStatus:
          type: string
          description: Bill status of the bill
          example: OPEN
          enum:
            - DRAFT
            - OPEN
            - CLOSED
            - CANCELLED
            - REFUNDED
        date:
          type: string
          description: Date of the bill
          format: date
          example: '2025-06-26'
        vendor:
          $ref: '#/components/schemas/VendorExpanded'
        apiName:
          type: string
          description: Name of the API from which this bill originated
          example: QBO
          enum:
            - BOX
            - CLOVER
            - STRIPE
            - PLAID
            - KNOX
            - UBER
            - FRESHBOOKS
            - HARVEST
            - KW
            - FRESHBOOKS2
            - CAPITAL_ONE
            - SQUARE
            - DOTLOOP
            - REALOGY
            - UPWORK
            - SHOPIFY
            - DEDUCTR
            - ENTERPRISE
            - MOXIWORKS
            - APPDIRECT
            - LONEWOLF
            - LONEWOLF_TRANSACTIONDESK
            - SAMPLE_BANK
            - TAXBOT
            - GUSTO
            - XERO
            - UNIT
            - MOOV
            - QBO
            - QUALPAY
            - BENCH
            - PARTNER_IMPLEMENTATION
            - CHECK
            - RUTTER
            - WAVE
            - MANUAL_ENTRY
            - CSV_IMPORT
            - ADYEN
            - PAYABLI
            - MANUAL_ENTRY
            - MELIO
            - PARTNER_IMPLEMENTATION
            - STRIPE
        apiSourceId:
          type: string
          description: Id of the bill on associated API
          nullable: true
          example: ext_123
        lineItems:
          type: array
          items:
            $ref: '#/components/schemas/BillLineItemGetDto'
        installments:
          type: array
          items:
            $ref: '#/components/schemas/InstallmentGetDto'
        customData:
          $ref: '#/components/schemas/JsonNode'
      description: The data generated by the action performed.
    VendorExpanded:
      required:
        - id
      type: object
      properties:
        id:
          type: string
          description: Id of the vendor
          example: vnd_28868401
        name:
          type: string
          description: Name of the vendor
          example: Gusto
      description: Vendor associated with this child payment
      nullable: true
    BillLineItemGetDto:
      required:
        - amount
        - apiItemId
        - description
        - glAccount
        - id
      type: object
      properties:
        id:
          type: string
          description: Id of the bill line item
          example: bli_123456
        description:
          type: string
          description: Description of the line item
          example: Office supplies
        amount:
          type: integer
          description: Amount of the line item (in cents)
          format: int32
          example: 5001
        apiItemId:
          type: string
          description: API item id of the line item
          nullable: true
          example: item_123
        glAccount:
          $ref: '#/components/schemas/GlAccountExpanded'
      description: Line items of the bill
    InstallmentGetDto:
      required:
        - amountDue
        - balance
        - dueDate
        - id
        - name
      type: object
      properties:
        id:
          type: string
          description: Id of the installment
          example: istl_123
        name:
          type: string
          description: Name of the installment
          nullable: true
          example: First installment
        dueDate:
          type: string
          description: Due date of the installment
          format: date
          nullable: true
          example: '2025-07-15'
        balance:
          type: integer
          description: Balance of the installment (in cents)
          format: int32
          nullable: true
          example: 10000
        amountDue:
          $ref: '#/components/schemas/AmountDue'
      description: Installments of the invoice
    GlAccountExpanded:
      required:
        - id
      type: object
      properties:
        id:
          type: string
          description: Id of the GL account
          example: gla_38560327
        name:
          type: string
          description: Name of the GL account
          example: Officer(s) Salaries and Wages
        accountNo:
          type: string
          description: Number of the GL account
          example: '60210'
        type:
          type: string
          description: Type the GL account
          example: EXPENSE
          enum:
            - ASSET
            - LIABILITY
            - EQUITY
            - INCOME
            - COGS
            - EXPENSE
            - OTHER_INCOME
            - OTHER_EXPENSE
            - SUSPENSE
        iconUrl:
          type: string
          description: Icon URL of the GL account
          example: https://cdn.sandbox.tight.com/icons/glAccountTypes/expense.png
        displayName:
          type: string
          description: Display name of the GL account
          example: '#60210 Officer(s) Salaries and Wages'
      description: GL account details
    AmountDue:
      required:
        - type
        - value
      type: object
      properties:
        value:
          type: string
          description: The amount due value
          nullable: true
          example: '50.0'
        type:
          type: string
          description: The type of the amount due value
          nullable: true
          example: AMOUNT
          enum:
            - AMOUNT
            - PERCENT
      description: Amount due for the installment
      nullable: true
  securitySchemes:
    EmbedToken:
      type: http
      description: >-
        Bearer authentication header of the form `Bearer <token>`, see
        [Authentication for more
        detail](/api-reference/authentication#partner-level-authentication).
      scheme: bearer

````