curl --request POST \
--url https://dev.noyax.com/services/noyax_api/api/v1/finance/bank-openings \
--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-openings");
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.PostAsync(request);
Console.WriteLine("{0}", response.Content);
const options = {
method: 'POST',
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-openings', 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-openings"
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.post(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": "8305",
"Message": "At least one line is required.",
"Errors": [
{
"Code": "8305",
"Message": "At least one line is required."
}
]
}{
"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": "0120",
"Message": "Daily request limit (10000) exceeded.",
"Errors": [
{
"Code": "0120",
"Message": "Daily request limit (10000) exceeded."
}
]
}Create bank opening
Adds a new bank opening voucher with its lines in one transaction.
curl --request POST \
--url https://dev.noyax.com/services/noyax_api/api/v1/finance/bank-openings \
--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-openings");
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.PostAsync(request);
Console.WriteLine("{0}", response.Content);
const options = {
method: 'POST',
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-openings', 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-openings"
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.post(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": "8305",
"Message": "At least one line is required.",
"Errors": [
{
"Code": "8305",
"Message": "At least one line is required."
}
]
}{
"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": "0120",
"Message": "Daily request limit (10000) exceeded.",
"Errors": [
{
"Code": "0120",
"Message": "Daily request limit (10000) exceeded."
}
]
}Debit does not need to equal their total Credit.
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) |
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 |
8301 | 400 | VoucherNumber is required |
8302 | 400 | VoucherNumber is already used in the company (among all bank voucher types) |
8303 | 400 | VoucherNumber cannot be “Next” on update |
8304 | 400 | Date is required |
8305 | 400 | At least one line is required |
8307 | 400 | SharingCode is not one of the user’s sharing codes |
8400 | 400 | Line BankAccountCode is required |
8401 | 400 | Line BankAccountCode was not found |
8402 | 400 | Line ExchangeRate is required and must be greater than 0 |
8403 | 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 >= 1Body
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
Created
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.