curl --request PATCH \
--url https://dev.noyax.com/services/noyax_api/api/v1/finance/bank-internal-transfers/{bankInternalTransferId} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'X-CompanyID: <x-companyid>' \
--header 'X-UserID: <x-userid>' \
--data '
{
"VoucherNumber": "Next",
"Date": "2026-09-24T14:06:00",
"Description": "<string>",
"SharingCode": "<string>",
"Lines": [
{
"BankAccountCode": "TEST POS",
"Debit": 0,
"Credit": 500,
"ExchangeRate": 1,
"Description": "<string>"
}
]
}
'using RestSharp;
var options = new RestClientOptions("https://dev.noyax.com/services/noyax_api/api/v1/finance/bank-internal-transfers/{bankInternalTransferId}");
var client = new RestClient(options);
var request = new RestRequest("");
request.AddHeader("X-UserID", "<x-userid>");
request.AddHeader("X-CompanyID", "<x-companyid>");
request.AddHeader("Authorization", "Bearer <token>");
request.AddJsonBody("{\n \"VoucherNumber\": \"Next\",\n \"Date\": \"2026-09-24T14:06:00\",\n \"Description\": \"<string>\",\n \"SharingCode\": \"<string>\",\n \"Lines\": [\n {\n \"BankAccountCode\": \"TEST POS\",\n \"Debit\": 0,\n \"Credit\": 500,\n \"ExchangeRate\": 1,\n \"Description\": \"<string>\"\n }\n ]\n}", false);
var response = await client.PatchAsync(request);
Console.WriteLine("{0}", response.Content);
const options = {
method: 'PATCH',
headers: {
'X-UserID': '<x-userid>',
'X-CompanyID': '<x-companyid>',
Authorization: 'Bearer <token>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
VoucherNumber: 'Next',
Date: '2026-09-24T14:06:00',
Description: '<string>',
SharingCode: '<string>',
Lines: [
{
BankAccountCode: 'TEST POS',
Debit: 0,
Credit: 500,
ExchangeRate: 1,
Description: '<string>'
}
]
})
};
fetch('https://dev.noyax.com/services/noyax_api/api/v1/finance/bank-internal-transfers/{bankInternalTransferId}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://dev.noyax.com/services/noyax_api/api/v1/finance/bank-internal-transfers/{bankInternalTransferId}"
payload = {
"VoucherNumber": "Next",
"Date": "2026-09-24T14:06:00",
"Description": "<string>",
"SharingCode": "<string>",
"Lines": [
{
"BankAccountCode": "TEST POS",
"Debit": 0,
"Credit": 500,
"ExchangeRate": 1,
"Description": "<string>"
}
]
}
headers = {
"X-UserID": "<x-userid>",
"X-CompanyID": "<x-companyid>",
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text){
"Success": true,
"ResultCode": "0000",
"Data": {
"Id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"VoucherNumber": "<string>",
"Date": "2023-11-07T05:31:56Z",
"Description": "<string>",
"SharingCode": "<string>",
"SharingCodeId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"TotalDebit": 123,
"TotalCredit": 123,
"ExchangeRate": 123,
"IsPosted": true,
"CreateDate": "2023-11-07T05:31:56Z",
"ModifyDate": "2023-11-07T05:31:56Z",
"Lines": [
{
"CurrencyCode": "<string>",
"BankAccountId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"CurrencyId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"BankAccountCode": "TEST POS",
"Debit": 0,
"Credit": 500,
"ExchangeRate": 1,
"Description": "<string>"
}
]
},
"Message": "<string>"
}{
"Success": false,
"ResultCode": "8506",
"Message": "The voucher has been posted to accounting and can no longer be updated.",
"Errors": [
{
"Code": "8506",
"Message": "The voucher has been posted to accounting and can no longer be updated."
}
]
}{
"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."
}
]
}{
"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."
}
]
}{
"Success": false,
"ResultCode": "8500",
"Message": "Bank internal transfer not found.",
"Errors": [
{
"Code": "8500",
"Message": "Bank internal transfer not found."
}
]
}{
"Success": false,
"ResultCode": "0120",
"Message": "Daily request limit (10000) exceeded.",
"Errors": [
{
"Code": "0120",
"Message": "Daily request limit (10000) exceeded."
}
]
}Partially update bank internal transfer
Changes only the sent fields of the voucher.
curl --request PATCH \
--url https://dev.noyax.com/services/noyax_api/api/v1/finance/bank-internal-transfers/{bankInternalTransferId} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'X-CompanyID: <x-companyid>' \
--header 'X-UserID: <x-userid>' \
--data '
{
"VoucherNumber": "Next",
"Date": "2026-09-24T14:06:00",
"Description": "<string>",
"SharingCode": "<string>",
"Lines": [
{
"BankAccountCode": "TEST POS",
"Debit": 0,
"Credit": 500,
"ExchangeRate": 1,
"Description": "<string>"
}
]
}
'using RestSharp;
var options = new RestClientOptions("https://dev.noyax.com/services/noyax_api/api/v1/finance/bank-internal-transfers/{bankInternalTransferId}");
var client = new RestClient(options);
var request = new RestRequest("");
request.AddHeader("X-UserID", "<x-userid>");
request.AddHeader("X-CompanyID", "<x-companyid>");
request.AddHeader("Authorization", "Bearer <token>");
request.AddJsonBody("{\n \"VoucherNumber\": \"Next\",\n \"Date\": \"2026-09-24T14:06:00\",\n \"Description\": \"<string>\",\n \"SharingCode\": \"<string>\",\n \"Lines\": [\n {\n \"BankAccountCode\": \"TEST POS\",\n \"Debit\": 0,\n \"Credit\": 500,\n \"ExchangeRate\": 1,\n \"Description\": \"<string>\"\n }\n ]\n}", false);
var response = await client.PatchAsync(request);
Console.WriteLine("{0}", response.Content);
const options = {
method: 'PATCH',
headers: {
'X-UserID': '<x-userid>',
'X-CompanyID': '<x-companyid>',
Authorization: 'Bearer <token>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
VoucherNumber: 'Next',
Date: '2026-09-24T14:06:00',
Description: '<string>',
SharingCode: '<string>',
Lines: [
{
BankAccountCode: 'TEST POS',
Debit: 0,
Credit: 500,
ExchangeRate: 1,
Description: '<string>'
}
]
})
};
fetch('https://dev.noyax.com/services/noyax_api/api/v1/finance/bank-internal-transfers/{bankInternalTransferId}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://dev.noyax.com/services/noyax_api/api/v1/finance/bank-internal-transfers/{bankInternalTransferId}"
payload = {
"VoucherNumber": "Next",
"Date": "2026-09-24T14:06:00",
"Description": "<string>",
"SharingCode": "<string>",
"Lines": [
{
"BankAccountCode": "TEST POS",
"Debit": 0,
"Credit": 500,
"ExchangeRate": 1,
"Description": "<string>"
}
]
}
headers = {
"X-UserID": "<x-userid>",
"X-CompanyID": "<x-companyid>",
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text){
"Success": true,
"ResultCode": "0000",
"Data": {
"Id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"VoucherNumber": "<string>",
"Date": "2023-11-07T05:31:56Z",
"Description": "<string>",
"SharingCode": "<string>",
"SharingCodeId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"TotalDebit": 123,
"TotalCredit": 123,
"ExchangeRate": 123,
"IsPosted": true,
"CreateDate": "2023-11-07T05:31:56Z",
"ModifyDate": "2023-11-07T05:31:56Z",
"Lines": [
{
"CurrencyCode": "<string>",
"BankAccountId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"CurrencyId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"BankAccountCode": "TEST POS",
"Debit": 0,
"Credit": 500,
"ExchangeRate": 1,
"Description": "<string>"
}
]
},
"Message": "<string>"
}{
"Success": false,
"ResultCode": "8506",
"Message": "The voucher has been posted to accounting and can no longer be updated.",
"Errors": [
{
"Code": "8506",
"Message": "The voucher has been posted to accounting and can no longer be updated."
}
]
}{
"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."
}
]
}{
"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."
}
]
}{
"Success": false,
"ResultCode": "8500",
"Message": "Bank internal transfer not found.",
"Errors": [
{
"Code": "8500",
"Message": "Bank internal transfer not found."
}
]
}{
"Success": false,
"ResultCode": "0120",
"Message": "Daily request limit (10000) exceeded.",
"Errors": [
{
"Code": "0120",
"Message": "Daily request limit (10000) exceeded."
}
]
}- A field that is not sent stays unchanged, a field sent as
nullis cleared. - Lists are not merged: when
Linesis sent it replaces all lines, when it is not sent the lines stay as they are. - Validation runs on the whole merged record; setting a required field to
nullis rejected.
Error codes
Codes this endpoint can return. The general errors 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) |
8500 | 404 | Bank internal transfer not found |
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 |
8506 | 400 | The voucher has been posted to accounting and can no longer be updated or deleted |
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 |
Authorizations
Access token obtained from the Noyax auth service with your API key.
Headers
ID of the Noyax user the request is made on behalf of. Written to the audit fields of created, updated and deleted records.
x >= 1ID of the company. The user must be assigned to this company. All reads and writes are limited to this company.
x >= 1ID of the accounting period. Optional for customer endpoints; if sent, it is written to created records.
x >= 1Path Parameters
Bank internal transfer ID.
Body
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.
"Next"
Required. Voucher date. If a time is sent it is stored as the voucher time, otherwise the current time is used.
"2026-09-24T14:06:00"
Description. At most 1000 characters.
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.
Required, at least one line.
Show child attributes
Show child attributes
Response
OK
Whether the operation succeeded.
true
"0000" on success. On failure, the code of the first error; all errors are listed in Errors.
"0000"
Response data. Null when Success is false.
Show child attributes
Show child attributes
Error message when Success is false. Messages of all errors are joined into a single text.