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

# Update bank transfer

> Replaces all fields of the voucher and its lines.

To change individual fields, use a [partial update](/en/v1/guides/partial-update): `PATCH` changes only the fields you send.
`TransferType` cannot be changed, and `VoucherNumber` cannot be `"Next"`. A posted voucher cannot be updated. See the [overview](/en/v1/finance/bank-transfers/overview) page for line identity on update and the closed-record lock.

## Error codes

Codes this endpoint can return. The [general errors](/en/v1/guides/result-codes) that apply to every endpoint (authentication, permissions, request headers, daily limit) are not repeated here.

| Code   | HTTP | Meaning                                                                                                                                                               |
| ------ | ---- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `0002` | 400  | Request body could not be read (malformed JSON, wrong field type)                                                                                                     |
| `0003` | 400  | A field exceeds its maximum length (the message names the field and the limit)                                                                                        |
| `0580` | 400  | A value given as text (a code or a name) matches more than one record; add the detail that tells them apart (for example `City` for a district, `Country` for a city) |
| `8100` | 404  | Bank transfer not found                                                                                                                                               |
| `8101` | 400  | `TransferType` must be 1 (incoming) or 2 (outgoing)                                                                                                                   |
| `8102` | 400  | `VoucherNumber` is required                                                                                                                                           |
| `8103` | 400  | `VoucherNumber` is already used in the company (among all bank voucher types)                                                                                         |
| `8104` | 400  | `VoucherNumber` cannot be "Next" on update                                                                                                                            |
| `8105` | 400  | `Date` is required                                                                                                                                                    |
| `8106` | 400  | `BankAccountCode` is required                                                                                                                                         |
| `8107` | 400  | `BankAccountCode` was not found                                                                                                                                       |
| `8108` | 400  | At least one line is required                                                                                                                                         |
| `8109` | 400  | The voucher has been posted to accounting and can no longer be updated or deleted                                                                                     |
| `8110` | 400  | `SharingCode` is not one of the user's sharing codes                                                                                                                  |
| `8111` | 400  | `TransferType` cannot be changed after the voucher is created                                                                                                         |
| `8200` | 400  | Line `CustomerCode` is required                                                                                                                                       |
| `8201` | 400  | Customer not found for the line                                                                                                                                       |
| `8202` | 400  | Line `Amount` must be greater than 0                                                                                                                                  |
| `8203` | 400  | Line `ExchangeRate` (or `CustomerExchangeRate`) is required and must be greater than 0                                                                                |
| `8204` | 400  | Line `CustomerCurrencyCode` was not found                                                                                                                             |
| `8205` | 400  | Line `CustomerAmount x CustomerExchangeRate` does not equal `Amount x ExchangeRate`                                                                                   |
| `8206` | 400  | Line `CustomerAmount` and `CustomerCurrencyCode` must be sent together                                                                                                |
| `8207` | 400  | The line's customer record has been closed, operation cancelled                                                                                                       |
| `8208` | 400  | A payment plan has been created for the line's customer record, operation cancelled                                                                                   |


## OpenAPI

````yaml api-reference/openapi.json PUT /api/v1/finance/bank-transfers/{bankTransferId}
openapi: 3.1.1
info:
  title: Noyax API
  description: Server-to-server API for integrations to access Noyax data.
  version: '1.0'
servers:
  - url: https://dev.noyax.com/services/noyax_api
security:
  - Bearer: []
tags:
  - name: Sections
  - name: Warehouses
  - name: Quotes
  - name: Product Critical Stock
  - name: Product groups
  - name: Product Parameter Definitions
  - name: Product Parameters
  - name: Product Prices
  - name: Products
  - name: Orders
  - name: Bank Accounts
  - name: Bank Internal Transfers
  - name: Bank Openings
  - name: Banks
  - name: Bank Transfers
  - name: Credit Card Collections
  - name: Repayment Plans
  - name: Despatches
  - name: Cities
  - name: Countries
  - name: Currencies
  - name: Districts
  - name: Line Groups
  - name: Shipment Definitions
  - name: Units
  - name: VAT rates
  - name: Customer Addresses
  - name: Customer Bank Accounts
  - name: Customer Definitions
  - name: Customer Group Members
  - name: Customer Links
  - name: Customer Parameters
  - name: Customer Representatives
  - name: Customers
  - name: Customer Statement
  - name: Customer Telephones
paths:
  /api/v1/finance/bank-transfers/{bankTransferId}:
    put:
      tags:
        - Bank Transfers
      summary: Update bank transfer
      description: >-
        Replaces all fields of the voucher, and replaces its lines: the order in
        which lines are sent determines their identity (the line at the same
        position as an existing line is treated as that line), a shorter list
        removes the trailing lines, a longer list adds new ones at the end.
        TransferType cannot be changed and VoucherNumber cannot be "Next". A
        posted voucher (already sent to accounting) cannot be updated. Changing
        the customer, amount, currency or rate of a line whose customer record
        has already been closed by a collection/payment or has a payment plan is
        rejected.
      parameters:
        - name: bankTransferId
          in: path
          description: Bank transfer ID.
          required: true
          schema:
            type: string
            format: uuid
        - name: X-UserID
          in: header
          description: >-
            ID of the Noyax user the request is made on behalf of. Written to
            the audit fields of created, updated and deleted records.
          required: true
          schema:
            minimum: 1
            type: integer
            format: int32
        - name: X-CompanyID
          in: header
          description: >-
            ID of the company. The user must be assigned to this company. All
            reads and writes are limited to this company.
          required: true
          schema:
            minimum: 1
            type: integer
            format: int32
        - name: X-PeriodID
          in: header
          description: >-
            ID of the accounting period. Optional for customer endpoints; if
            sent, it is written to created records.
          schema:
            minimum: 1
            type: integer
            format: int32
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BankTransferRequestDto'
          text/json:
            schema:
              $ref: '#/components/schemas/BankTransferRequestDto'
          application/*+json:
            schema:
              $ref: '#/components/schemas/BankTransferRequestDto'
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DataResultOfBankTransferDetailDto'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResult'
              example:
                Success: false
                ResultCode: '8109'
                Message: >-
                  The bank voucher has been posted to accounting and can no
                  longer be updated.
                Errors:
                  - Code: '8109'
                    Message: >-
                      The bank voucher has been posted to accounting and can no
                      longer be updated.
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResult'
              example:
                Success: false
                ResultCode: '0102'
                Message: Token has expired. Obtain a new token using the refresh token.
                Errors:
                  - Code: '0102'
                    Message: >-
                      Token has expired. Obtain a new token using the refresh
                      token.
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResult'
              example:
                Success: false
                ResultCode: '0110'
                Message: You do not have permission for this operation.
                Errors:
                  - Code: '0110'
                    Message: You do not have permission for this operation.
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResult'
              example:
                Success: false
                ResultCode: '8100'
                Message: Bank transfer not found.
                Errors:
                  - Code: '8100'
                    Message: Bank transfer not found.
        '429':
          description: Too Many Requests
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResult'
              example:
                Success: false
                ResultCode: '0120'
                Message: Daily request limit (10000) exceeded.
                Errors:
                  - Code: '0120'
                    Message: Daily request limit (10000) exceeded.
components:
  schemas:
    BankTransferRequestDto:
      type: object
      properties:
        TransferType:
          type: integer
          description: >-
            Required. 1: Incoming transfer (Gelen EFT/Havale), 2: Outgoing
            transfer (Giden EFT/Havale). Cannot be changed after the voucher is
            created.
          format: int32
          example: 1
        VoucherNumber:
          type:
            - 'null'
            - string
          description: >-
            Required. Voucher number, unique within the company among all bank
            vouchers. Send "Next" on create to generate it from the company's
            bank voucher number series. At most 20 characters.
          example: Next
        Date:
          type:
            - 'null'
            - string
          description: >-
            Required. Voucher date. If a time is sent it is stored as the
            voucher time, otherwise the current time is used.
          format: date-time
          example: '2026-09-24T14:06:00'
        BankAccountCode:
          type:
            - 'null'
            - string
          description: >-
            Required. Bank account name (Name from GET
            /api/v1/finance/bank-accounts). All lines are recorded against this
            account.
          example: TEST POS
        Description:
          type:
            - 'null'
            - string
          description: Description. At most 1000 characters.
        SharingCode:
          type:
            - 'null'
            - string
          description: >-
            Sharing code that limits who can see the voucher. Empty means
            visible to everyone; otherwise it must be one of the user's sharing
            codes.
        Lines:
          type: array
          items:
            $ref: '#/components/schemas/BankTransferLineRequestDto'
          description: Required, at least one line.
    DataResultOfBankTransferDetailDto:
      required:
        - Success
        - ResultCode
        - Data
      type: object
      properties:
        Success:
          type: boolean
          description: Whether the operation succeeded.
          example: true
        ResultCode:
          type: string
          description: >-
            "0000" on success. On failure, the code of the first error; all
            errors are listed in Errors.
          example: '0000'
        Message:
          type:
            - 'null'
            - string
          description: >-
            Error message when Success is false. Messages of all errors are
            joined into a single text.
        Data:
          $ref: '#/components/schemas/BankTransferDetailDto'
    ErrorResult:
      type: object
      properties:
        Success:
          type: boolean
          description: Whether the operation succeeded.
          example: false
        ResultCode:
          type:
            - 'null'
            - string
          description: >-
            "0000" on success. On failure, the code of the first error; all
            errors are listed in Errors.
        Message:
          type:
            - 'null'
            - string
          description: >-
            Error message when Success is false. Messages of all errors are
            joined into a single text.
        Errors:
          type:
            - 'null'
            - array
          items:
            $ref: '#/components/schemas/ResultError'
          description: All errors with their codes. Only present when Success is false.
    BankTransferLineRequestDto:
      type: object
      properties:
        CustomerCode:
          type:
            - 'null'
            - string
          description: >-
            Required. Customer code (the customer's CustomerCode from GET
            /api/v1/customers).
          example: C-0001
        Amount:
          type: number
          description: >-
            Required. Amount, in the bank account's own currency. Must be
            greater than 0.
          format: double
          example: 500
        ExchangeRate:
          type:
            - 'null'
            - number
          description: >-
            Exchange rate of the bank account's currency against the company's
            default currency. Required, and must be greater than 0, only when
            the bank account's currency differs from the default currency;
            otherwise treated as 1.
          format: double
          example: 1
        Description:
          type:
            - 'null'
            - string
          description: Description. At most 255 characters.
        CustomerAmount:
          type:
            - 'null'
            - number
          description: >-
            Overrides the amount recorded on the customer's own account (send
            together with CustomerCurrencyCode and CustomerExchangeRate, or
            leave all three empty to record the customer movement with the same
            amount, currency and rate as the bank movement). CustomerAmount
            multiplied by CustomerExchangeRate must equal Amount multiplied by
            ExchangeRate.
          format: double
        CustomerCurrencyCode:
          type:
            - 'null'
            - string
          description: >-
            Currency code for the customer movement override (from GET
            /api/v1/definitions/currencies). Send together with CustomerAmount
            and CustomerExchangeRate.
        CustomerExchangeRate:
          type:
            - 'null'
            - number
          description: >-
            Exchange rate for the customer movement override. Required, and must
            be greater than 0, when CustomerCurrencyCode differs from the
            company's default currency.
          format: double
    BankTransferDetailDto:
      type: object
      properties:
        Id:
          type: string
          description: Bank transfer voucher ID.
          format: uuid
        TransferType:
          type: integer
          description: >-
            1: Incoming transfer (Gelen EFT/Havale), 2: Outgoing transfer (Giden
            EFT/Havale).
          format: int32
          example: 1
        VoucherNumber:
          type:
            - 'null'
            - string
          description: Voucher number.
          example: 5466CACC0016
        Date:
          type:
            - 'null'
            - string
          description: Voucher date.
          format: date-time
        BankAccountCode:
          type:
            - 'null'
            - string
          description: Bank account name.
          example: TEST POS
        BankAccountId:
          type:
            - 'null'
            - string
          description: Bank account ID.
          format: uuid
        CurrencyCode:
          type:
            - 'null'
            - string
          description: Currency code of the bank account (and of every line's Amount).
        CurrencyId:
          type:
            - 'null'
            - string
          description: Currency ID of the bank account.
          format: uuid
        ExchangeRate:
          type: number
          description: >-
            Weighted average exchange rate across the lines: sum(Amount x
            ExchangeRate) / sum(Amount).
          format: double
        Amount:
          type: number
          description: Total amount (sum of the lines' Amount).
          format: double
        Description:
          type:
            - 'null'
            - string
          description: Description.
        SharingCode:
          type:
            - 'null'
            - string
          description: Sharing code that limits who can see the voucher.
        SharingCodeId:
          type:
            - 'null'
            - string
          description: Sharing code ID.
          format: uuid
        IsPosted:
          type: boolean
          description: >-
            Whether the voucher has been posted to accounting. A posted voucher
            cannot be updated or deleted.
        CreateDate:
          type:
            - 'null'
            - string
          format: date-time
        ModifyDate:
          type:
            - 'null'
            - string
          format: date-time
        Lines:
          type: array
          items:
            $ref: '#/components/schemas/BankTransferLineDto'
          description: Lines, in line order.
      description: Response data. Null when Success is false.
    ResultError:
      required:
        - Code
        - Message
      type: object
      properties:
        Code:
          type: string
          description: Error code. See the result codes page for the full list.
        Message:
          type: string
          description: Error description.
    BankTransferLineDto:
      type: object
      properties:
        CustomerName:
          type:
            - 'null'
            - string
          description: Customer name.
        CustomerId:
          type:
            - 'null'
            - string
          format: uuid
        CustomerCurrencyId:
          type:
            - 'null'
            - string
          format: uuid
        CustomerCode:
          type:
            - 'null'
            - string
          description: >-
            Required. Customer code (the customer's CustomerCode from GET
            /api/v1/customers).
          example: C-0001
        Amount:
          type: number
          description: >-
            Required. Amount, in the bank account's own currency. Must be
            greater than 0.
          format: double
          example: 500
        ExchangeRate:
          type:
            - 'null'
            - number
          description: >-
            Exchange rate of the bank account's currency against the company's
            default currency. Required, and must be greater than 0, only when
            the bank account's currency differs from the default currency;
            otherwise treated as 1.
          format: double
          example: 1
        Description:
          type:
            - 'null'
            - string
          description: Description. At most 255 characters.
        CustomerAmount:
          type:
            - 'null'
            - number
          description: >-
            Overrides the amount recorded on the customer's own account (send
            together with CustomerCurrencyCode and CustomerExchangeRate, or
            leave all three empty to record the customer movement with the same
            amount, currency and rate as the bank movement). CustomerAmount
            multiplied by CustomerExchangeRate must equal Amount multiplied by
            ExchangeRate.
          format: double
        CustomerCurrencyCode:
          type:
            - 'null'
            - string
          description: >-
            Currency code for the customer movement override (from GET
            /api/v1/definitions/currencies). Send together with CustomerAmount
            and CustomerExchangeRate.
        CustomerExchangeRate:
          type:
            - 'null'
            - number
          description: >-
            Exchange rate for the customer movement override. Required, and must
            be greater than 0, when CustomerCurrencyCode differs from the
            company's default currency.
          format: double
  securitySchemes:
    Bearer:
      type: http
      description: Access token obtained from the Noyax auth service with your API key.
      scheme: bearer
      bearerFormat: JWT

````