curl --request POST \
--url https://api.chift.eu/consumers/{consumer_id}/accounting/bank-transactions \
--header 'Content-Type: application/json' \
--data '
{
"bank_statement_date": "2026-01-15",
"bank_account_id": "<accounting-bank-account-id>",
"currency": "EUR",
"external_bank_statement_id": "1234567890",
"items": [
{
"amount": 242,
"general_ledger_account": "<accounting-account-number>",
"description": "Bank charges",
"external_transaction_id": "TXN-2026-0001",
"fee_amount": 0,
"tax_amount": 0,
"currency_exchange_rate": 1,
"counterpart": {
"id": "<string>",
"name": "John Doe",
"iban": "BE00000000000000",
"bank_account": "0000000000"
}
}
],
"opening_balance": 1000,
"pdf": "<string>",
"pdf_name": "<string>"
}
'import requests
url = "https://api.chift.eu/consumers/{consumer_id}/accounting/bank-transactions"
payload = {
"bank_statement_date": "2026-01-15",
"bank_account_id": "<accounting-bank-account-id>",
"currency": "EUR",
"external_bank_statement_id": "1234567890",
"items": [
{
"amount": 242,
"general_ledger_account": "<accounting-account-number>",
"description": "Bank charges",
"external_transaction_id": "TXN-2026-0001",
"fee_amount": 0,
"tax_amount": 0,
"currency_exchange_rate": 1,
"counterpart": {
"id": "<string>",
"name": "John Doe",
"iban": "BE00000000000000",
"bank_account": "0000000000"
}
}
],
"opening_balance": 1000,
"pdf": "<string>",
"pdf_name": "<string>"
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
bank_statement_date: '2026-01-15',
bank_account_id: '<accounting-bank-account-id>',
currency: 'EUR',
external_bank_statement_id: '1234567890',
items: [
{
amount: 242,
general_ledger_account: '<accounting-account-number>',
description: 'Bank charges',
external_transaction_id: 'TXN-2026-0001',
fee_amount: 0,
tax_amount: 0,
currency_exchange_rate: 1,
counterpart: {
id: '<string>',
name: 'John Doe',
iban: 'BE00000000000000',
bank_account: '0000000000'
}
}
],
opening_balance: 1000,
pdf: '<string>',
pdf_name: '<string>'
})
};
fetch('https://api.chift.eu/consumers/{consumer_id}/accounting/bank-transactions', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.chift.eu/consumers/{consumer_id}/accounting/bank-transactions",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'bank_statement_date' => '2026-01-15',
'bank_account_id' => '<accounting-bank-account-id>',
'currency' => 'EUR',
'external_bank_statement_id' => '1234567890',
'items' => [
[
'amount' => 242,
'general_ledger_account' => '<accounting-account-number>',
'description' => 'Bank charges',
'external_transaction_id' => 'TXN-2026-0001',
'fee_amount' => 0,
'tax_amount' => 0,
'currency_exchange_rate' => 1,
'counterpart' => [
'id' => '<string>',
'name' => 'John Doe',
'iban' => 'BE00000000000000',
'bank_account' => '0000000000'
]
]
],
'opening_balance' => 1000,
'pdf' => '<string>',
'pdf_name' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.chift.eu/consumers/{consumer_id}/accounting/bank-transactions"
payload := strings.NewReader("{\n \"bank_statement_date\": \"2026-01-15\",\n \"bank_account_id\": \"<accounting-bank-account-id>\",\n \"currency\": \"EUR\",\n \"external_bank_statement_id\": \"1234567890\",\n \"items\": [\n {\n \"amount\": 242,\n \"general_ledger_account\": \"<accounting-account-number>\",\n \"description\": \"Bank charges\",\n \"external_transaction_id\": \"TXN-2026-0001\",\n \"fee_amount\": 0,\n \"tax_amount\": 0,\n \"currency_exchange_rate\": 1,\n \"counterpart\": {\n \"id\": \"<string>\",\n \"name\": \"John Doe\",\n \"iban\": \"BE00000000000000\",\n \"bank_account\": \"0000000000\"\n }\n }\n ],\n \"opening_balance\": 1000,\n \"pdf\": \"<string>\",\n \"pdf_name\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.chift.eu/consumers/{consumer_id}/accounting/bank-transactions")
.header("Content-Type", "application/json")
.body("{\n \"bank_statement_date\": \"2026-01-15\",\n \"bank_account_id\": \"<accounting-bank-account-id>\",\n \"currency\": \"EUR\",\n \"external_bank_statement_id\": \"1234567890\",\n \"items\": [\n {\n \"amount\": 242,\n \"general_ledger_account\": \"<accounting-account-number>\",\n \"description\": \"Bank charges\",\n \"external_transaction_id\": \"TXN-2026-0001\",\n \"fee_amount\": 0,\n \"tax_amount\": 0,\n \"currency_exchange_rate\": 1,\n \"counterpart\": {\n \"id\": \"<string>\",\n \"name\": \"John Doe\",\n \"iban\": \"BE00000000000000\",\n \"bank_account\": \"0000000000\"\n }\n }\n ],\n \"opening_balance\": 1000,\n \"pdf\": \"<string>\",\n \"pdf_name\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.chift.eu/consumers/{consumer_id}/accounting/bank-transactions")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"bank_statement_date\": \"2026-01-15\",\n \"bank_account_id\": \"<accounting-bank-account-id>\",\n \"currency\": \"EUR\",\n \"external_bank_statement_id\": \"1234567890\",\n \"items\": [\n {\n \"amount\": 242,\n \"general_ledger_account\": \"<accounting-account-number>\",\n \"description\": \"Bank charges\",\n \"external_transaction_id\": \"TXN-2026-0001\",\n \"fee_amount\": 0,\n \"tax_amount\": 0,\n \"currency_exchange_rate\": 1,\n \"counterpart\": {\n \"id\": \"<string>\",\n \"name\": \"John Doe\",\n \"iban\": \"BE00000000000000\",\n \"bank_account\": \"0000000000\"\n }\n }\n ],\n \"opening_balance\": 1000,\n \"pdf\": \"<string>\",\n \"pdf_name\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"bank_statement_date": "2026-01-15",
"bank_account_id": "<accounting-bank-account-id>",
"currency": "EUR",
"items": [
{
"amount": 242,
"general_ledger_account": "<accounting-account-number>",
"description": "Bank charges",
"external_transaction_id": "TXN-2026-0001",
"fee_amount": 0,
"tax_amount": 0,
"currency_exchange_rate": 1,
"counterpart": {
"counterpart_type": "customer",
"id": "<string>",
"name": "John Doe",
"iban": "BE00000000000000",
"bank_account": "0000000000"
},
"id": "<this-bank-transaction-id>"
}
],
"id": "<this-bank-statement-id>",
"external_bank_statement_id": "1234567890"
}{
"message": "Error while trying to perform your request",
"status": "error"
}{
"message": "The format of the statement id/number doesn't follow the format of the corresponding accounting system (e.g. too long)",
"status": "error",
"error_code": "ERROR_INVALID_FIELD_FORMAT_STATEMENT_NUMBER"
}Create bank transactions
Creates new bank statement transactions (lines) in the accounting system for a given bank account.
curl --request POST \
--url https://api.chift.eu/consumers/{consumer_id}/accounting/bank-transactions \
--header 'Content-Type: application/json' \
--data '
{
"bank_statement_date": "2026-01-15",
"bank_account_id": "<accounting-bank-account-id>",
"currency": "EUR",
"external_bank_statement_id": "1234567890",
"items": [
{
"amount": 242,
"general_ledger_account": "<accounting-account-number>",
"description": "Bank charges",
"external_transaction_id": "TXN-2026-0001",
"fee_amount": 0,
"tax_amount": 0,
"currency_exchange_rate": 1,
"counterpart": {
"id": "<string>",
"name": "John Doe",
"iban": "BE00000000000000",
"bank_account": "0000000000"
}
}
],
"opening_balance": 1000,
"pdf": "<string>",
"pdf_name": "<string>"
}
'import requests
url = "https://api.chift.eu/consumers/{consumer_id}/accounting/bank-transactions"
payload = {
"bank_statement_date": "2026-01-15",
"bank_account_id": "<accounting-bank-account-id>",
"currency": "EUR",
"external_bank_statement_id": "1234567890",
"items": [
{
"amount": 242,
"general_ledger_account": "<accounting-account-number>",
"description": "Bank charges",
"external_transaction_id": "TXN-2026-0001",
"fee_amount": 0,
"tax_amount": 0,
"currency_exchange_rate": 1,
"counterpart": {
"id": "<string>",
"name": "John Doe",
"iban": "BE00000000000000",
"bank_account": "0000000000"
}
}
],
"opening_balance": 1000,
"pdf": "<string>",
"pdf_name": "<string>"
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
bank_statement_date: '2026-01-15',
bank_account_id: '<accounting-bank-account-id>',
currency: 'EUR',
external_bank_statement_id: '1234567890',
items: [
{
amount: 242,
general_ledger_account: '<accounting-account-number>',
description: 'Bank charges',
external_transaction_id: 'TXN-2026-0001',
fee_amount: 0,
tax_amount: 0,
currency_exchange_rate: 1,
counterpart: {
id: '<string>',
name: 'John Doe',
iban: 'BE00000000000000',
bank_account: '0000000000'
}
}
],
opening_balance: 1000,
pdf: '<string>',
pdf_name: '<string>'
})
};
fetch('https://api.chift.eu/consumers/{consumer_id}/accounting/bank-transactions', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.chift.eu/consumers/{consumer_id}/accounting/bank-transactions",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'bank_statement_date' => '2026-01-15',
'bank_account_id' => '<accounting-bank-account-id>',
'currency' => 'EUR',
'external_bank_statement_id' => '1234567890',
'items' => [
[
'amount' => 242,
'general_ledger_account' => '<accounting-account-number>',
'description' => 'Bank charges',
'external_transaction_id' => 'TXN-2026-0001',
'fee_amount' => 0,
'tax_amount' => 0,
'currency_exchange_rate' => 1,
'counterpart' => [
'id' => '<string>',
'name' => 'John Doe',
'iban' => 'BE00000000000000',
'bank_account' => '0000000000'
]
]
],
'opening_balance' => 1000,
'pdf' => '<string>',
'pdf_name' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.chift.eu/consumers/{consumer_id}/accounting/bank-transactions"
payload := strings.NewReader("{\n \"bank_statement_date\": \"2026-01-15\",\n \"bank_account_id\": \"<accounting-bank-account-id>\",\n \"currency\": \"EUR\",\n \"external_bank_statement_id\": \"1234567890\",\n \"items\": [\n {\n \"amount\": 242,\n \"general_ledger_account\": \"<accounting-account-number>\",\n \"description\": \"Bank charges\",\n \"external_transaction_id\": \"TXN-2026-0001\",\n \"fee_amount\": 0,\n \"tax_amount\": 0,\n \"currency_exchange_rate\": 1,\n \"counterpart\": {\n \"id\": \"<string>\",\n \"name\": \"John Doe\",\n \"iban\": \"BE00000000000000\",\n \"bank_account\": \"0000000000\"\n }\n }\n ],\n \"opening_balance\": 1000,\n \"pdf\": \"<string>\",\n \"pdf_name\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.chift.eu/consumers/{consumer_id}/accounting/bank-transactions")
.header("Content-Type", "application/json")
.body("{\n \"bank_statement_date\": \"2026-01-15\",\n \"bank_account_id\": \"<accounting-bank-account-id>\",\n \"currency\": \"EUR\",\n \"external_bank_statement_id\": \"1234567890\",\n \"items\": [\n {\n \"amount\": 242,\n \"general_ledger_account\": \"<accounting-account-number>\",\n \"description\": \"Bank charges\",\n \"external_transaction_id\": \"TXN-2026-0001\",\n \"fee_amount\": 0,\n \"tax_amount\": 0,\n \"currency_exchange_rate\": 1,\n \"counterpart\": {\n \"id\": \"<string>\",\n \"name\": \"John Doe\",\n \"iban\": \"BE00000000000000\",\n \"bank_account\": \"0000000000\"\n }\n }\n ],\n \"opening_balance\": 1000,\n \"pdf\": \"<string>\",\n \"pdf_name\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.chift.eu/consumers/{consumer_id}/accounting/bank-transactions")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"bank_statement_date\": \"2026-01-15\",\n \"bank_account_id\": \"<accounting-bank-account-id>\",\n \"currency\": \"EUR\",\n \"external_bank_statement_id\": \"1234567890\",\n \"items\": [\n {\n \"amount\": 242,\n \"general_ledger_account\": \"<accounting-account-number>\",\n \"description\": \"Bank charges\",\n \"external_transaction_id\": \"TXN-2026-0001\",\n \"fee_amount\": 0,\n \"tax_amount\": 0,\n \"currency_exchange_rate\": 1,\n \"counterpart\": {\n \"id\": \"<string>\",\n \"name\": \"John Doe\",\n \"iban\": \"BE00000000000000\",\n \"bank_account\": \"0000000000\"\n }\n }\n ],\n \"opening_balance\": 1000,\n \"pdf\": \"<string>\",\n \"pdf_name\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"bank_statement_date": "2026-01-15",
"bank_account_id": "<accounting-bank-account-id>",
"currency": "EUR",
"items": [
{
"amount": 242,
"general_ledger_account": "<accounting-account-number>",
"description": "Bank charges",
"external_transaction_id": "TXN-2026-0001",
"fee_amount": 0,
"tax_amount": 0,
"currency_exchange_rate": 1,
"counterpart": {
"counterpart_type": "customer",
"id": "<string>",
"name": "John Doe",
"iban": "BE00000000000000",
"bank_account": "0000000000"
},
"id": "<this-bank-transaction-id>"
}
],
"id": "<this-bank-statement-id>",
"external_bank_statement_id": "1234567890"
}{
"message": "Error while trying to perform your request",
"status": "error"
}{
"message": "The format of the statement id/number doesn't follow the format of the corresponding accounting system (e.g. too long)",
"status": "error",
"error_code": "ERROR_INVALID_FIELD_FORMAT_STATEMENT_NUMBER"
}Path Parameters
Query Parameters
Id of the accounting folder instance. A folder represents a legal entity within the system. Required when the multiple folders feature is enabled.
Body
Date of the bank statement
"2026-01-15"
Unique ID of the bank account in the accounting system
1"<accounting-bank-account-id>"
Currency of the bank statement. This must be the same as the currency of the bank account.
1"EUR"
External bank statement ID. To be compatible with all software, we recommend to use only digits with a maximum length of 10.
1"1234567890"
List of transaction items
1Show child attributes
Show child attributes
Opening balance of the bank account before the statement
1000
Base64 PDF attachment of the bank statement.
A name for the PDF file to be created for accounting software that support it.
1 - 200^[a-zA-Z0-9\-_ ]{1,196}(?:.pdf)?$Response
Successful Response
Date of the bank statement
"2026-01-15"
Unique ID of the bank account in the accounting system
1"<accounting-bank-account-id>"
Currency of the bank statement. This must be the same as the currency of the bank account.
1"EUR"
List of transaction items with their IDs
Show child attributes
Show child attributes
Internal bank statement ID generated by the accounting system
"<this-bank-statement-id>"
External bank statement ID
"1234567890"