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

# Update an accounting entry

> Code an entry: its memo, dimensions, custom fields and, for transaction entries, how it's split into lines. Only the fields you send change, and the entry's status stays the same.



## OpenAPI

````yaml /openapi-v2.json patch /v2/accounting/entries/{entryId}
openapi: 3.1.0
info:
  title: Slash Public API V2
  description: >-
    Send money for a Slash legal entity. Every request uses an API key. Transfer
    creation returns a Transfer that links its resulting transactions.
  version: 0.0.1
servers:
  - url: https://api.slash.com
    description: production
security:
  - api_key: []
paths:
  /v2/accounting/entries/{entryId}:
    parameters:
      - name: x-legal-entity
        in: header
        required: true
        description: >-
          The legal entity to act on. Required on every request; a user API key
          can act on any legal entity its user has access to.
        schema:
          type: string
          pattern: ^le_[a-zA-Z0-9]+$
      - name: entryId
        in: path
        required: true
        description: Entry id with the `accounting_entry_` prefix.
        schema:
          type: string
    patch:
      summary: Update an accounting entry
      description: >-
        Code an entry: its memo, dimensions, custom fields and, for transaction
        entries, how it's split into lines. Only the fields you send change, and
        the entry's status stays the same.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/accounting-entry-update'
            example:
              memo: AWS hosting, September
              dimensions:
                vendor: accounting_vendor_4tl6n9jottdx
              lineItems:
                - id: accounting_line_item_3sk5m8inssscw
                  amount:
                    amount: 100000
                    currency: USD
                  description: Compute
                  dimensions:
                    account: accounting_account_2rj4l7hmrrrcv
                    class: accounting_class_3sk5m8inssscw
                - amount:
                    amount: 20000
                    currency: USD
                  description: Storage
                  dimensions:
                    account: accounting_account_6vn8p1lqvvvfz
      responses:
        '200':
          description: The entry as coded.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/accounting-entry'
        '400':
          $ref: '#/components/responses/PublicApiV2Error400AccountingEntriesUpdate'
        '401':
          $ref: '#/components/responses/PublicApiV2Error401Unauthorized'
        '403':
          $ref: >-
            #/components/responses/PublicApiV2Error403ForbiddenForbiddenLegalEntityNotAvailableUserApiKeyRequired
        '404':
          $ref: '#/components/responses/PublicApiV2Error404AccountingEntriesUpdate'
        '409':
          $ref: >-
            #/components/responses/PublicApiV2Error409BillPaymentEntryReadOnlyBillVendorLockedEntrySyncInProgress
        '429':
          $ref: '#/components/responses/PublicApiV2RateLimited'
        '500':
          $ref: '#/components/responses/PublicApiV2Error500Internal'
      security:
        - api_key: []
components:
  schemas:
    accounting-entry-update:
      title: AccountingEntryUpdate
      description: >-
        How an entry is coded. Omitted fields are kept and `null` clears a
        clearable field. Nothing here changes the entry's `status`; use the
        status actions for that.
      type: object
      properties:
        memo:
          type: string
          maxLength: 5000
          nullable: true
          description: >-
            The memo posted with the entry. Transaction entries only; it is also
            written back to the transaction's memo. Bill entries take theirs
            from the bill.
          example: AWS hosting, September
        dimensions:
          type: object
          description: >-
            Coding applied across the entry, by dimension key. On a transaction
            entry `account` is set on every `editable` line and every other
            dimension on every line. On a bill entry these are the bill-level
            values: `vendor` and `subsidiary` land on the accounts-payable line,
            `account` is the expense account of every line, and any dimension
            named in `lineItemLevelDimensions` must be coded per line instead. A
            value id sets the dimension, `null` clears it, and an omitted key
            leaves it alone.
          additionalProperties:
            type: string
            nullable: true
          example:
            vendor: accounting_vendor_4tl6n9jottdx
            department: accounting_department_5um7o0kputtey
        customFields:
          type: object
          nullable: true
          description: >-
            Replaces the entry-level custom field values, keyed by the field's
            `fieldKey`; `null` clears them all. Unknown keys and values of the
            wrong type are `custom_field_value_invalid`. Missing required fields
            do not fail the update; they block `mark-ready` and `sync` instead.
          additionalProperties: true
          example:
            cf_approved_by: jane@acme.com
        lineItems:
          type: array
          minItems: 1
          maxItems: 100
          description: >-
            On a transaction entry, the complete set of `editable` lines after
            the update: lines with an `id` are changed in place, lines without
            one are new splits, and editable lines whose ids are left out are
            removed. Their amounts must total the transaction amount. `fixed`
            lines may be listed by `id` to recode them. On a bill entry, lines
            mirror the bill's line items, so every line needs an `id` and only
            its coding can change.
          items:
            $ref: '#/components/schemas/accounting-line-item-update'
        lineItemLevelDimensions:
          type: array
          description: >-
            Bill entries only. The dimensions coded per line rather than once
            for the bill: any of `account`, `class`, `department`, `location`,
            `project`, `customer`. Replaces the current list.
          items:
            type: string
          example:
            - class
      additionalProperties: false
    accounting-entry:
      title: AccountingEntry
      description: >-
        The accounting record for one settled transaction (or group of related
        transactions) or one bill. An entry is created automatically when its
        source settles, coded with dimensions on its line items, and then synced
        to the connected platform. `status` tracks that lifecycle.
      type: object
      properties:
        id:
          type: string
          description: Entry id with the `accounting_entry_` prefix.
          example: accounting_entry_2rj4l7hmrrrcv
        connectionId:
          type: string
          description: The accounting connection the entry belongs to.
          example: accounting_connection_2rj4l7hmrrrcv
        type:
          type: string
          description: >-
            What the entry represents on the platform. `expense_card` and
            `expense_card_refund` come from card transactions; `bank_transfer`,
            `bank_deposit`, and `expense` from account transactions;
            `journal_entry` from transactions posted as journals; `bill` is the
            accounts-payable bill and `bill_payment` the transaction that
            settles one. `unknown` entries have not yet been classified.
          enum:
            - unknown
            - expense
            - bank_transfer
            - bank_deposit
            - journal_entry
            - expense_card
            - expense_card_refund
            - bill_payment
            - bill
        status:
          type: string
          description: >-
            `in_review` until a user or rule marks it ready; `ready_to_sync`
            when coding is complete; `pending_sync` and `syncing` while a sync
            is queued or in flight; `synced` once the platform holds it;
            `failed` when the platform rejected it (see `lastSyncError`);
            `archived` when excluded from the books.
          enum:
            - in_review
            - ready_to_sync
            - pending_sync
            - syncing
            - synced
            - archived
            - failed
        statusUpdatedAt:
          type: string
          format: date-time
          description: When `status` last changed.
          example: '2026-09-19T14:05:22.000Z'
        date:
          type: string
          format: date
          description: >-
            Accounting date as `YYYY-MM-DD`: the settlement date of the source
            transaction or the invoice date of the bill.
          example: '2026-09-18'
        memo:
          type: string
          description: Memo sent to the platform.
          example: AWS hosting, September
        amount:
          $ref: '#/components/schemas/Money'
          description: >-
            Net amount in minor units. Negative for money leaving the account
            (expenses, bill payments) and positive for money arriving. On a
            bill's entry it is the bill's total, which is positive.
        source:
          type: object
          description: What the entry was created from.
          properties:
            type:
              type: string
              description: >-
                `transaction` entries reference a transaction; `bill` entries
                reference a bill from `GET /v2/bills/{billId}`.
              enum:
                - transaction
                - bill
            id:
              type: string
              description: >-
                The transaction (`agg_tx_`) or bill (`bill_`) id. For
                transaction entries it is one of `transactionIds`.
              example: agg_tx_2rj4l7hmrrrcv
          required:
            - type
            - id
          additionalProperties: false
        transactionIds:
          type: array
          description: >-
            Every transaction the entry covers. Usually one; internal transfers
            and card repayments combine two.
          items:
            type: string
          example:
            - agg_tx_2rj4l7hmrrrcv
        lineItems:
          type: array
          description: Ordered `fixed` lines first, then `editable` lines by `splitIndex`.
          items:
            $ref: '#/components/schemas/accounting-line-item'
        lineItemLevelDimensions:
          type: array
          description: >-
            For `bill` entries, the dimension keys coded per line item.
            Dimensions not listed take the same value on every line. Empty for
            transaction entries.
          items:
            type: string
          example:
            - account
            - class
        entryLevelDimensions:
          type: array
          description: >-
            Dimension keys the platform records once per entry rather than per
            line item. Every line item carries the same value for these, and a
            split cannot code them differently across its lines.
          items:
            type: string
          example:
            - department
        unsupportedDimensions:
          type: array
          description: >-
            Dimension keys the platform does not accept for this entry `type`.
            Any value set on them is dropped at sync time.
          items:
            type: string
          example:
            - customer
        customFields:
          type: object
          description: >-
            Raw values of entry level custom fields, keyed by the field's
            `fieldKey` from `GET /v2/accounting/dimensions`.
          additionalProperties: true
          example:
            cf_approved_by: jane@acme.com
        attachments:
          type: array
          items:
            $ref: '#/components/schemas/accounting-attachment'
        externalId:
          type: string
          description: >-
            The platform's id for the synced record. Present once `status` is
            `synced`.
          example: '1234'
        externalUrl:
          type: string
          format: uri
          description: >-
            A link to the record in the platform, when the platform provides
            one.
          example: https://app.qbo.intuit.com/app/expense?txnId=1234
        lastSyncError:
          type: object
          description: >-
            Why the most recent sync attempt failed. Present while `status` is
            `failed`.
          properties:
            code:
              type: string
              description: >-
                Snake_case code from Slash's accounting error catalog, or
                `sync_error` when the failure isn't one Slash recognizes.
              example: qbo_invalid_account_type
            message:
              type: string
              description: >-
                What went wrong, in words you can show a user. For unrecognized
                failures this is the platform's own explanation when it gives
                one.
              example: >-
                The selected account type cannot be used for this type of
                transaction.
            title:
              type: string
              description: Short summary of the failure.
              example: Invalid account type
            suggestion:
              type: string
              description: How to fix it.
              example: >-
                Use an Expense, Cost of Goods Sold, or Other Current Asset type
                account instead.
          required:
            - code
            - message
            - title
            - suggestion
          additionalProperties: false
        createdAt:
          type: string
          format: date-time
          example: '2026-09-18T20:11:02.000Z'
        updatedAt:
          type: string
          format: date-time
          example: '2026-09-19T14:05:22.000Z'
      required:
        - id
        - connectionId
        - type
        - status
        - statusUpdatedAt
        - date
        - amount
        - source
        - transactionIds
        - lineItems
        - lineItemLevelDimensions
        - entryLevelDimensions
        - unsupportedDimensions
        - customFields
        - attachments
        - createdAt
        - updatedAt
      additionalProperties: false
    accounting-line-item-update:
      title: AccountingLineItemUpdate
      description: >-
        One line of an entry's `editable` side after the update, or the coding
        of a `fixed` line. Send `id` to change an existing line in place; omit
        it on a transaction entry to add a split. Omitted fields are kept and
        `null` clears a clearable field.
      type: object
      properties:
        id:
          type: string
          description: >-
            The id of an existing line to change in place. On transaction
            entries, `editable` lines whose ids are omitted from `lineItems` are
            removed; `fixed` lines are never removed, so they may be left out.
          example: accounting_line_item_2rj4l7hmrrrcv
        amount:
          $ref: '#/components/schemas/Money'
          description: >-
            The line's signed amount. Transaction entries only, `editable` lines
            only, and required on a new split. The editable lines of an entry
            must total the transaction amount.
        description:
          type: string
          maxLength: 1000
          nullable: true
          description: Line memo sent to the platform. Transaction entries only.
          example: AWS hosting
        transactionId:
          type: string
          description: >-
            On a new split of an entry that books several transactions, which
            transaction the line settles. Optional when the entry books one.
          example: agg_tx_2rj4l7hmrrrcv
        dimensions:
          type: object
          description: >-
            Coding by dimension key, as `GET /v2/accounting/dimensions` lists
            them. A value id sets the dimension, `null` clears it, and an
            omitted key leaves it alone. Custom fields go in `customFields`.
          additionalProperties:
            type: string
            nullable: true
          example:
            account: accounting_account_2rj4l7hmrrrcv
            class: accounting_class_3sk5m8inssscw
        customFields:
          type: object
          nullable: true
          description: >-
            Replaces the line's custom field values, keyed by the field's
            `fieldKey`; `null` clears them all. Unknown keys and values of the
            wrong type are `custom_field_value_invalid`. Missing required fields
            do not fail the update; they block `mark-ready` and `sync` instead.
          additionalProperties: true
          example:
            cf_cost_center: CC-100
      additionalProperties: false
    Money:
      type: object
      description: A signed monetary amount expressed in minor units.
      properties:
        amount:
          type: integer
          description: Amount in the currency's minor units.
        currency:
          type: string
          pattern: ^[A-Z]{3}$
          description: Uppercase ISO 4217 currency code.
      required:
        - amount
        - currency
      additionalProperties: false
      title: Money
    accounting-line-item:
      title: AccountingLineItem
      description: >-
        One line of an accounting entry. Entries always carry at least one
        `fixed` line (the bank or credit-card account the money moved through,
        or the accounts-payable account on a bill) and one or more `editable`
        lines that hold the coding. Splitting an entry produces several
        `editable` lines.
      type: object
      properties:
        id:
          type: string
          description: Line item id with the `accounting_line_item_` prefix.
          example: accounting_line_item_2rj4l7hmrrrcv
        type:
          type: string
          description: >-
            `fixed` lines are set by Slash from the connection's account
            mappings and cannot be recoded. `editable` lines carry the
            dimensions you code.
          enum:
            - fixed
            - editable
        amount:
          $ref: '#/components/schemas/Money'
          description: >-
            Signed amount in minor units. Debits are positive and credits
            negative, so the lines of an entry sum to zero.
        description:
          type: string
          description: Line memo sent to the platform.
          example: AWS hosting
        splitIndex:
          type: integer
          description: >-
            Position of the line among the entry's `editable` lines; `0` for
            unsplit entries.
          example: 0
        transactionId:
          type: string
          description: >-
            For transaction entries, the transaction this line settles. Entries
            that combine several transactions carry one `fixed` line per
            transaction.
          example: agg_tx_2rj4l7hmrrrcv
        dimensions:
          type: object
          description: >-
            The line's coding, keyed by dimension key (see `GET
            /v2/accounting/dimensions`). Only dimensions with a value are
            present.
          additionalProperties:
            type: object
            properties:
              id:
                type: string
                description: The dimension value id.
                example: accounting_account_2rj4l7hmrrrcv
              name:
                type: string
                description: The value's display name at read time.
                example: 6100 Software Subscriptions
            required:
              - id
            additionalProperties: false
          example:
            account:
              id: accounting_account_2rj4l7hmrrrcv
              name: 6100 Software Subscriptions
            class:
              id: accounting_class_3sk5m8inssscw
              name: Engineering
        customFields:
          type: object
          description: >-
            Raw values of line-item level custom fields, keyed by the field's
            `fieldKey` from `GET /v2/accounting/dimensions`. Value type follows
            the field's `fieldType`: strings, numbers, booleans, or arrays of
            option values for `multiselect`.
          additionalProperties: true
          example:
            cf_cost_center: CC-100
      required:
        - id
        - type
        - amount
        - splitIndex
        - dimensions
        - customFields
      additionalProperties: false
    accounting-attachment:
      title: AccountingAttachment
      description: >-
        A document attached to an accounting entry and pushed to the platform as
        a receipt or bill image. Download the file through `GET
        /v2/documents/{documentId}`.
      type: object
      properties:
        id:
          type: string
          description: Attachment id with the `accounting_attachment_` prefix.
          example: accounting_attachment_2rj4l7hmrrrcv
        documentId:
          type: string
          description: The underlying document.
          example: st_2rj4l7hmrrrcv
        filename:
          type: string
          example: receipt-4471.pdf
        contentType:
          type: string
          description: MIME type of the file.
          example: application/pdf
        status:
          type: string
          description: >-
            `pending_sync` until the entry has synced and the file has been
            pushed; `synced` once the platform holds a copy; `failed` when the
            push was rejected.
          enum:
            - pending_sync
            - synced
            - failed
      required:
        - id
        - documentId
        - filename
        - status
      additionalProperties: false
    PublicApiV2ErrorAccountsPayableLineRestricted:
      title: PublicApiV2ErrorAccountsPayableLineRestricted
      description: >-
        On a bill entry, the fixed line is the accounts payable line, which
        takes only `account`, `vendor` and `subsidiary`.
      allOf:
        - $ref: '#/components/schemas/Error'
        - type: object
          properties:
            code:
              type: string
              enum:
                - accounts_payable_line_restricted
            details:
              type: object
              properties:
                field:
                  type: string
                  description: Dot path of the request field at fault.
                id:
                  type: string
                  description: The identifier that field carried, when it is one.
              additionalProperties: false
          required:
            - code
            - details
    PublicApiV2ErrorBillEntryFieldReadOnly:
      title: PublicApiV2ErrorBillEntryFieldReadOnly
      description: >-
        A bill entry takes its lines, amounts, descriptions, memo and files from
        the bill, so only its coding changes here.
      allOf:
        - $ref: '#/components/schemas/Error'
        - type: object
          properties:
            code:
              type: string
              enum:
                - bill_entry_field_read_only
            details:
              type: object
              properties:
                field:
                  type: string
                  description: Dot path of the request field at fault.
                id:
                  type: string
                  description: The identifier that field carried, when it is one.
              additionalProperties: false
          required:
            - code
            - details
    PublicApiV2ErrorCustomFieldInDimensions:
      title: PublicApiV2ErrorCustomFieldInDimensions
      description: Custom fields are coded through `customFields`, not `dimensions`.
      allOf:
        - $ref: '#/components/schemas/Error'
        - type: object
          properties:
            code:
              type: string
              enum:
                - custom_field_in_dimensions
            details:
              type: object
              properties:
                key:
                  type: string
                  description: The dimension key sent.
                  example: customField:cf_cost_center
                field:
                  type: string
                  description: Dot path of the request field at fault.
                id:
                  type: string
                  description: The identifier that field carried, when it is one.
              required:
                - key
              additionalProperties: false
          required:
            - code
            - details
    PublicApiV2ErrorCustomFieldValueInvalid:
      title: PublicApiV2ErrorCustomFieldValueInvalid
      description: >-
        The custom field does not exist in this scope, or the value does not
        match its type or options. `problem` says which.
      allOf:
        - $ref: '#/components/schemas/Error'
        - type: object
          properties:
            code:
              type: string
              enum:
                - custom_field_value_invalid
            details:
              type: object
              properties:
                problem:
                  type: string
                  description: What is wrong with the value.
                  example: Cost Center takes one option value.
                field:
                  type: string
                  description: Dot path of the request field at fault.
                id:
                  type: string
                  description: The identifier that field carried, when it is one.
              required:
                - problem
              additionalProperties: false
          required:
            - code
            - details
    PublicApiV2ErrorDimensionCannotBePerLine:
      title: PublicApiV2ErrorDimensionCannotBePerLine
      description: >-
        Bill entries can code `account`, `class`, `department`, `location`,
        `project` and `customer` per line.
      allOf:
        - $ref: '#/components/schemas/Error'
        - type: object
          properties:
            code:
              type: string
              enum:
                - dimension_cannot_be_per_line
            details:
              type: object
              properties:
                key:
                  type: string
                  description: The dimension key sent.
                  example: vendor
                field:
                  type: string
                  description: Dot path of the request field at fault.
                id:
                  type: string
                  description: The identifier that field carried, when it is one.
              required:
                - key
              additionalProperties: false
          required:
            - code
            - details
    PublicApiV2ErrorDimensionCodedPerEntry:
      title: PublicApiV2ErrorDimensionCodedPerEntry
      description: >-
        The dimension holds one value for the whole entry: it is in
        `entryLevelDimensions`, or on a bill entry it is not in
        `lineItemLevelDimensions`.
      allOf:
        - $ref: '#/components/schemas/Error'
        - type: object
          properties:
            code:
              type: string
              enum:
                - dimension_coded_per_entry
            details:
              type: object
              properties:
                key:
                  type: string
                  description: The dimension key sent.
                  example: department
                field:
                  type: string
                  description: Dot path of the request field at fault.
                id:
                  type: string
                  description: The identifier that field carried, when it is one.
              required:
                - key
              additionalProperties: false
          required:
            - code
            - details
    PublicApiV2ErrorDimensionCodedPerLine:
      title: PublicApiV2ErrorDimensionCodedPerLine
      description: >-
        The bill entry codes this dimension per line, as
        `lineItemLevelDimensions` says, so it is set on each line item.
      allOf:
        - $ref: '#/components/schemas/Error'
        - type: object
          properties:
            code:
              type: string
              enum:
                - dimension_coded_per_line
            details:
              type: object
              properties:
                key:
                  type: string
                  description: The dimension key sent.
                  example: class
                field:
                  type: string
                  description: Dot path of the request field at fault.
                id:
                  type: string
                  description: The identifier that field carried, when it is one.
              required:
                - key
              additionalProperties: false
          required:
            - code
            - details
    PublicApiV2ErrorDimensionNotSupportedForEntry:
      title: PublicApiV2ErrorDimensionNotSupportedForEntry
      description: >-
        The accounting platform does not accept this dimension on this kind of
        entry. The entry lists these in `unsupportedDimensions`.
      allOf:
        - $ref: '#/components/schemas/Error'
        - type: object
          properties:
            code:
              type: string
              enum:
                - dimension_not_supported_for_entry
            details:
              type: object
              properties:
                key:
                  type: string
                  description: The dimension key sent.
                  example: vendor
                entryType:
                  type: string
                  description: The entry’s `type`.
                  example: bank_transfer
                field:
                  type: string
                  description: Dot path of the request field at fault.
                id:
                  type: string
                  description: The identifier that field carried, when it is one.
              required:
                - key
                - entryType
              additionalProperties: false
          required:
            - code
            - details
    PublicApiV2ErrorDimensionValueDisabled:
      title: PublicApiV2ErrorDimensionValueDisabled
      description: >-
        The value is turned off for coding. Turn it on with `PATCH
        /v2/accounting/dimensions/{dimensionKey}/values/{valueId}`.
      allOf:
        - $ref: '#/components/schemas/Error'
        - type: object
          properties:
            code:
              type: string
              enum:
                - dimension_value_disabled
            details:
              type: object
              properties:
                dimension:
                  type: string
                  description: The dimension’s name.
                  example: Account
                value:
                  type: string
                  description: The value’s name.
                  example: 6100 Software Subscriptions
                field:
                  type: string
                  description: Dot path of the request field at fault.
                id:
                  type: string
                  description: The identifier that field carried, when it is one.
              required:
                - dimension
                - value
              additionalProperties: false
          required:
            - code
            - details
    PublicApiV2ErrorEditableLineRequired:
      title: PublicApiV2ErrorEditableLineRequired
      description: >-
        `lineItems` lists every editable line after the update, so it cannot
        leave none.
      allOf:
        - $ref: '#/components/schemas/Error'
        - type: object
          properties:
            code:
              type: string
              enum:
                - editable_line_required
            details:
              type: object
              properties:
                field:
                  type: string
                  description: Dot path of the request field at fault.
                id:
                  type: string
                  description: The identifier that field carried, when it is one.
              additionalProperties: false
          required:
            - code
            - details
    PublicApiV2ErrorEntryNotSplittable:
      title: PublicApiV2ErrorEntryNotSplittable
      description: >-
        Entries for a transfer between your own accounts book a fixed line on
        each side and nothing to split. Code them with entry-level `dimensions`.
      allOf:
        - $ref: '#/components/schemas/Error'
        - type: object
          properties:
            code:
              type: string
              enum:
                - entry_not_splittable
            details:
              type: object
              properties:
                field:
                  type: string
                  description: Dot path of the request field at fault.
                id:
                  type: string
                  description: The identifier that field carried, when it is one.
              additionalProperties: false
          required:
            - code
            - details
    PublicApiV2ErrorFixedLineReadOnly:
      title: PublicApiV2ErrorFixedLineReadOnly
      description: >-
        The fixed line is the bank or card account the money moved through.
        Slash sets it, so only its other dimensions can be coded.
      allOf:
        - $ref: '#/components/schemas/Error'
        - type: object
          properties:
            code:
              type: string
              enum:
                - fixed_line_read_only
            details:
              type: object
              properties:
                field:
                  type: string
                  description: Dot path of the request field at fault.
                id:
                  type: string
                  description: The identifier that field carried, when it is one.
              additionalProperties: false
          required:
            - code
            - details
    PublicApiV2ErrorLineItemAmountRequired:
      title: PublicApiV2ErrorLineItemAmountRequired
      description: A line without an `id` is a new split and needs an `amount`.
      allOf:
        - $ref: '#/components/schemas/Error'
        - type: object
          properties:
            code:
              type: string
              enum:
                - line_item_amount_required
            details:
              type: object
              properties:
                field:
                  type: string
                  description: Dot path of the request field at fault.
                id:
                  type: string
                  description: The identifier that field carried, when it is one.
              additionalProperties: false
          required:
            - code
            - details
    PublicApiV2ErrorLineItemAmountZero:
      title: PublicApiV2ErrorLineItemAmountZero
      description: Every editable line must carry a non-zero amount.
      allOf:
        - $ref: '#/components/schemas/Error'
        - type: object
          properties:
            code:
              type: string
              enum:
                - line_item_amount_zero
            details:
              type: object
              properties:
                field:
                  type: string
                  description: Dot path of the request field at fault.
                id:
                  type: string
                  description: The identifier that field carried, when it is one.
              additionalProperties: false
          required:
            - code
            - details
    PublicApiV2ErrorLineItemAmountsMismatch:
      title: PublicApiV2ErrorLineItemAmountsMismatch
      description: The editable lines of a split must add up to the transaction amount.
      allOf:
        - $ref: '#/components/schemas/Error'
        - type: object
          properties:
            code:
              type: string
              enum:
                - line_item_amounts_mismatch
            details:
              type: object
              properties:
                expected:
                  type: string
                  description: The transaction amount.
                  example: $100.00
                actual:
                  type: string
                  description: What the lines added up to.
                  example: $90.00
                field:
                  type: string
                  description: Dot path of the request field at fault.
                id:
                  type: string
                  description: The identifier that field carried, when it is one.
              required:
                - expected
                - actual
              additionalProperties: false
          required:
            - code
            - details
    PublicApiV2ErrorLineItemCurrencyMismatch:
      title: PublicApiV2ErrorLineItemCurrencyMismatch
      description: Line amounts must be in the entry’s currency.
      allOf:
        - $ref: '#/components/schemas/Error'
        - type: object
          properties:
            code:
              type: string
              enum:
                - line_item_currency_mismatch
            details:
              type: object
              properties:
                currency:
                  type: string
                  description: The entry’s currency.
                  example: USD
                field:
                  type: string
                  description: Dot path of the request field at fault.
                id:
                  type: string
                  description: The identifier that field carried, when it is one.
              required:
                - currency
              additionalProperties: false
          required:
            - code
            - details
    PublicApiV2ErrorLineItemLevelDimensionsBillOnly:
      title: PublicApiV2ErrorLineItemLevelDimensionsBillOnly
      description: '`lineItemLevelDimensions` only applies to bill entries.'
      allOf:
        - $ref: '#/components/schemas/Error'
        - type: object
          properties:
            code:
              type: string
              enum:
                - line_item_level_dimensions_bill_only
            details:
              type: object
              properties:
                field:
                  type: string
                  description: Dot path of the request field at fault.
                id:
                  type: string
                  description: The identifier that field carried, when it is one.
              additionalProperties: false
          required:
            - code
            - details
    PublicApiV2ErrorLineItemTransactionLocked:
      title: PublicApiV2ErrorLineItemTransactionLocked
      description: A line stays with the transaction it was created for.
      allOf:
        - $ref: '#/components/schemas/Error'
        - type: object
          properties:
            code:
              type: string
              enum:
                - line_item_transaction_locked
            details:
              type: object
              properties:
                field:
                  type: string
                  description: Dot path of the request field at fault.
                id:
                  type: string
                  description: The identifier that field carried, when it is one.
              additionalProperties: false
          required:
            - code
            - details
    PublicApiV2ErrorLineItemTransactionRequired:
      title: PublicApiV2ErrorLineItemTransactionRequired
      description: >-
        The entry books several transactions (`transactionIds`), so a new line
        must say which one it belongs to.
      allOf:
        - $ref: '#/components/schemas/Error'
        - type: object
          properties:
            code:
              type: string
              enum:
                - line_item_transaction_required
            details:
              type: object
              properties:
                field:
                  type: string
                  description: Dot path of the request field at fault.
                id:
                  type: string
                  description: The identifier that field carried, when it is one.
              additionalProperties: false
          required:
            - code
            - details
    PublicApiV2ErrorInvalidRequestShape:
      title: PublicApiV2ErrorInvalidRequestShape
      description: >-
        The body, query, or headers failed validation, or a required header is
        missing. `details` has one entry per failing location, keyed by JSON
        pointer or header name.
      allOf:
        - $ref: '#/components/schemas/Error'
        - type: object
          properties:
            code:
              type: string
              enum:
                - invalid_request
            details:
              type: object
              properties: {}
              additionalProperties:
                type: string
          required:
            - code
            - details
    PublicApiV2ErrorUnauthorized:
      title: PublicApiV2ErrorUnauthorized
      description: API key authentication is missing or invalid.
      allOf:
        - $ref: '#/components/schemas/Error'
        - type: object
          properties:
            code:
              type: string
              enum:
                - unauthorized
            details:
              type: object
              properties: {}
              additionalProperties: false
          required:
            - code
            - details
    PublicApiV2ErrorForbidden:
      title: PublicApiV2ErrorForbidden
      description: >-
        The credential is not permitted to perform this action on the resource.
        When the resource is a field of the request, `details` names that
        `field` and the `id` it received.
      allOf:
        - $ref: '#/components/schemas/Error'
        - type: object
          properties:
            code:
              type: string
              enum:
                - forbidden
            details:
              type: object
              properties:
                field:
                  type: string
                  description: Dot path of the request field at fault.
                id:
                  type: string
                  description: The identifier that field carried, when it is one.
              additionalProperties: false
          required:
            - code
            - details
    PublicApiV2ErrorForbiddenLegalEntity:
      title: PublicApiV2ErrorForbiddenLegalEntity
      description: The credential is not permitted to act for the selected legal entity.
      allOf:
        - $ref: '#/components/schemas/Error'
        - type: object
          properties:
            code:
              type: string
              enum:
                - forbidden
            details:
              type: object
              properties: {}
              additionalProperties: false
          required:
            - code
            - details
    PublicApiV2ErrorNotAvailable:
      title: PublicApiV2ErrorNotAvailable
      description: >-
        Public API v2 is not yet available. Use [Public API
        v1](https://docs.slash.com/introduction) in the meantime.
      allOf:
        - $ref: '#/components/schemas/Error'
        - type: object
          properties:
            code:
              type: string
              enum:
                - not_available
            details:
              type: object
              properties: {}
              additionalProperties: false
          required:
            - code
            - details
    PublicApiV2ErrorUserApiKeyRequired:
      title: PublicApiV2ErrorUserApiKeyRequired
      description: >-
        The API key is scoped to a legal entity rather than a user. Every v2
        request needs a user API key, created under Settings → API keys in the
        Slash dashboard, together with the `x-legal-entity` header.
      allOf:
        - $ref: '#/components/schemas/Error'
        - type: object
          properties:
            code:
              type: string
              enum:
                - user_api_key_required
            details:
              type: object
              properties: {}
              additionalProperties: false
          required:
            - code
            - details
    PublicApiV2ErrorNotFound:
      title: PublicApiV2ErrorNotFound
      description: >-
        No resource matches the identifier. When the identifier is a field of
        the request, `details` names that `field` and the `id` it received.
      allOf:
        - $ref: '#/components/schemas/Error'
        - type: object
          properties:
            code:
              type: string
              enum:
                - not_found
            details:
              type: object
              properties:
                field:
                  type: string
                  description: Dot path of the request field at fault.
                id:
                  type: string
                  description: The identifier that field carried, when it is one.
              additionalProperties: false
          required:
            - code
            - details
    PublicApiV2ErrorBillPaymentEntryReadOnly:
      title: PublicApiV2ErrorBillPaymentEntryReadOnly
      description: >-
        Bill payment entries take their coding from the bill they pay. Code the
        bill’s entry instead.
      allOf:
        - $ref: '#/components/schemas/Error'
        - type: object
          properties:
            code:
              type: string
              enum:
                - bill_payment_entry_read_only
            details:
              type: object
              properties: {}
              additionalProperties: false
          required:
            - code
            - details
    PublicApiV2ErrorBillVendorLocked:
      title: PublicApiV2ErrorBillVendorLocked
      description: >-
        A payment against the bill has already been booked with the current
        vendor and accounts payable account.
      allOf:
        - $ref: '#/components/schemas/Error'
        - type: object
          properties:
            code:
              type: string
              enum:
                - bill_vendor_locked
            details:
              type: object
              properties: {}
              additionalProperties: false
          required:
            - code
            - details
    PublicApiV2ErrorEntrySyncInProgress:
      title: PublicApiV2ErrorEntrySyncInProgress
      description: >-
        The entry is `pending_sync` or `syncing`. Retry once a read of the entry
        shows `synced` or `failed`.
      allOf:
        - $ref: '#/components/schemas/Error'
        - type: object
          properties:
            code:
              type: string
              enum:
                - entry_sync_in_progress
            details:
              type: object
              properties:
                status:
                  type: string
                  description: The entry’s current `status`.
                  example: syncing
              required:
                - status
              additionalProperties: false
          required:
            - code
            - details
    PublicApiV2ErrorInternal:
      title: PublicApiV2ErrorInternal
      description: >-
        Slash could not complete the request. Quote `referenceId` when
        contacting Slash support.
      allOf:
        - $ref: '#/components/schemas/Error'
        - type: object
          properties:
            code:
              type: string
              enum:
                - internal
            details:
              type: object
              properties: {}
              additionalProperties: false
          required:
            - code
            - details
    Error:
      type: object
      properties:
        code:
          type: string
          description: >-
            Machine-readable reason; branch on this, not on `message`. Every
            code an endpoint can return is listed on its reference page; the
            ones shared by all endpoints are explained in the Errors guide.
          example: invalid_request
        message:
          type: string
          description: >-
            Human-readable explanation, safe to show to an operator. Wording may
            change; use `code` and `details` programmatically.
        details:
          type: object
          description: >-
            The values behind `message`, keyed per `code`. For example
            `insufficient_funds` carries `available` and `requested`;
            `invalid_request` from contract validation carries one entry per
            failing field, keyed by JSON pointer. Empty when the code has no
            variable data.
          additionalProperties:
            type: string
          example:
            available: $120.00
            requested: $500.00
        referenceId:
          type: string
          description: Unique id of this failure. Quote it when contacting Slash support.
          example: 4001-2alj5if
      required:
        - code
        - message
        - details
        - referenceId
      additionalProperties: false
      title: Error
  responses:
    PublicApiV2Error400AccountingEntriesUpdate:
      description: >-
        - `accounts_payable_line_restricted` — On a bill entry, the fixed line
        is the accounts payable line, which takes only `account`, `vendor` and
        `subsidiary`.

        - `bill_entry_field_read_only` — A bill entry takes its lines, amounts,
        descriptions, memo and files from the bill, so only its coding changes
        here.

        - `custom_field_in_dimensions` — Custom fields are coded through
        `customFields`, not `dimensions`.

        - `custom_field_value_invalid` — The custom field does not exist in this
        scope, or the value does not match its type or options. `problem` says
        which.

        - `dimension_cannot_be_per_line` — Bill entries can code `account`,
        `class`, `department`, `location`, `project` and `customer` per line.

        - `dimension_coded_per_entry` — The dimension holds one value for the
        whole entry: it is in `entryLevelDimensions`, or on a bill entry it is
        not in `lineItemLevelDimensions`.

        - `dimension_coded_per_line` — The bill entry codes this dimension per
        line, as `lineItemLevelDimensions` says, so it is set on each line item.

        - `dimension_not_supported_for_entry` — The accounting platform does not
        accept this dimension on this kind of entry. The entry lists these in
        `unsupportedDimensions`.

        - `dimension_value_disabled` — The value is turned off for coding. Turn
        it on with `PATCH
        /v2/accounting/dimensions/{dimensionKey}/values/{valueId}`.

        - `editable_line_required` — `lineItems` lists every editable line after
        the update, so it cannot leave none.

        - `entry_not_splittable` — Entries for a transfer between your own
        accounts book a fixed line on each side and nothing to split. Code them
        with entry-level `dimensions`.

        - `fixed_line_read_only` — The fixed line is the bank or card account
        the money moved through. Slash sets it, so only its other dimensions can
        be coded.

        - `line_item_amount_required` — A line without an `id` is a new split
        and needs an `amount`.

        - `line_item_amount_zero` — Every editable line must carry a non-zero
        amount.

        - `line_item_amounts_mismatch` — The editable lines of a split must add
        up to the transaction amount.

        - `line_item_currency_mismatch` — Line amounts must be in the entry’s
        currency.

        - `line_item_level_dimensions_bill_only` — `lineItemLevelDimensions`
        only applies to bill entries.

        - `line_item_transaction_locked` — A line stays with the transaction it
        was created for.

        - `line_item_transaction_required` — The entry books several
        transactions (`transactionIds`), so a new line must say which one it
        belongs to.

        - `invalid_request (request shape)` — The body, query, or headers failed
        validation, or a required header is missing. `details` has one entry per
        failing location, keyed by JSON pointer or header name.
      content:
        application/json:
          schema:
            anyOf:
              - title: accounts_payable_line_restricted
                allOf:
                  - $ref: >-
                      #/components/schemas/PublicApiV2ErrorAccountsPayableLineRestricted
              - title: bill_entry_field_read_only
                allOf:
                  - $ref: >-
                      #/components/schemas/PublicApiV2ErrorBillEntryFieldReadOnly
              - title: custom_field_in_dimensions
                allOf:
                  - $ref: >-
                      #/components/schemas/PublicApiV2ErrorCustomFieldInDimensions
              - title: custom_field_value_invalid
                allOf:
                  - $ref: >-
                      #/components/schemas/PublicApiV2ErrorCustomFieldValueInvalid
              - title: dimension_cannot_be_per_line
                allOf:
                  - $ref: >-
                      #/components/schemas/PublicApiV2ErrorDimensionCannotBePerLine
              - title: dimension_coded_per_entry
                allOf:
                  - $ref: >-
                      #/components/schemas/PublicApiV2ErrorDimensionCodedPerEntry
              - title: dimension_coded_per_line
                allOf:
                  - $ref: '#/components/schemas/PublicApiV2ErrorDimensionCodedPerLine'
              - title: dimension_not_supported_for_entry
                allOf:
                  - $ref: >-
                      #/components/schemas/PublicApiV2ErrorDimensionNotSupportedForEntry
              - title: dimension_value_disabled
                allOf:
                  - $ref: >-
                      #/components/schemas/PublicApiV2ErrorDimensionValueDisabled
              - title: editable_line_required
                allOf:
                  - $ref: '#/components/schemas/PublicApiV2ErrorEditableLineRequired'
              - title: entry_not_splittable
                allOf:
                  - $ref: '#/components/schemas/PublicApiV2ErrorEntryNotSplittable'
              - title: fixed_line_read_only
                allOf:
                  - $ref: '#/components/schemas/PublicApiV2ErrorFixedLineReadOnly'
              - title: line_item_amount_required
                allOf:
                  - $ref: >-
                      #/components/schemas/PublicApiV2ErrorLineItemAmountRequired
              - title: line_item_amount_zero
                allOf:
                  - $ref: '#/components/schemas/PublicApiV2ErrorLineItemAmountZero'
              - title: line_item_amounts_mismatch
                allOf:
                  - $ref: >-
                      #/components/schemas/PublicApiV2ErrorLineItemAmountsMismatch
              - title: line_item_currency_mismatch
                allOf:
                  - $ref: >-
                      #/components/schemas/PublicApiV2ErrorLineItemCurrencyMismatch
              - title: line_item_level_dimensions_bill_only
                allOf:
                  - $ref: >-
                      #/components/schemas/PublicApiV2ErrorLineItemLevelDimensionsBillOnly
              - title: line_item_transaction_locked
                allOf:
                  - $ref: >-
                      #/components/schemas/PublicApiV2ErrorLineItemTransactionLocked
              - title: line_item_transaction_required
                allOf:
                  - $ref: >-
                      #/components/schemas/PublicApiV2ErrorLineItemTransactionRequired
              - title: invalid_request (request shape)
                allOf:
                  - $ref: '#/components/schemas/PublicApiV2ErrorInvalidRequestShape'
          examples:
            accounts_payable_line_restricted_line_items:
              summary: accounts_payable_line_restricted (lineItems)
              value:
                code: accounts_payable_line_restricted
                message: >-
                  The accounts payable line carries only the account, vendor and
                  subsidiary; code everything else on the entry or its expense
                  lines.
                details:
                  field: lineItems
                referenceId: 4001-2alj5if
            bill_entry_field_read_only_memo:
              summary: bill_entry_field_read_only (memo)
              value:
                code: bill_entry_field_read_only
                message: Bill entries take this from the bill; update the bill instead.
                details:
                  field: memo
                referenceId: 4001-2alj5if
            bill_entry_field_read_only_line_items:
              summary: bill_entry_field_read_only (lineItems)
              value:
                code: bill_entry_field_read_only
                message: Bill entries take this from the bill; update the bill instead.
                details:
                  field: lineItems
                referenceId: 4001-2alj5if
            custom_field_in_dimensions_dimensions:
              summary: custom_field_in_dimensions (dimensions)
              value:
                code: custom_field_in_dimensions
                message: >-
                  "customField:cf_cost_center" is a custom field; set it in
                  customFields.
                details:
                  key: customField:cf_cost_center
                  field: dimensions
                referenceId: 4001-2alj5if
            custom_field_in_dimensions_line_items:
              summary: custom_field_in_dimensions (lineItems)
              value:
                code: custom_field_in_dimensions
                message: >-
                  "customField:cf_cost_center" is a custom field; set it in
                  customFields.
                details:
                  key: customField:cf_cost_center
                  field: lineItems
                referenceId: 4001-2alj5if
            custom_field_value_invalid_custom_fields:
              summary: custom_field_value_invalid (customFields)
              value:
                code: custom_field_value_invalid
                message: >-
                  The custom field value is invalid: Cost Center takes one
                  option value.
                details:
                  problem: Cost Center takes one option value.
                  field: customFields
                referenceId: 4001-2alj5if
            custom_field_value_invalid_line_items:
              summary: custom_field_value_invalid (lineItems)
              value:
                code: custom_field_value_invalid
                message: >-
                  The custom field value is invalid: Cost Center takes one
                  option value.
                details:
                  problem: Cost Center takes one option value.
                  field: lineItems
                referenceId: 4001-2alj5if
            dimension_cannot_be_per_line_line_item_level_dimensions:
              summary: dimension_cannot_be_per_line (lineItemLevelDimensions)
              value:
                code: dimension_cannot_be_per_line
                message: '"vendor" cannot be coded per line on a bill entry.'
                details:
                  key: vendor
                  field: lineItemLevelDimensions
                referenceId: 4001-2alj5if
            dimension_coded_per_entry_line_items:
              summary: dimension_coded_per_entry (lineItems)
              value:
                code: dimension_coded_per_entry
                message: >-
                  "department" is coded once for the whole entry; set it in the
                  entry-level dimensions.
                details:
                  key: department
                  field: lineItems
                referenceId: 4001-2alj5if
            dimension_coded_per_line_dimensions:
              summary: dimension_coded_per_line (dimensions)
              value:
                code: dimension_coded_per_line
                message: >-
                  "class" is coded per line on this entry; set it on each line
                  item, or drop it from lineItemLevelDimensions.
                details:
                  key: class
                  field: dimensions
                referenceId: 4001-2alj5if
            dimension_not_supported_for_entry_dimensions:
              summary: dimension_not_supported_for_entry (dimensions)
              value:
                code: dimension_not_supported_for_entry
                message: >-
                  "vendor" is not supported on bank_transfer entries for this
                  platform.
                details:
                  key: vendor
                  entryType: bank_transfer
                  field: dimensions
                referenceId: 4001-2alj5if
            dimension_not_supported_for_entry_line_items:
              summary: dimension_not_supported_for_entry (lineItems)
              value:
                code: dimension_not_supported_for_entry
                message: >-
                  "vendor" is not supported on bank_transfer entries for this
                  platform.
                details:
                  key: vendor
                  entryType: bank_transfer
                  field: lineItems
                referenceId: 4001-2alj5if
            dimension_not_supported_for_entry_line_item_level_dimensions:
              summary: dimension_not_supported_for_entry (lineItemLevelDimensions)
              value:
                code: dimension_not_supported_for_entry
                message: >-
                  "vendor" is not supported on bank_transfer entries for this
                  platform.
                details:
                  key: vendor
                  entryType: bank_transfer
                  field: lineItemLevelDimensions
                referenceId: 4001-2alj5if
            dimension_value_disabled_dimensions:
              summary: dimension_value_disabled (dimensions)
              value:
                code: dimension_value_disabled
                message: >-
                  Account value "6100 Software Subscriptions" is disabled on
                  this connection.
                details:
                  dimension: Account
                  value: 6100 Software Subscriptions
                  field: dimensions
                referenceId: 4001-2alj5if
            dimension_value_disabled_line_items:
              summary: dimension_value_disabled (lineItems)
              value:
                code: dimension_value_disabled
                message: >-
                  Account value "6100 Software Subscriptions" is disabled on
                  this connection.
                details:
                  dimension: Account
                  value: 6100 Software Subscriptions
                  field: lineItems
                referenceId: 4001-2alj5if
            editable_line_required_line_items:
              summary: editable_line_required (lineItems)
              value:
                code: editable_line_required
                message: An entry keeps at least one editable line.
                details:
                  field: lineItems
                referenceId: 4001-2alj5if
            entry_not_splittable_line_items:
              summary: entry_not_splittable (lineItems)
              value:
                code: entry_not_splittable
                message: >-
                  This entry has no editable lines to split; code it with
                  entry-level dimensions instead.
                details:
                  field: lineItems
                referenceId: 4001-2alj5if
            fixed_line_read_only_dimensions:
              summary: fixed_line_read_only (dimensions)
              value:
                code: fixed_line_read_only
                message: >-
                  The fixed line is set from the connection’s account mapping;
                  its account, amount and transaction cannot change.
                details:
                  field: dimensions
                referenceId: 4001-2alj5if
            fixed_line_read_only_line_items:
              summary: fixed_line_read_only (lineItems)
              value:
                code: fixed_line_read_only
                message: >-
                  The fixed line is set from the connection’s account mapping;
                  its account, amount and transaction cannot change.
                details:
                  field: lineItems
                referenceId: 4001-2alj5if
            line_item_amount_required_line_items:
              summary: line_item_amount_required (lineItems)
              value:
                code: line_item_amount_required
                message: A new line item needs an amount.
                details:
                  field: lineItems
                referenceId: 4001-2alj5if
            line_item_amount_zero_line_items:
              summary: line_item_amount_zero (lineItems)
              value:
                code: line_item_amount_zero
                message: Line item amounts cannot be zero.
                details:
                  field: lineItems
                referenceId: 4001-2alj5if
            line_item_amounts_mismatch_line_items:
              summary: line_item_amounts_mismatch (lineItems)
              value:
                code: line_item_amounts_mismatch
                message: >-
                  Line item amounts must total $100.00, the transaction amount;
                  they total $90.00.
                details:
                  expected: $100.00
                  actual: $90.00
                  field: lineItems
                referenceId: 4001-2alj5if
            line_item_currency_mismatch_line_items:
              summary: line_item_currency_mismatch (lineItems)
              value:
                code: line_item_currency_mismatch
                message: Transaction entries are booked in USD.
                details:
                  currency: USD
                  field: lineItems
                referenceId: 4001-2alj5if
            line_item_level_dimensions_bill_only_line_item_level_dimensions:
              summary: line_item_level_dimensions_bill_only (lineItemLevelDimensions)
              value:
                code: line_item_level_dimensions_bill_only
                message: >-
                  Only bill entries declare per-line dimensions; a transaction
                  entry codes every dimension on its lines directly.
                details:
                  field: lineItemLevelDimensions
                referenceId: 4001-2alj5if
            line_item_transaction_locked_line_items:
              summary: line_item_transaction_locked (lineItems)
              value:
                code: line_item_transaction_locked
                message: >-
                  An existing line cannot move to another transaction; remove it
                  and add a new line instead.
                details:
                  field: lineItems
                referenceId: 4001-2alj5if
            line_item_transaction_required_line_items:
              summary: line_item_transaction_required (lineItems)
              value:
                code: line_item_transaction_required
                message: >-
                  transactionId is required on a new line when the entry books
                  more than one transaction.
                details:
                  field: lineItems
                referenceId: 4001-2alj5if
            invalid_request_request_shape:
              summary: invalid_request (request shape)
              value:
                code: invalid_request
                message: >-
                  Invalid `entryId`: Expected a valid ID beginning with
                  "accounting_entry_".
                details:
                  /entryId: Expected a valid ID beginning with "accounting_entry_".
                referenceId: 4001-2alj5if
    PublicApiV2Error401Unauthorized:
      description: '- `unauthorized` — API key authentication is missing or invalid.'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/PublicApiV2ErrorUnauthorized'
          examples:
            unauthorized:
              summary: unauthorized
              value:
                code: unauthorized
                message: API key authentication is missing or invalid.
                details: {}
                referenceId: 4011-2alj5if
    PublicApiV2Error403ForbiddenForbiddenLegalEntityNotAvailableUserApiKeyRequired:
      description: >-
        - `forbidden` — The credential is not permitted to perform this action
        on the resource. When the resource is a field of the request, `details`
        names that `field` and the `id` it received.

        - `forbidden (legal entity)` — The credential is not permitted to act
        for the selected legal entity.

        - `not_available` — Public API v2 is not yet available. Use [Public API
        v1](https://docs.slash.com/introduction) in the meantime.

        - `user_api_key_required` — The API key is scoped to a legal entity
        rather than a user. Every v2 request needs a user API key, created under
        Settings → API keys in the Slash dashboard, together with the
        `x-legal-entity` header.
      content:
        application/json:
          schema:
            anyOf:
              - title: forbidden
                allOf:
                  - $ref: '#/components/schemas/PublicApiV2ErrorForbidden'
              - title: forbidden (legal entity)
                allOf:
                  - $ref: '#/components/schemas/PublicApiV2ErrorForbiddenLegalEntity'
              - title: not_available
                allOf:
                  - $ref: '#/components/schemas/PublicApiV2ErrorNotAvailable'
              - title: user_api_key_required
                allOf:
                  - $ref: '#/components/schemas/PublicApiV2ErrorUserApiKeyRequired'
          examples:
            forbidden:
              summary: forbidden
              value:
                code: forbidden
                message: This credential is not permitted to do that.
                details: {}
                referenceId: 4031-2alj5if
            forbidden_legal_entity:
              summary: forbidden (legal entity)
              value:
                code: forbidden
                message: This credential is not permitted to do that.
                details: {}
                referenceId: 4031-2alj5if
            not_available:
              summary: not_available
              value:
                code: not_available
                message: >-
                  Public API v2 is not yet available. Use Public API v1
                  (https://docs.slash.com/introduction) in the meantime.
                details: {}
                referenceId: 4031-2alj5if
            user_api_key_required:
              summary: user_api_key_required
              value:
                code: user_api_key_required
                message: >-
                  Public API v2 requires a user API key. Create one under
                  Settings → API keys in the Slash dashboard.
                details: {}
                referenceId: 4031-2alj5if
    PublicApiV2Error404AccountingEntriesUpdate:
      description: >-
        - `not_found` — No resource matches the identifier. When the identifier
        is a field of the request, `details` names that `field` and the `id` it
        received.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/PublicApiV2ErrorNotFound'
          examples:
            not_found_entry_id:
              summary: not_found (entryId)
              value:
                code: not_found
                message: '`entryId` accounting_entry_2rj4l7hmrrrcv was not found.'
                details:
                  field: entryId
                  id: accounting_entry_2rj4l7hmrrrcv
                referenceId: 4041-2alj5if
            not_found_dimensions:
              summary: not_found (dimensions)
              value:
                code: not_found
                message: '`dimensions` was not found.'
                details:
                  field: dimensions
                referenceId: 4041-2alj5if
            not_found_line_items:
              summary: not_found (lineItems)
              value:
                code: not_found
                message: '`lineItems` was not found.'
                details:
                  field: lineItems
                referenceId: 4041-2alj5if
    PublicApiV2Error409BillPaymentEntryReadOnlyBillVendorLockedEntrySyncInProgress:
      description: >-
        - `bill_payment_entry_read_only` — Bill payment entries take their
        coding from the bill they pay. Code the bill’s entry instead.

        - `bill_vendor_locked` — A payment against the bill has already been
        booked with the current vendor and accounts payable account.

        - `entry_sync_in_progress` — The entry is `pending_sync` or `syncing`.
        Retry once a read of the entry shows `synced` or `failed`.
      content:
        application/json:
          schema:
            anyOf:
              - title: bill_payment_entry_read_only
                allOf:
                  - $ref: >-
                      #/components/schemas/PublicApiV2ErrorBillPaymentEntryReadOnly
              - title: bill_vendor_locked
                allOf:
                  - $ref: '#/components/schemas/PublicApiV2ErrorBillVendorLocked'
              - title: entry_sync_in_progress
                allOf:
                  - $ref: '#/components/schemas/PublicApiV2ErrorEntrySyncInProgress'
          examples:
            bill_payment_entry_read_only:
              summary: bill_payment_entry_read_only
              value:
                code: bill_payment_entry_read_only
                message: >-
                  Bill payment entries are coded automatically from their bill
                  and cannot be edited.
                details: {}
                referenceId: 4091-2alj5if
            bill_vendor_locked:
              summary: bill_vendor_locked
              value:
                code: bill_vendor_locked
                message: >-
                  The vendor and accounts payable account cannot change once a
                  payment has been recorded against the bill.
                details: {}
                referenceId: 4091-2alj5if
            entry_sync_in_progress:
              summary: entry_sync_in_progress
              value:
                code: entry_sync_in_progress
                message: >-
                  The entry is syncing and cannot be changed until the sync
                  finishes.
                details:
                  status: syncing
                referenceId: 4091-2alj5if
    PublicApiV2RateLimited:
      description: >-
        The request exceeded the applicable rate limit. The response body is
        plain text, not the error object; clients must not depend on its
        wording.
      content:
        text/plain:
          schema:
            type: string
          example: You are rate limited
    PublicApiV2Error500Internal:
      description: >-
        - `internal` — Slash could not complete the request. Quote `referenceId`
        when contacting Slash support.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/PublicApiV2ErrorInternal'
          examples:
            internal:
              summary: internal
              value:
                code: internal
                message: >-
                  An unexpected error occurred. If this keeps happening, contact
                  Slash support with the reference id below.
                details: {}
                referenceId: 5001-2alj5if
  securitySchemes:
    api_key:
      type: apiKey
      name: X-API-Key
      in: header
      description: >-
        User API key authentication. Create a key under Settings → API keys in
        the Slash dashboard (https://app.slash.com/global-settings/api-keys) and
        send the `x-legal-entity` header naming the legal entity to act on with
        every request. Keys scoped to a legal entity are rejected with `403
        user_api_key_required`.

````

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