> ## 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.

# Create bank internal transfer

> Adds a new bank internal transfer voucher with its lines in one transaction.

See the [overview](/en/v1/finance/bank-internal-transfers/overview) page for required fields and line rules. The lines' total `Debit` must equal their total `Credit` (`8508`).

## 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) |
| `8180` | 400  | No `"BANKAFİŞNO"` serial number definition was found for the company                                                                                                  |
| `8181` | 400  | The serial number definition has no detail rows                                                                                                                       |
| `8182` | 400  | Unsupported serial number part type                                                                                                                                   |
| `8183` | 400  | The generated voucher number exceeds the maximum length                                                                                                               |
| `8184` | 400  | The generated voucher number is already used in the company                                                                                                           |
| `8185` | 400  | The voucher number could not be generated                                                                                                                             |
| `8501` | 400  | `VoucherNumber` is required                                                                                                                                           |
| `8502` | 400  | `VoucherNumber` is already used in the company (among all bank voucher types)                                                                                         |
| `8503` | 400  | `VoucherNumber` cannot be "Next" on update                                                                                                                            |
| `8504` | 400  | `Date` is required                                                                                                                                                    |
| `8505` | 400  | At least one line is required                                                                                                                                         |
| `8507` | 400  | `SharingCode` is not one of the user's sharing codes                                                                                                                  |
| `8508` | 400  | The total `Debit` of the lines must equal the total `Credit`                                                                                                          |
| `8600` | 400  | Line `BankAccountCode` is required                                                                                                                                    |
| `8601` | 400  | Line `BankAccountCode` was not found                                                                                                                                  |
| `8602` | 400  | Line `ExchangeRate` is required and must be greater than 0                                                                                                            |
| `8603` | 400  | Exactly one of the line's `Debit`/`Credit` must be greater than 0                                                                                                     |


## OpenAPI

````yaml api-reference/openapi.json POST /api/v1/finance/bank-internal-transfers
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-internal-transfers:
    post:
      tags:
        - Bank Internal Transfers
      summary: Create bank internal transfer
      description: >-
        Creates a bank internal transfer (virman) voucher with its lines in one
        transaction. Each line picks its own bank account (BankAccountCode) and
        carries either a Debit or a Credit amount, in the account's own
        currency. The total Debit of all lines must equal the total Credit of
        all lines. Send VoucherNumber as "Next" to generate it from the
        company's bank voucher number series.
      parameters:
        - 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/BankJournalVoucherRequestDto'
          text/json:
            schema:
              $ref: '#/components/schemas/BankJournalVoucherRequestDto'
          application/*+json:
            schema:
              $ref: '#/components/schemas/BankJournalVoucherRequestDto'
        required: true
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DataResultOfBankJournalVoucherDetailDto'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResult'
              example:
                Success: false
                ResultCode: '8505'
                Message: At least one line is required.
                Errors:
                  - Code: '8505'
                    Message: At least one line is required.
        '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.
        '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:
    BankJournalVoucherRequestDto:
      type: object
      properties:
        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'
        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/BankJournalVoucherLineRequestDto'
          description: Required, at least one line.
    DataResultOfBankJournalVoucherDetailDto:
      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/BankJournalVoucherDetailDto'
    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.
    BankJournalVoucherLineRequestDto:
      type: object
      properties:
        BankAccountCode:
          type:
            - 'null'
            - string
          description: >-
            Required. Bank account name (Name from GET
            /api/v1/finance/bank-accounts). The line's currency is the account's
            own currency.
          example: TEST POS
        Debit:
          type: number
          description: >-
            Debit amount, in the bank account's own currency. Exactly one of
            Debit/Credit must be greater than 0, the other must be 0.
          format: double
          example: 0
        Credit:
          type: number
          description: >-
            Credit amount, in the bank account's own currency. Exactly one of
            Debit/Credit must be greater than 0, the other must be 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.
    BankJournalVoucherDetailDto:
      type: object
      properties:
        Id:
          type: string
          description: Voucher ID.
          format: uuid
        VoucherNumber:
          type:
            - 'null'
            - string
          description: Voucher number.
        Date:
          type:
            - 'null'
            - string
          description: Voucher date.
          format: date-time
        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
        TotalDebit:
          type: number
          description: Total debit (sum of the lines' Debit).
          format: double
        TotalCredit:
          type: number
          description: Total credit (sum of the lines' Credit).
          format: double
        ExchangeRate:
          type: number
          description: >-
            Weighted average exchange rate across the lines: sum(LineAmount x
            ExchangeRate) / sum(LineAmount), where LineAmount is Debit + Credit.
          format: double
        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/BankJournalVoucherLineDto'
          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.
    BankJournalVoucherLineDto:
      type: object
      properties:
        CurrencyCode:
          type:
            - 'null'
            - string
          description: Currency code of the bank account.
        BankAccountId:
          type:
            - 'null'
            - string
          format: uuid
        CurrencyId:
          type:
            - 'null'
            - string
          format: uuid
        BankAccountCode:
          type:
            - 'null'
            - string
          description: >-
            Required. Bank account name (Name from GET
            /api/v1/finance/bank-accounts). The line's currency is the account's
            own currency.
          example: TEST POS
        Debit:
          type: number
          description: >-
            Debit amount, in the bank account's own currency. Exactly one of
            Debit/Credit must be greater than 0, the other must be 0.
          format: double
          example: 0
        Credit:
          type: number
          description: >-
            Credit amount, in the bank account's own currency. Exactly one of
            Debit/Credit must be greater than 0, the other must be 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.
  securitySchemes:
    Bearer:
      type: http
      description: Access token obtained from the Noyax auth service with your API key.
      scheme: bearer
      bearerFormat: JWT

````