Indicates the source of the order, e.g. "amazon". "csv" for the CSV importer, the program the file came from is the external_account_name, e.g. "Billbee"
String
"billware"
external_ident
If the order was imported from e.g. ebay, this is the unique identifier provided by the source
String
""
external_account_name
If the order was imported from e.g. ebay, this is the name of the ebay account
String
""
customer_ident Required
Identifier for the customer connected to the order
String
divergent_delivery_address
Indicates if the delivery address differs from the invoice address
0 No1 Yes
0
address_ident
Identifier of the delivery address which will be applied to the order if the field divergent_delivery_address is set to 1
String
""
date_created
Date of the order
Date as String
"2026-10-19 04:49:07"
date_paid
Date when the order was fully paid. If date is in the past, the order will be marked as paid
Date as String
NULL
invoice_nr
Invoice number which will be set when you generate the invoice. If you leave this empty and generate the invoice, a number will be created automatically
String
""
is_quotation
Indicates if the order is a quotation, it can be converted to an order by setting this value to 0
0 No1 Yes
0
is_canceled
Indicates if the order is canceled
0 No1 Yes
0
small_entrepreneur
Indicates if the small business regulation should be applied to the order
0 No1 Yes
0
reverse_charge
Indicates if the reverse charge procedure should be applied to the order, the customer owes the VAT
0 No1 Yes
0
intracommunity
Indicates if the order is a tax free intracommunity delivery
0 No1 Yes
0
differential_taxation
Indicates if the order applies to the use of differential taxation according to § 25a UStG
0 No1 Yes
0
document_show_article_description
Indicates if the article description should appear on the invoice
0 No1 Yes
0
term_of_credit
The term of credit granted in days
Integer
The default term of credit defined in your billware configuration
user_note
Optional internal note about this order
String
""
public_authority_id
ID of a public authority (Leitweg-ID), e.g. 04011000-1234512345-06. Goes into the e-invoice as buyer reference (BT-10) and electronic address of the buyer (BT-49). The check digits are verified, a wrong ID is refused. Empty or not set: the public_authority_id of the customer. A customer without one keeps the order's as well
String up to 46 characters
public_authority_id of the customer
customer_reference
Reference number given by the customer, e.g. their order number. Printed on the documents and set in the e-invoice as purchase order reference (BT-13), without public_authority_id also as buyer reference (BT-10)
String up to 128 characters
""
date_delivered
Indicates period and type of performance
Array
Array
type
Indicates how the delivery date is defined for the order
0 Specific Date1 Equals date of invoice-1 Unknown2 From Date until Date3 Equals date of delivery note
1
start
The specific date or start of the date period
Date as String
NULL
end
The end of the date period
Date as String
NULL
discount
Holds discount fields to be applied to the order
Array
Array
title
The title of the discount, displayed on documents
String
""
calculation_type
Indicates if and how the discount should be applied
-1 None0 Value given is Percentage1 Value given is absolute
-1
price_type
if the calculation_type is 1 indicates if the discount should be applied to the net or gross price
0 Applied to net price1 Applied to gross price
0
value
The value of the discount as percentage or price indicated by the calculation_type
Float
0
payment
Holds payment method fields to be applied to the order
Array
Array
name
Indicates the name of the payment method
String
""
calculation_type
Indicates if and how the payment method should be applied
-1 None0 Value given is Percentage1 Value given is absolute2 Free, payment method indicated but not charged
-1
price_type
if the calculation_type is 1 indicates if the payment method charges should be applied to the net or gross price
0 Applied to net price1 Applied to gross price
0
value
The value of the payment method charges as percentage or price indicated by the calculation_type
Float
0
cashback_active
Indicates if cashback is active
0 No1 Yes
0
cashback
Cashback value applied to the order in percent
Integer
0
cashback_days
Number of days indicated on the invoice for which the cashback applies
Integer
0
shipping
Holds shipping method fields to be applied to the order
Array
Array
carrier
The name of the carrier
String
""
tracking
The tracking number of the shipment
String
""
calculation_type
Indicates if and how the shipping method should be applied
-1 None0 Value given is Percentage1 Value given is absolute2 Free, shipping method indicated but not charged
-1
price_type
if the calculation_type is 1 indicates if the shipping method charges should be applied to the net or gross price
0 Applied to net price1 Applied to gross price
0
value
The value of the shipping costs as percentage or price indicated by the calculation_type
Float
0
articles
Array of articles which will be added to the order
Array
Array
[KEYS]
Array Element holding article fields. The key can be a number or a string
Array Key
NULL
article_ident
Identifier of the article or random string if the article does not exist in the database
String
NULL
article_price
The net price of the article
Float
0.0000
article_purchase_price
The purchase price of the article
Float
0.0000
article_tax_rate
The tax rate of the article
Float
0.0000
article_quantity
Quantity of this position
Float
0.00
article_position
The position of this article in tables of documents
Integer
1
article_title
The title of this article
String
""
article_subtitle
The subtitle of this article
String
""
article_unit
Unit identifier of the article
"unit_ppu" Price per unit"unit_hour" Units are hours"unit_lump"
Lump"unit_kg" Units are kilograms
"unit_ppu"
article_sku
Article SKU
String
""
article_ean
Article EAN
String
""
article_nr
Article number
String
""
Code Examples
# Get your API credentials from your billware customer area
API_APPID="your-app-id"
API_SECRET="your-api-secret"
PAYLOAD='{"customer_ident":"46yq1898qmohrz57","order_date":"2025-07-16 10:00:00","due_date":"2025-07-30 00:00:00","is_paid":0,"invoice_number":null,"is_quotation":0,"small_entrepreneur":0,"reverse_charge":0,"intra_community":0,"term_of_credit":14,"user_note":"Bitte schnell liefern – Kaninchenstall wird dringend benötigt!","customer_reference":"PO-2025-4711","discount":{"title":"Sonderrabatt","calculation_type":0,"price_type":1,"value":10},"payment":{"name":"Vorkasse","calculation_type":1,"price_type":1,"value":0,"cashback_active":0,"cashback":0,"cashback_days":0},"shipping":{"name":"DHL Paket","tracking":"1234567890","calculation_type":1,"price_type":1,"value":5.99},"articles":[{"article_title":"Kaninchenstall XL","article_purchase_price":75,"article_price":129.99,"article_quantity":1,"article_country":"de","article_tax_rate":19,"article_subtitle":"Wetterfest mit Auslauf","article_position":1,"article_unit":"unit_ppu","article_ean":"4012345678901","article_nr":"KAN-XL-2025"}]}'
# The HMAC is calculated over the exact request body that is sent
HMAC=$(printf '%s' "$PAYLOAD" | openssl dgst -sha256 -hmac "$API_SECRET" -binary | base64)
curl -X POST "https://www.billware.de/api/v1" \
-H "X-Bw-Hmac: $API_APPID:$HMAC" \
-H "X-Bw-Method: order.create" \
-H "Content-Type: application/json" \
-d "$PAYLOAD"
using System.Net.Http;
using System.Security.Cryptography;
using System.Text;
using System.Text.Json;
// Get your API credentials from your billware customer area
const string apiAppId = "your-app-id";
const string apiSecret = "your-api-secret";
var payload = JsonSerializer.Serialize(new
{
customer_ident = "46yq1898qmohrz57",
order_date = "2025-07-16 10:00:00",
due_date = "2025-07-30 00:00:00",
is_paid = 0,
invoice_number = (string)null,
is_quotation = 0,
small_entrepreneur = 0,
reverse_charge = 0,
intra_community = 0,
term_of_credit = 14,
user_note = "Bitte schnell liefern – Kaninchenstall wird dringend benötigt!",
customer_reference = "PO-2025-4711",
discount = new
{
title = "Sonderrabatt",
calculation_type = 0,
price_type = 1,
value = 10
},
payment = new
{
name = "Vorkasse",
calculation_type = 1,
price_type = 1,
value = 0,
cashback_active = 0,
cashback = 0,
cashback_days = 0
},
shipping = new
{
name = "DHL Paket",
tracking = "1234567890",
calculation_type = 1,
price_type = 1,
value = 5.99
},
articles = new[]
{
new
{
article_title = "Kaninchenstall XL",
article_purchase_price = 75,
article_price = 129.99,
article_quantity = 1,
article_country = "de",
article_tax_rate = 19,
article_subtitle = "Wetterfest mit Auslauf",
article_position = 1,
article_unit = "unit_ppu",
article_ean = "4012345678901",
article_nr = "KAN-XL-2025"
}
}
});
// The HMAC is calculated over the exact request body that is sent
using var hmac = new HMACSHA256(Encoding.UTF8.GetBytes(apiSecret));
var signature = Convert.ToBase64String(hmac.ComputeHash(Encoding.UTF8.GetBytes(payload)));
using var client = new HttpClient();
var request = new HttpRequestMessage(HttpMethod.Post, "https://www.billware.de/api/v1")
{
Content = new StringContent(payload, Encoding.UTF8, "application/json")
};
request.Headers.Add("X-Bw-Hmac", $"{apiAppId}:{signature}");
request.Headers.Add("X-Bw-Method", "order.create");
var response = await client.SendAsync(request);
Console.WriteLine(await response.Content.ReadAsStringAsync());
Return Values
Fields
Description
order_ident
Identifier of the created order
order.read
Get the details of an order.
Data
Fields
Description
Accepted Types
order_ident Required
Identifier of the order
String
Code Examples
# Get your API credentials from your billware customer area
API_APPID="your-app-id"
API_SECRET="your-api-secret"
PAYLOAD='{"order_ident":"aswm5o5i2v5hwlbp"}'
# The HMAC is calculated over the exact request body that is sent
HMAC=$(printf '%s' "$PAYLOAD" | openssl dgst -sha256 -hmac "$API_SECRET" -binary | base64)
curl -X POST "https://www.billware.de/api/v1" \
-H "X-Bw-Hmac: $API_APPID:$HMAC" \
-H "X-Bw-Method: order.read" \
-H "Content-Type: application/json" \
-d "$PAYLOAD"
<?php
// Get your API credentials from your billware customer area
$apiAppId = 'your-app-id';
$apiSecret = 'your-api-secret';
$payload = json_encode([
'order_ident' => 'aswm5o5i2v5hwlbp',
]);
// The HMAC is calculated over the exact request body that is sent
$hmac = base64_encode(hash_hmac('sha256', $payload, $apiSecret, true));
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => 'https://www.billware.de/api/v1',
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => $payload,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
'X-Bw-Hmac: '.$apiAppId.':'.$hmac,
'X-Bw-Method: order.read',
'Content-Type: application/json',
],
]);
$response = curl_exec($curl);
curl_close($curl);
print_r(json_decode($response, true));
import crypto from 'node:crypto';
// Get your API credentials from your billware customer area
const apiAppId = 'your-app-id';
const apiSecret = 'your-api-secret';
const payload = JSON.stringify({
"order_ident": "aswm5o5i2v5hwlbp"
});
// The HMAC is calculated over the exact request body that is sent
const hmac = crypto.createHmac('sha256', apiSecret).update(payload).digest('base64');
const response = await fetch('https://www.billware.de/api/v1', {
method: 'POST',
headers: {
'X-Bw-Hmac': `${apiAppId}:${hmac}`,
'X-Bw-Method': 'order.read',
'Content-Type': 'application/json'
},
body: payload
});
console.log(await response.json());
import base64
import hashlib
import hmac
import json
import requests
# Get your API credentials from your billware customer area
api_appid = "your-app-id"
api_secret = "your-api-secret"
payload = json.dumps({
"order_ident": "aswm5o5i2v5hwlbp",
})
# The HMAC is calculated over the exact request body that is sent
signature = base64.b64encode(
hmac.new(api_secret.encode(), payload.encode(), hashlib.sha256).digest()
).decode()
response = requests.post(
"https://www.billware.de/api/v1",
data=payload,
headers={
"X-Bw-Hmac": f"{api_appid}:{signature}",
"X-Bw-Method": "order.read",
"Content-Type": "application/json",
},
)
print(response.json())
using System.Net.Http;
using System.Security.Cryptography;
using System.Text;
using System.Text.Json;
// Get your API credentials from your billware customer area
const string apiAppId = "your-app-id";
const string apiSecret = "your-api-secret";
var payload = JsonSerializer.Serialize(new
{
order_ident = "aswm5o5i2v5hwlbp"
});
// The HMAC is calculated over the exact request body that is sent
using var hmac = new HMACSHA256(Encoding.UTF8.GetBytes(apiSecret));
var signature = Convert.ToBase64String(hmac.ComputeHash(Encoding.UTF8.GetBytes(payload)));
using var client = new HttpClient();
var request = new HttpRequestMessage(HttpMethod.Post, "https://www.billware.de/api/v1")
{
Content = new StringContent(payload, Encoding.UTF8, "application/json")
};
request.Headers.Add("X-Bw-Hmac", $"{apiAppId}:{signature}");
request.Headers.Add("X-Bw-Method", "order.read");
var response = await client.SendAsync(request);
Console.WriteLine(await response.Content.ReadAsStringAsync());
Return Values
Fields
Description
Type
order_ident
Identifier of the order
String
customer_ident
Identifier of the customer associated with the order
String
external_ident
If the order was imported from e.g. ebay, this is the unique identifier provided by the source
String
external_account_name
If the order was imported from e.g. ebay, this is the name of the ebay account
String
is_template
Indicates if the order is a recurring order serving as a template
0 No1 Yes
is_quotation
Indicates if the order is a quotation
0 No1 Yes
is_canceled
Indicates if the order is marked as canceled
0 No1 Yes
repeated
Indicates if this order was repeated / duplicated based on a recurring order
0 No1 Yes
document_show_article_description
Indicates if the article description should appear on the invoice
0 No1 Yes
date_created
Date and time when the order was created
Date as String
date_created_user
Date when the order was created in user format, e.g. "19.10.2018"
Date as String
date_updated
Date and time when the order was last updated
Date as String
date_updated_user
Date when the order was updated in user format, e.g. "19.10.2018"
Date as String
date_paid
Date and time when the order was fully paid
Date as String
date_paid_user
Date when the order was fully paid in user format, e.g. "19.10.2018"
Date as String
date_invoice
Date and time of the invoice
Date as String
date_invoice_user
Date of the invoice in user format, e.g. "19.10.2018"
Date as String
order_type
Source of the order, e.g. "amazon"
String
external_username
If the order was imported from e.g. ebay, this is the username of the customer
String
order_nr
The order number
String
customer_nr
The customer number
String
invoice_nr
The invoice number
String
delivery_note_nr
The delivery note number
String
quotation_nr
If the order is or was a quotation, this field holds the quotation number
String
is_business_client
Indicates if the customer is a business client
0 No1 Yes
bill_title
Invoice address: Title of the customer
-1 Company0 Mister1 Miss2 Diverse3 No title4 Family5 Couple6 Doctor7 Professor
-1
bill_firstname
Invoice address: Firstname
String
bill_lastname
Invoice address: Lastname
String
bill_company
Invoice address: Company name
String
bill_vat_nr
Invoice address: VAT number
String
bill_street
Invoice address: Street
String
bill_street2
Invoice address: Addition to the address
String
bill_zipcode
Invoice address: Zipcode
String
bill_city
Invoice address: City
String
bill_country
Invoice address: Country code (ISO 3166 ALPHA-2) in lower case, e.g. de; upper case is stored in lower case
String
bill_email
Invoice address: E-mail address
String
bill_phone
Invoice address: Phone number
String
bill_phone_mobile
Invoice address: Mobile phone number
String
divergent_delivery_address
Indicates if the delivery address differs from the invoice address
0 No1 Yes
delivery_title
Delivery Address: Title of the customer
-1 Company0 Mister1 Miss2 Diverse3 No title4 Family5 Couple6 Doctor7 Professor
delivery_firstname
Delivery address: Firstname
String
delivery_lastname
Delivery address: Lastname
String
delivery_company
Delivery address: Company name
String
delivery_street
Delivery address: Street
String
delivery_street2
Delivery address: Addition to the address
String
delivery_zipcode
Delivery address: Zipcode
String
delivery_city
Delivery address: City
String
delivery_country
Delivery address: Country code (ISO 3166 ALPHA-2) in lower case, e.g. de; upper case is stored in lower case
String
delivery_phone
Delivery address: Phone number
String
delivery_phone_mobile
Delivery address: Mobile phone number
String
account_bank
Name of the bank
String
account_bic
BIC of the bank
String
account_iban
IBAN of the customer's bank account
String
account_paypal
PayPal account of the customer
String
small_entrepreneur
Indicates if the small business regulation is applied to the order
0 No1 Yes
reverse_charge
Indicates if the reverse charge procedure is applied to the order, the customer owes the VAT
0 No1 Yes
intracommunity
Indicates if the order is a tax free intracommunity delivery
0 No1 Yes
differential_taxation
Indicates if the order applies to the use of differential taxation according to § 25a UStG
0 No1 Yes
term_of_credit
The term of credit granted in days
Integer
sum_net
Net sum of the order
Float
sum_gross
Gross sum of the order
Float
sum_reminder1
Fee of the first reminder level
Float
sum_reminder2
Fee of the second reminder level
Float
sum_reminder3
Fee of the final reminder level
Float
user_note
Internal note about this order
String
public_authority_id
ID of a public authority (Leitweg-ID), empty if none is set
String
customer_reference
Reference number given by the customer, empty if none is set. HTML special characters are returned encoded, e.g. &
String
credit_note
Array if the order has a credit note, else false
Array
credit_note_ident
Identifier of the credit note
String
sum_net
Net sum of the credit note
Float
sum_gross
Gross sum of the credit note
Float
date_delivered
Indicates period and type of performance
Array
type
Indicates how the delivery date is defined for the order
0 Specific Date1 Equals date of invoice-1 Unknown2 From Date until Date3 Equals date of delivery note
start
The specific date or start of the date period
Date as String
end
The end of the date period
Date as String
discount
Holds discount fields of the order
Array
title
The title of the discount, displayed on documents
String
calculation_type
Indicates if and how the discount should be applied
-1 None0 Value given is Percentage1 Value given is absolute
price_type
if the calculation_type is 1 indicates if the discount should be applied to the net or gross price
0 Applied to net price1 Applied to gross price
value
The value of the discount as percentage or price indicated by the calculation_type
Float
payment
Holds payment method fields of the order
Array
name
Indicates the name of the payment method
String
calculation_type
Indicates if and how the payment method should be applied
-1 None0 Value given is Percentage1 Value given is absolute2 Free, payment method indicated but not charged
price_type
if the calculation_type is 1 indicates if the payment method charges should be applied to the net or gross price
0 Applied to net price1 Applied to gross price
value
The value of the payment method charges as percentage or price indicated by the calculation_type
Float
cashback_active
Indicates if cashback is active
0 No1 Yes
cashback
Cashback value applied to the order in percent
Integer
cashback_days
Number of days indicated on the invoice for which the cashback applies
Integer
shipping
Holds shipping method fields of the order
Array
carrier
The name of the carrier
String
tracking
The tracking number of the shipment
String
calculation_type
Indicates if and how the shipping method should be applied
-1 None0 Value given is Percentage1 Value given is absolute2 Free, shipping method indicated but not charged
price_type
if the calculation_type is 1 indicates if the shipping method charges should be applied to the net or gross price
0 Applied to net price1 Applied to gross price
value
The value of the shipping costs as percentage or price indicated by the calculation_type
Float
order_articles
Array of articles / positions associated with this order
Array
[ORDER_ARTICLE_IDENT]
Array Element holding article fields. The key of the array element is the identifier of the article
Array Key
order_article_ident
Identifier of this article / position
String
article_ident
Identifier of the original article in the article database as a cross-reference. NULL if that article was deleted or this article was created differently, e.g. as a position
String
article_price
The net price of the article
Float
article_purchase_price
The purchase price of the article
Float
article_tax_rate
The tax rate of the article
Float
article_quantity
Quantity of this position
Float
article_position
The position of this article in tables of documents
Integer
article_title
The title of this article
String
article_subtitle
The subtitle of this article
String
article_unit
Unit identifier of the article
"unit_ppu" Price per unit"unit_hour" Units are hours"unit_lump"
Lump"unit_kg" Units are kilograms
article_sku
Article SKU
String
article_ean
Article EAN
String
article_nr
Article number
String
files
Array of files associated with this order
Array
[ORDER_FILE_IDENT]
Array Element holding file fields. The key of the array element is the identifier of the file
Array Key
order_file_ident
Identifier of this file
String
file_source
Source of the file, e.g. "ebay"
String
href
Direct link to the file, downloads it without a login
String
controller
Indicates which controller to use for file operations, e.g. "order"
String
reference_nr
Indicates the number of the owner of this file, e.g. the order_nr
String
parent_ident
Identifier of the owner of this file, e.g. the identifier of this order
String
file_name
Internal file name with extension
String
file_user_name
Original file name with extension
String
file_extension
Extension of the file, e.g. "pdf"
String
file_type
Indicates the type of this file
"invoice""contract_note""proforma_invoice""quotation""delivery_note""reversal_invoice""credit_note""reminder_1""reminder_2""reminder_3""user" File uploaded by user
date_updated
Date and time when the file was last updated
Date as String
date_updated_user
Date when the file was last updated in user format, e.g. "19.10.2018"
Date as String
date_sent
Date and time when the file was marked as sent
Date as String
date_sent_user
Date when the file was marked as sent in user format, e.g. "19.10.2018"
Start date of the period to list orders for. Format: Y-m-d H:i:s (e.g. "2024-10-01 00:00:00")
String
end_date Required
End date of the period to list orders for. Format: Y-m-d H:i:s (e.g. "2024-10-31 23:59:59")
String
date_type Required
Type of date to filter orders by. Accepted values: date_created, date_updated, date_paid, date_invoice
String
page
Page number for pagination. Default is 1.
Integer
Code Examples
# Get your API credentials from your billware customer area
API_APPID="your-app-id"
API_SECRET="your-api-secret"
PAYLOAD='{"start_date":"2025-01-01 00:00:00","end_date":"2025-08-01 00:00:00","date_type":"date_updated","page":1}'
# The HMAC is calculated over the exact request body that is sent
HMAC=$(printf '%s' "$PAYLOAD" | openssl dgst -sha256 -hmac "$API_SECRET" -binary | base64)
curl -X POST "https://www.billware.de/api/v1" \
-H "X-Bw-Hmac: $API_APPID:$HMAC" \
-H "X-Bw-Method: order.list" \
-H "Content-Type: application/json" \
-d "$PAYLOAD"
<?php
// Get your API credentials from your billware customer area
$apiAppId = 'your-app-id';
$apiSecret = 'your-api-secret';
$payload = json_encode([
'start_date' => '2025-01-01 00:00:00',
'end_date' => '2025-08-01 00:00:00',
'date_type' => 'date_updated',
'page' => 1,
]);
// The HMAC is calculated over the exact request body that is sent
$hmac = base64_encode(hash_hmac('sha256', $payload, $apiSecret, true));
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => 'https://www.billware.de/api/v1',
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => $payload,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
'X-Bw-Hmac: '.$apiAppId.':'.$hmac,
'X-Bw-Method: order.list',
'Content-Type: application/json',
],
]);
$response = curl_exec($curl);
curl_close($curl);
print_r(json_decode($response, true));
import crypto from 'node:crypto';
// Get your API credentials from your billware customer area
const apiAppId = 'your-app-id';
const apiSecret = 'your-api-secret';
const payload = JSON.stringify({
"start_date": "2025-01-01 00:00:00",
"end_date": "2025-08-01 00:00:00",
"date_type": "date_updated",
"page": 1
});
// The HMAC is calculated over the exact request body that is sent
const hmac = crypto.createHmac('sha256', apiSecret).update(payload).digest('base64');
const response = await fetch('https://www.billware.de/api/v1', {
method: 'POST',
headers: {
'X-Bw-Hmac': `${apiAppId}:${hmac}`,
'X-Bw-Method': 'order.list',
'Content-Type': 'application/json'
},
body: payload
});
console.log(await response.json());
import base64
import hashlib
import hmac
import json
import requests
# Get your API credentials from your billware customer area
api_appid = "your-app-id"
api_secret = "your-api-secret"
payload = json.dumps({
"start_date": "2025-01-01 00:00:00",
"end_date": "2025-08-01 00:00:00",
"date_type": "date_updated",
"page": 1,
})
# The HMAC is calculated over the exact request body that is sent
signature = base64.b64encode(
hmac.new(api_secret.encode(), payload.encode(), hashlib.sha256).digest()
).decode()
response = requests.post(
"https://www.billware.de/api/v1",
data=payload,
headers={
"X-Bw-Hmac": f"{api_appid}:{signature}",
"X-Bw-Method": "order.list",
"Content-Type": "application/json",
},
)
print(response.json())
using System.Net.Http;
using System.Security.Cryptography;
using System.Text;
using System.Text.Json;
// Get your API credentials from your billware customer area
const string apiAppId = "your-app-id";
const string apiSecret = "your-api-secret";
var payload = JsonSerializer.Serialize(new
{
start_date = "2025-01-01 00:00:00",
end_date = "2025-08-01 00:00:00",
date_type = "date_updated",
page = 1
});
// The HMAC is calculated over the exact request body that is sent
using var hmac = new HMACSHA256(Encoding.UTF8.GetBytes(apiSecret));
var signature = Convert.ToBase64String(hmac.ComputeHash(Encoding.UTF8.GetBytes(payload)));
using var client = new HttpClient();
var request = new HttpRequestMessage(HttpMethod.Post, "https://www.billware.de/api/v1")
{
Content = new StringContent(payload, Encoding.UTF8, "application/json")
};
request.Headers.Add("X-Bw-Hmac", $"{apiAppId}:{signature}");
request.Headers.Add("X-Bw-Method", "order.list");
var response = await client.SendAsync(request);
Console.WriteLine(await response.Content.ReadAsStringAsync());
Return Values
The orders array contains entries identical to the response structure of order.read.
Pagination
The response includes metadata to support pagination:
page: The current page number that was requested.
limit: The fixed number of orders returned per page (always 10).
total: The total number of orders found that match the filter criteria.
total_pages: The total number of pages available based on the result count and page size.
Use the page parameter in your request to navigate through the result pages. If not specified, page 1 is returned by default.
# Get your API credentials from your billware customer area
API_APPID="your-app-id"
API_SECRET="your-api-secret"
PAYLOAD='{"order_ident":"aswm5o5i2v5hwlbp","user_note":"An example Text"}'
# The HMAC is calculated over the exact request body that is sent
HMAC=$(printf '%s' "$PAYLOAD" | openssl dgst -sha256 -hmac "$API_SECRET" -binary | base64)
curl -X POST "https://www.billware.de/api/v1" \
-H "X-Bw-Hmac: $API_APPID:$HMAC" \
-H "X-Bw-Method: order.update" \
-H "Content-Type: application/json" \
-d "$PAYLOAD"
<?php
// Get your API credentials from your billware customer area
$apiAppId = 'your-app-id';
$apiSecret = 'your-api-secret';
$payload = json_encode([
'order_ident' => 'aswm5o5i2v5hwlbp',
'user_note' => 'An example Text',
]);
// The HMAC is calculated over the exact request body that is sent
$hmac = base64_encode(hash_hmac('sha256', $payload, $apiSecret, true));
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => 'https://www.billware.de/api/v1',
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => $payload,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
'X-Bw-Hmac: '.$apiAppId.':'.$hmac,
'X-Bw-Method: order.update',
'Content-Type: application/json',
],
]);
$response = curl_exec($curl);
curl_close($curl);
print_r(json_decode($response, true));
import crypto from 'node:crypto';
// Get your API credentials from your billware customer area
const apiAppId = 'your-app-id';
const apiSecret = 'your-api-secret';
const payload = JSON.stringify({
"order_ident": "aswm5o5i2v5hwlbp",
"user_note": "An example Text"
});
// The HMAC is calculated over the exact request body that is sent
const hmac = crypto.createHmac('sha256', apiSecret).update(payload).digest('base64');
const response = await fetch('https://www.billware.de/api/v1', {
method: 'POST',
headers: {
'X-Bw-Hmac': `${apiAppId}:${hmac}`,
'X-Bw-Method': 'order.update',
'Content-Type': 'application/json'
},
body: payload
});
console.log(await response.json());
import base64
import hashlib
import hmac
import json
import requests
# Get your API credentials from your billware customer area
api_appid = "your-app-id"
api_secret = "your-api-secret"
payload = json.dumps({
"order_ident": "aswm5o5i2v5hwlbp",
"user_note": "An example Text",
})
# The HMAC is calculated over the exact request body that is sent
signature = base64.b64encode(
hmac.new(api_secret.encode(), payload.encode(), hashlib.sha256).digest()
).decode()
response = requests.post(
"https://www.billware.de/api/v1",
data=payload,
headers={
"X-Bw-Hmac": f"{api_appid}:{signature}",
"X-Bw-Method": "order.update",
"Content-Type": "application/json",
},
)
print(response.json())
using System.Net.Http;
using System.Security.Cryptography;
using System.Text;
using System.Text.Json;
// Get your API credentials from your billware customer area
const string apiAppId = "your-app-id";
const string apiSecret = "your-api-secret";
var payload = JsonSerializer.Serialize(new
{
order_ident = "aswm5o5i2v5hwlbp",
user_note = "An example Text"
});
// The HMAC is calculated over the exact request body that is sent
using var hmac = new HMACSHA256(Encoding.UTF8.GetBytes(apiSecret));
var signature = Convert.ToBase64String(hmac.ComputeHash(Encoding.UTF8.GetBytes(payload)));
using var client = new HttpClient();
var request = new HttpRequestMessage(HttpMethod.Post, "https://www.billware.de/api/v1")
{
Content = new StringContent(payload, Encoding.UTF8, "application/json")
};
request.Headers.Add("X-Bw-Hmac", $"{apiAppId}:{signature}");
request.Headers.Add("X-Bw-Method", "order.update");
var response = await client.SendAsync(request);
Console.WriteLine(await response.Content.ReadAsStringAsync());
Response Data
Fields
Description
Type
response
Indicating if the action was successful
truefalse
data
Array with response data
Array
order_ident
The identifier of the updated order
String
[fields]
All the updated and sanitized fields
method
order.update
String
message
Additional information about the request
String
Example Response
// SUCCESS after updating the VAT number of the customer
{
"response": true,
"data":
{
"order_ident": "154xy0817679B1kJ",
"bill_vat_nr": "GB123456789"
},
"method": "order.update",
"message": "order updated"
}
order.delete
Delete an existing order.
Data
Fields
Description
Accepted Types
order_ident Required
Identifier of the order
String
Code Examples
# Get your API credentials from your billware customer area
API_APPID="your-app-id"
API_SECRET="your-api-secret"
PAYLOAD='{"order_ident":"aswm5o5i2v5hwlbp"}'
# The HMAC is calculated over the exact request body that is sent
HMAC=$(printf '%s' "$PAYLOAD" | openssl dgst -sha256 -hmac "$API_SECRET" -binary | base64)
curl -X POST "https://www.billware.de/api/v1" \
-H "X-Bw-Hmac: $API_APPID:$HMAC" \
-H "X-Bw-Method: order.delete" \
-H "Content-Type: application/json" \
-d "$PAYLOAD"
<?php
// Get your API credentials from your billware customer area
$apiAppId = 'your-app-id';
$apiSecret = 'your-api-secret';
$payload = json_encode([
'order_ident' => 'aswm5o5i2v5hwlbp',
]);
// The HMAC is calculated over the exact request body that is sent
$hmac = base64_encode(hash_hmac('sha256', $payload, $apiSecret, true));
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => 'https://www.billware.de/api/v1',
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => $payload,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
'X-Bw-Hmac: '.$apiAppId.':'.$hmac,
'X-Bw-Method: order.delete',
'Content-Type: application/json',
],
]);
$response = curl_exec($curl);
curl_close($curl);
print_r(json_decode($response, true));
import crypto from 'node:crypto';
// Get your API credentials from your billware customer area
const apiAppId = 'your-app-id';
const apiSecret = 'your-api-secret';
const payload = JSON.stringify({
"order_ident": "aswm5o5i2v5hwlbp"
});
// The HMAC is calculated over the exact request body that is sent
const hmac = crypto.createHmac('sha256', apiSecret).update(payload).digest('base64');
const response = await fetch('https://www.billware.de/api/v1', {
method: 'POST',
headers: {
'X-Bw-Hmac': `${apiAppId}:${hmac}`,
'X-Bw-Method': 'order.delete',
'Content-Type': 'application/json'
},
body: payload
});
console.log(await response.json());
import base64
import hashlib
import hmac
import json
import requests
# Get your API credentials from your billware customer area
api_appid = "your-app-id"
api_secret = "your-api-secret"
payload = json.dumps({
"order_ident": "aswm5o5i2v5hwlbp",
})
# The HMAC is calculated over the exact request body that is sent
signature = base64.b64encode(
hmac.new(api_secret.encode(), payload.encode(), hashlib.sha256).digest()
).decode()
response = requests.post(
"https://www.billware.de/api/v1",
data=payload,
headers={
"X-Bw-Hmac": f"{api_appid}:{signature}",
"X-Bw-Method": "order.delete",
"Content-Type": "application/json",
},
)
print(response.json())
using System.Net.Http;
using System.Security.Cryptography;
using System.Text;
using System.Text.Json;
// Get your API credentials from your billware customer area
const string apiAppId = "your-app-id";
const string apiSecret = "your-api-secret";
var payload = JsonSerializer.Serialize(new
{
order_ident = "aswm5o5i2v5hwlbp"
});
// The HMAC is calculated over the exact request body that is sent
using var hmac = new HMACSHA256(Encoding.UTF8.GetBytes(apiSecret));
var signature = Convert.ToBase64String(hmac.ComputeHash(Encoding.UTF8.GetBytes(payload)));
using var client = new HttpClient();
var request = new HttpRequestMessage(HttpMethod.Post, "https://www.billware.de/api/v1")
{
Content = new StringContent(payload, Encoding.UTF8, "application/json")
};
request.Headers.Add("X-Bw-Hmac", $"{apiAppId}:{signature}");
request.Headers.Add("X-Bw-Method", "order.delete");
var response = await client.SendAsync(request);
Console.WriteLine(await response.Content.ReadAsStringAsync());
# Get your API credentials from your billware customer area
API_APPID="your-app-id"
API_SECRET="your-api-secret"
PAYLOAD='{"order_ident":"aswm5o5i2v5hwlbp"}'
# The HMAC is calculated over the exact request body that is sent
HMAC=$(printf '%s' "$PAYLOAD" | openssl dgst -sha256 -hmac "$API_SECRET" -binary | base64)
curl -X POST "https://www.billware.de/api/v1" \
-H "X-Bw-Hmac: $API_APPID:$HMAC" \
-H "X-Bw-Method: order.exists" \
-H "Content-Type: application/json" \
-d "$PAYLOAD"
<?php
// Get your API credentials from your billware customer area
$apiAppId = 'your-app-id';
$apiSecret = 'your-api-secret';
$payload = json_encode([
'order_ident' => 'aswm5o5i2v5hwlbp',
]);
// The HMAC is calculated over the exact request body that is sent
$hmac = base64_encode(hash_hmac('sha256', $payload, $apiSecret, true));
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => 'https://www.billware.de/api/v1',
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => $payload,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
'X-Bw-Hmac: '.$apiAppId.':'.$hmac,
'X-Bw-Method: order.exists',
'Content-Type: application/json',
],
]);
$response = curl_exec($curl);
curl_close($curl);
print_r(json_decode($response, true));
import crypto from 'node:crypto';
// Get your API credentials from your billware customer area
const apiAppId = 'your-app-id';
const apiSecret = 'your-api-secret';
const payload = JSON.stringify({
"order_ident": "aswm5o5i2v5hwlbp"
});
// The HMAC is calculated over the exact request body that is sent
const hmac = crypto.createHmac('sha256', apiSecret).update(payload).digest('base64');
const response = await fetch('https://www.billware.de/api/v1', {
method: 'POST',
headers: {
'X-Bw-Hmac': `${apiAppId}:${hmac}`,
'X-Bw-Method': 'order.exists',
'Content-Type': 'application/json'
},
body: payload
});
console.log(await response.json());
import base64
import hashlib
import hmac
import json
import requests
# Get your API credentials from your billware customer area
api_appid = "your-app-id"
api_secret = "your-api-secret"
payload = json.dumps({
"order_ident": "aswm5o5i2v5hwlbp",
})
# The HMAC is calculated over the exact request body that is sent
signature = base64.b64encode(
hmac.new(api_secret.encode(), payload.encode(), hashlib.sha256).digest()
).decode()
response = requests.post(
"https://www.billware.de/api/v1",
data=payload,
headers={
"X-Bw-Hmac": f"{api_appid}:{signature}",
"X-Bw-Method": "order.exists",
"Content-Type": "application/json",
},
)
print(response.json())
using System.Net.Http;
using System.Security.Cryptography;
using System.Text;
using System.Text.Json;
// Get your API credentials from your billware customer area
const string apiAppId = "your-app-id";
const string apiSecret = "your-api-secret";
var payload = JsonSerializer.Serialize(new
{
order_ident = "aswm5o5i2v5hwlbp"
});
// The HMAC is calculated over the exact request body that is sent
using var hmac = new HMACSHA256(Encoding.UTF8.GetBytes(apiSecret));
var signature = Convert.ToBase64String(hmac.ComputeHash(Encoding.UTF8.GetBytes(payload)));
using var client = new HttpClient();
var request = new HttpRequestMessage(HttpMethod.Post, "https://www.billware.de/api/v1")
{
Content = new StringContent(payload, Encoding.UTF8, "application/json")
};
request.Headers.Add("X-Bw-Hmac", $"{apiAppId}:{signature}");
request.Headers.Add("X-Bw-Method", "order.exists");
var response = await client.SendAsync(request);
Console.WriteLine(await response.Content.ReadAsStringAsync());
Example Responses
// SUCCESS
{
"response":true,
"data": {
"order_ident" : "30Wp80787u99z2qv"
},
"method":"order.exists",
"message":"order does exist"
}
// ERROR
{
"response":false,
"data": null,
"method":"order.exists",
"message":"order does not exist"
}
order.createPayment
Creates a payment entry for an existing order. The order must already exist.
Data
Fields
Description
Accepted Types
order_ident Required
Identifier of the order the payment should be added to
String
amount
Amount of the payment (positive for payments, negative for refunds). If omitted, the open amount of the order will be used.
Float
fee
Transaction or processing fee related to the payment (optional, default: 0.0)
Float
payment_name / name
Name of the payment method (billware standard: payment_cash, payment_directdebit, payment_bankwire, payment_invoice, payment_paypal)
String
date_paid
Date when the payment was made (required if not already set on the order)
String (YYYY-MM-DD HH:MM:SS)
external_ident
External identifier for the payment (e.g. PayPal transaction ID)
String
set_paid
Set to 1 if the order should be marked as paid after this payment
Integer (0 or 1)
Code Examples
# Get your API credentials from your billware customer area
API_APPID="your-app-id"
API_SECRET="your-api-secret"
PAYLOAD='{"order_ident":"aswm5o5i2v5hwlbp","amount":144.61,"fee":0,"payment_name":"payment_paypal","date_paid":"2025-07-16 12:30:00","external_ident":"TRANS123456","set_paid":1}'
# The HMAC is calculated over the exact request body that is sent
HMAC=$(printf '%s' "$PAYLOAD" | openssl dgst -sha256 -hmac "$API_SECRET" -binary | base64)
curl -X POST "https://www.billware.de/api/v1" \
-H "X-Bw-Hmac: $API_APPID:$HMAC" \
-H "X-Bw-Method: order.createPayment" \
-H "Content-Type: application/json" \
-d "$PAYLOAD"
<?php
// Get your API credentials from your billware customer area
$apiAppId = 'your-app-id';
$apiSecret = 'your-api-secret';
$payload = json_encode([
'order_ident' => 'aswm5o5i2v5hwlbp',
'amount' => 144.61,
'fee' => 0,
'payment_name' => 'payment_paypal',
'date_paid' => '2025-07-16 12:30:00',
'external_ident' => 'TRANS123456',
'set_paid' => 1,
]);
// The HMAC is calculated over the exact request body that is sent
$hmac = base64_encode(hash_hmac('sha256', $payload, $apiSecret, true));
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => 'https://www.billware.de/api/v1',
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => $payload,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
'X-Bw-Hmac: '.$apiAppId.':'.$hmac,
'X-Bw-Method: order.createPayment',
'Content-Type: application/json',
],
]);
$response = curl_exec($curl);
curl_close($curl);
print_r(json_decode($response, true));
import crypto from 'node:crypto';
// Get your API credentials from your billware customer area
const apiAppId = 'your-app-id';
const apiSecret = 'your-api-secret';
const payload = JSON.stringify({
"order_ident": "aswm5o5i2v5hwlbp",
"amount": 144.61,
"fee": 0,
"payment_name": "payment_paypal",
"date_paid": "2025-07-16 12:30:00",
"external_ident": "TRANS123456",
"set_paid": 1
});
// The HMAC is calculated over the exact request body that is sent
const hmac = crypto.createHmac('sha256', apiSecret).update(payload).digest('base64');
const response = await fetch('https://www.billware.de/api/v1', {
method: 'POST',
headers: {
'X-Bw-Hmac': `${apiAppId}:${hmac}`,
'X-Bw-Method': 'order.createPayment',
'Content-Type': 'application/json'
},
body: payload
});
console.log(await response.json());
import base64
import hashlib
import hmac
import json
import requests
# Get your API credentials from your billware customer area
api_appid = "your-app-id"
api_secret = "your-api-secret"
payload = json.dumps({
"order_ident": "aswm5o5i2v5hwlbp",
"amount": 144.61,
"fee": 0,
"payment_name": "payment_paypal",
"date_paid": "2025-07-16 12:30:00",
"external_ident": "TRANS123456",
"set_paid": 1,
})
# The HMAC is calculated over the exact request body that is sent
signature = base64.b64encode(
hmac.new(api_secret.encode(), payload.encode(), hashlib.sha256).digest()
).decode()
response = requests.post(
"https://www.billware.de/api/v1",
data=payload,
headers={
"X-Bw-Hmac": f"{api_appid}:{signature}",
"X-Bw-Method": "order.createPayment",
"Content-Type": "application/json",
},
)
print(response.json())
using System.Net.Http;
using System.Security.Cryptography;
using System.Text;
using System.Text.Json;
// Get your API credentials from your billware customer area
const string apiAppId = "your-app-id";
const string apiSecret = "your-api-secret";
var payload = JsonSerializer.Serialize(new
{
order_ident = "aswm5o5i2v5hwlbp",
amount = 144.61,
fee = 0,
payment_name = "payment_paypal",
date_paid = "2025-07-16 12:30:00",
external_ident = "TRANS123456",
set_paid = 1
});
// The HMAC is calculated over the exact request body that is sent
using var hmac = new HMACSHA256(Encoding.UTF8.GetBytes(apiSecret));
var signature = Convert.ToBase64String(hmac.ComputeHash(Encoding.UTF8.GetBytes(payload)));
using var client = new HttpClient();
var request = new HttpRequestMessage(HttpMethod.Post, "https://www.billware.de/api/v1")
{
Content = new StringContent(payload, Encoding.UTF8, "application/json")
};
request.Headers.Add("X-Bw-Hmac", $"{apiAppId}:{signature}");
request.Headers.Add("X-Bw-Method", "order.createPayment");
var response = await client.SendAsync(request);
Console.WriteLine(await response.Content.ReadAsStringAsync());
Creates or assigns an invoice number to an existing order. If a number is provided, it will be set manually. Otherwise, an invoice number will be generated automatically based on your configuration.
Data
Fields
Description
Accepted Types
order_ident Required
The internal identifier of the order
String
invoice_nr
(Optional) Custom invoice number to assign. If omitted, a number will be auto-generated
String
Code Examples
# Get your API credentials from your billware customer area
API_APPID="your-app-id"
API_SECRET="your-api-secret"
PAYLOAD='{"order_ident":"aswm5o5i2v5hwlbp"}'
# The HMAC is calculated over the exact request body that is sent
HMAC=$(printf '%s' "$PAYLOAD" | openssl dgst -sha256 -hmac "$API_SECRET" -binary | base64)
curl -X POST "https://www.billware.de/api/v1" \
-H "X-Bw-Hmac: $API_APPID:$HMAC" \
-H "X-Bw-Method: order.createInvoiceNr" \
-H "Content-Type: application/json" \
-d "$PAYLOAD"
<?php
// Get your API credentials from your billware customer area
$apiAppId = 'your-app-id';
$apiSecret = 'your-api-secret';
$payload = json_encode([
'order_ident' => 'aswm5o5i2v5hwlbp',
]);
// The HMAC is calculated over the exact request body that is sent
$hmac = base64_encode(hash_hmac('sha256', $payload, $apiSecret, true));
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => 'https://www.billware.de/api/v1',
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => $payload,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
'X-Bw-Hmac: '.$apiAppId.':'.$hmac,
'X-Bw-Method: order.createInvoiceNr',
'Content-Type: application/json',
],
]);
$response = curl_exec($curl);
curl_close($curl);
print_r(json_decode($response, true));
import crypto from 'node:crypto';
// Get your API credentials from your billware customer area
const apiAppId = 'your-app-id';
const apiSecret = 'your-api-secret';
const payload = JSON.stringify({
"order_ident": "aswm5o5i2v5hwlbp"
});
// The HMAC is calculated over the exact request body that is sent
const hmac = crypto.createHmac('sha256', apiSecret).update(payload).digest('base64');
const response = await fetch('https://www.billware.de/api/v1', {
method: 'POST',
headers: {
'X-Bw-Hmac': `${apiAppId}:${hmac}`,
'X-Bw-Method': 'order.createInvoiceNr',
'Content-Type': 'application/json'
},
body: payload
});
console.log(await response.json());
import base64
import hashlib
import hmac
import json
import requests
# Get your API credentials from your billware customer area
api_appid = "your-app-id"
api_secret = "your-api-secret"
payload = json.dumps({
"order_ident": "aswm5o5i2v5hwlbp",
})
# The HMAC is calculated over the exact request body that is sent
signature = base64.b64encode(
hmac.new(api_secret.encode(), payload.encode(), hashlib.sha256).digest()
).decode()
response = requests.post(
"https://www.billware.de/api/v1",
data=payload,
headers={
"X-Bw-Hmac": f"{api_appid}:{signature}",
"X-Bw-Method": "order.createInvoiceNr",
"Content-Type": "application/json",
},
)
print(response.json())
using System.Net.Http;
using System.Security.Cryptography;
using System.Text;
using System.Text.Json;
// Get your API credentials from your billware customer area
const string apiAppId = "your-app-id";
const string apiSecret = "your-api-secret";
var payload = JsonSerializer.Serialize(new
{
order_ident = "aswm5o5i2v5hwlbp"
});
// The HMAC is calculated over the exact request body that is sent
using var hmac = new HMACSHA256(Encoding.UTF8.GetBytes(apiSecret));
var signature = Convert.ToBase64String(hmac.ComputeHash(Encoding.UTF8.GetBytes(payload)));
using var client = new HttpClient();
var request = new HttpRequestMessage(HttpMethod.Post, "https://www.billware.de/api/v1")
{
Content = new StringContent(payload, Encoding.UTF8, "application/json")
};
request.Headers.Add("X-Bw-Hmac", $"{apiAppId}:{signature}");
request.Headers.Add("X-Bw-Method", "order.createInvoiceNr");
var response = await client.SendAsync(request);
Console.WriteLine(await response.Content.ReadAsStringAsync());
Creates a document of an order as the order page does: the PDF with the layout and the free texts of your account, the number of the document and, for an invoice with electronic invoicing switched on, the XRechnung XML. The document is created once: a second call with the same type returns the existing file and prints nothing again. Only a partial delivery note is a new document with every call, as every call is a new partial delivery.
Data
Fields
Description
Accepted Types
order_ident Required
Identifier of the order
String
type Required
The document to create. The order page offers the same documents; the invoice draws its invoice number and date when the order has none yet, the delivery note its delivery note number
The layout to print with, one of your layouts for this document type from document_layout.list. Without it the default layout in the language of the order is used. A partial delivery note uses the delivery note layouts
String
free_text_1
The first free text printed on the document, with the placeholders the text editor of the order offers. Replaces the text stored for this document type
String
free_text_2
The second free text, as above
String
date_credit_note
Credit note only: the date of the credit note. Without it the current date
Date as String Y-m-d H:i:s
articles
Credit note and partial delivery note only: the positions of the document. A credit note without positions takes back the whole order: every position with the negative quantity, shipping, discount and payment with the opposite sign. A partial delivery note without positions lists every position of the order
Array
article_title Required
The title of the position. On a partial delivery note the position of the order with this title supplies article number and unit
String
article_quantity Required
The quantity. On a credit note the quantity as it stands on the credit note, so negative for a piece taken back
Number
article_price
Credit note: required, the net price per unit
Number
article_tax_rate
Credit note: required, the tax rate of the position in percent
Number
article_unit
The unit of the position, as in article.create
String
article_nr
The article number printed on the document
String
order_article_ident
Partial delivery note: the position of the order instead of its title, from order_articles of order.read
String
shipping
Credit note with positions only: shipping taken back, with calculation_type, price_type and value as in order.create, the amount with the sign it has on the credit note, plus service, carrier and tracking. Without it no shipping on the credit note
Array
discount
Credit note with positions only: discount taken back, with calculation_type, price_type, value and title as in order.create. Without it no discount on the credit note
Array
payment
Credit note with positions only: payment fee taken back, with calculation_type, price_type, value and name as in order.create. Without it no payment fee on the credit note
Array
address_ident
Partial delivery note only: the address printed on it. Without it the delivery address of the order when it has one, else the billing address
bill_addressdelivery_address or the address_ident of a delivery address of the customer
date_delivery_note
Partial delivery note only: the date printed on it. Without it the current date
Date as String Y-m-d H:i:s
Rules
The call is refused with response: false and a message when the order page would not offer the document either:
A quotation gets only the quotation document; every other type needs an order. A recurring template gets no documents.
A canceled order gets only reversal_invoice and credit_note.
reversal_invoice, credit_note and the reminders need an invoice first. The reversal invoice carries the invoice number with the suffix -S and sets the order to canceled, the credit note the suffix -K. An order has one credit note.
A reminder is refused for a paid order, and reminder_2 needs reminder_1, reminder_3 needs reminder_2. The reminder fee comes from your settings.
A second request for the same order while the first one is still printing is refused; send it again after a moment.
Code Examples
order.createDocument (invoice)
# Get your API credentials from your billware customer area
API_APPID="your-app-id"
API_SECRET="your-api-secret"
PAYLOAD='{"order_ident":"aswm5o5i2v5hwlbp","type":"invoice","free_text_1":"Vielen Dank für Ihren Einkauf."}'
# The HMAC is calculated over the exact request body that is sent
HMAC=$(printf '%s' "$PAYLOAD" | openssl dgst -sha256 -hmac "$API_SECRET" -binary | base64)
curl -X POST "https://www.billware.de/api/v1" \
-H "X-Bw-Hmac: $API_APPID:$HMAC" \
-H "X-Bw-Method: order.createDocument" \
-H "Content-Type: application/json" \
-d "$PAYLOAD"
<?php
// Get your API credentials from your billware customer area
$apiAppId = 'your-app-id';
$apiSecret = 'your-api-secret';
$payload = json_encode([
'order_ident' => 'aswm5o5i2v5hwlbp',
'type' => 'invoice',
'free_text_1' => 'Vielen Dank für Ihren Einkauf.',
]);
// The HMAC is calculated over the exact request body that is sent
$hmac = base64_encode(hash_hmac('sha256', $payload, $apiSecret, true));
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => 'https://www.billware.de/api/v1',
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => $payload,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
'X-Bw-Hmac: '.$apiAppId.':'.$hmac,
'X-Bw-Method: order.createDocument',
'Content-Type: application/json',
],
]);
$response = curl_exec($curl);
curl_close($curl);
print_r(json_decode($response, true));
import crypto from 'node:crypto';
// Get your API credentials from your billware customer area
const apiAppId = 'your-app-id';
const apiSecret = 'your-api-secret';
const payload = JSON.stringify({
"order_ident": "aswm5o5i2v5hwlbp",
"type": "invoice",
"free_text_1": "Vielen Dank für Ihren Einkauf."
});
// The HMAC is calculated over the exact request body that is sent
const hmac = crypto.createHmac('sha256', apiSecret).update(payload).digest('base64');
const response = await fetch('https://www.billware.de/api/v1', {
method: 'POST',
headers: {
'X-Bw-Hmac': `${apiAppId}:${hmac}`,
'X-Bw-Method': 'order.createDocument',
'Content-Type': 'application/json'
},
body: payload
});
console.log(await response.json());
import base64
import hashlib
import hmac
import json
import requests
# Get your API credentials from your billware customer area
api_appid = "your-app-id"
api_secret = "your-api-secret"
payload = json.dumps({
"order_ident": "aswm5o5i2v5hwlbp",
"type": "invoice",
"free_text_1": "Vielen Dank für Ihren Einkauf.",
})
# The HMAC is calculated over the exact request body that is sent
signature = base64.b64encode(
hmac.new(api_secret.encode(), payload.encode(), hashlib.sha256).digest()
).decode()
response = requests.post(
"https://www.billware.de/api/v1",
data=payload,
headers={
"X-Bw-Hmac": f"{api_appid}:{signature}",
"X-Bw-Method": "order.createDocument",
"Content-Type": "application/json",
},
)
print(response.json())
using System.Net.Http;
using System.Security.Cryptography;
using System.Text;
using System.Text.Json;
// Get your API credentials from your billware customer area
const string apiAppId = "your-app-id";
const string apiSecret = "your-api-secret";
var payload = JsonSerializer.Serialize(new
{
order_ident = "aswm5o5i2v5hwlbp",
type = "invoice",
free_text_1 = "Vielen Dank für Ihren Einkauf."
});
// The HMAC is calculated over the exact request body that is sent
using var hmac = new HMACSHA256(Encoding.UTF8.GetBytes(apiSecret));
var signature = Convert.ToBase64String(hmac.ComputeHash(Encoding.UTF8.GetBytes(payload)));
using var client = new HttpClient();
var request = new HttpRequestMessage(HttpMethod.Post, "https://www.billware.de/api/v1")
{
Content = new StringContent(payload, Encoding.UTF8, "application/json")
};
request.Headers.Add("X-Bw-Hmac", $"{apiAppId}:{signature}");
request.Headers.Add("X-Bw-Method", "order.createDocument");
var response = await client.SendAsync(request);
Console.WriteLine(await response.Content.ReadAsStringAsync());
order.createDocument (credit note for one position)
# Get your API credentials from your billware customer area
API_APPID="your-app-id"
API_SECRET="your-api-secret"
PAYLOAD='{"order_ident":"aswm5o5i2v5hwlbp","type":"credit_note","date_credit_note":"2025-07-20 10:00:00","articles":[{"article_title":"Kaninchenstall XL","article_quantity":-1,"article_price":129.99,"article_tax_rate":19,"article_unit":"unit_ppu","article_nr":"KAN-XL-2025"}]}'
# The HMAC is calculated over the exact request body that is sent
HMAC=$(printf '%s' "$PAYLOAD" | openssl dgst -sha256 -hmac "$API_SECRET" -binary | base64)
curl -X POST "https://www.billware.de/api/v1" \
-H "X-Bw-Hmac: $API_APPID:$HMAC" \
-H "X-Bw-Method: order.createDocument" \
-H "Content-Type: application/json" \
-d "$PAYLOAD"
<?php
// Get your API credentials from your billware customer area
$apiAppId = 'your-app-id';
$apiSecret = 'your-api-secret';
$payload = json_encode([
'order_ident' => 'aswm5o5i2v5hwlbp',
'type' => 'credit_note',
'date_credit_note' => '2025-07-20 10:00:00',
'articles' => [
[
'article_title' => 'Kaninchenstall XL',
'article_quantity' => -1,
'article_price' => 129.99,
'article_tax_rate' => 19,
'article_unit' => 'unit_ppu',
'article_nr' => 'KAN-XL-2025',
],
],
]);
// The HMAC is calculated over the exact request body that is sent
$hmac = base64_encode(hash_hmac('sha256', $payload, $apiSecret, true));
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => 'https://www.billware.de/api/v1',
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => $payload,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
'X-Bw-Hmac: '.$apiAppId.':'.$hmac,
'X-Bw-Method: order.createDocument',
'Content-Type: application/json',
],
]);
$response = curl_exec($curl);
curl_close($curl);
print_r(json_decode($response, true));
import crypto from 'node:crypto';
// Get your API credentials from your billware customer area
const apiAppId = 'your-app-id';
const apiSecret = 'your-api-secret';
const payload = JSON.stringify({
"order_ident": "aswm5o5i2v5hwlbp",
"type": "credit_note",
"date_credit_note": "2025-07-20 10:00:00",
"articles": [
{
"article_title": "Kaninchenstall XL",
"article_quantity": -1,
"article_price": 129.99,
"article_tax_rate": 19,
"article_unit": "unit_ppu",
"article_nr": "KAN-XL-2025"
}
]
});
// The HMAC is calculated over the exact request body that is sent
const hmac = crypto.createHmac('sha256', apiSecret).update(payload).digest('base64');
const response = await fetch('https://www.billware.de/api/v1', {
method: 'POST',
headers: {
'X-Bw-Hmac': `${apiAppId}:${hmac}`,
'X-Bw-Method': 'order.createDocument',
'Content-Type': 'application/json'
},
body: payload
});
console.log(await response.json());
import base64
import hashlib
import hmac
import json
import requests
# Get your API credentials from your billware customer area
api_appid = "your-app-id"
api_secret = "your-api-secret"
payload = json.dumps({
"order_ident": "aswm5o5i2v5hwlbp",
"type": "credit_note",
"date_credit_note": "2025-07-20 10:00:00",
"articles": [
{
"article_title": "Kaninchenstall XL",
"article_quantity": -1,
"article_price": 129.99,
"article_tax_rate": 19,
"article_unit": "unit_ppu",
"article_nr": "KAN-XL-2025",
},
],
})
# The HMAC is calculated over the exact request body that is sent
signature = base64.b64encode(
hmac.new(api_secret.encode(), payload.encode(), hashlib.sha256).digest()
).decode()
response = requests.post(
"https://www.billware.de/api/v1",
data=payload,
headers={
"X-Bw-Hmac": f"{api_appid}:{signature}",
"X-Bw-Method": "order.createDocument",
"Content-Type": "application/json",
},
)
print(response.json())
using System.Net.Http;
using System.Security.Cryptography;
using System.Text;
using System.Text.Json;
// Get your API credentials from your billware customer area
const string apiAppId = "your-app-id";
const string apiSecret = "your-api-secret";
var payload = JsonSerializer.Serialize(new
{
order_ident = "aswm5o5i2v5hwlbp",
type = "credit_note",
date_credit_note = "2025-07-20 10:00:00",
articles = new[]
{
new
{
article_title = "Kaninchenstall XL",
article_quantity = -1,
article_price = 129.99,
article_tax_rate = 19,
article_unit = "unit_ppu",
article_nr = "KAN-XL-2025"
}
}
});
// The HMAC is calculated over the exact request body that is sent
using var hmac = new HMACSHA256(Encoding.UTF8.GetBytes(apiSecret));
var signature = Convert.ToBase64String(hmac.ComputeHash(Encoding.UTF8.GetBytes(payload)));
using var client = new HttpClient();
var request = new HttpRequestMessage(HttpMethod.Post, "https://www.billware.de/api/v1")
{
Content = new StringContent(payload, Encoding.UTF8, "application/json")
};
request.Headers.Add("X-Bw-Hmac", $"{apiAppId}:{signature}");
request.Headers.Add("X-Bw-Method", "order.createDocument");
var response = await client.SendAsync(request);
Console.WriteLine(await response.Content.ReadAsStringAsync());
order.createDocument (partial delivery note)
# Get your API credentials from your billware customer area
API_APPID="your-app-id"
API_SECRET="your-api-secret"
PAYLOAD='{"order_ident":"aswm5o5i2v5hwlbp","type":"partial_delivery_note","date_delivery_note":"2025-07-18 09:00:00","articles":[{"article_title":"Kaninchenstall XL","article_quantity":1}]}'
# The HMAC is calculated over the exact request body that is sent
HMAC=$(printf '%s' "$PAYLOAD" | openssl dgst -sha256 -hmac "$API_SECRET" -binary | base64)
curl -X POST "https://www.billware.de/api/v1" \
-H "X-Bw-Hmac: $API_APPID:$HMAC" \
-H "X-Bw-Method: order.createDocument" \
-H "Content-Type: application/json" \
-d "$PAYLOAD"
<?php
// Get your API credentials from your billware customer area
$apiAppId = 'your-app-id';
$apiSecret = 'your-api-secret';
$payload = json_encode([
'order_ident' => 'aswm5o5i2v5hwlbp',
'type' => 'partial_delivery_note',
'date_delivery_note' => '2025-07-18 09:00:00',
'articles' => [
[
'article_title' => 'Kaninchenstall XL',
'article_quantity' => 1,
],
],
]);
// The HMAC is calculated over the exact request body that is sent
$hmac = base64_encode(hash_hmac('sha256', $payload, $apiSecret, true));
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => 'https://www.billware.de/api/v1',
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => $payload,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
'X-Bw-Hmac: '.$apiAppId.':'.$hmac,
'X-Bw-Method: order.createDocument',
'Content-Type: application/json',
],
]);
$response = curl_exec($curl);
curl_close($curl);
print_r(json_decode($response, true));
import crypto from 'node:crypto';
// Get your API credentials from your billware customer area
const apiAppId = 'your-app-id';
const apiSecret = 'your-api-secret';
const payload = JSON.stringify({
"order_ident": "aswm5o5i2v5hwlbp",
"type": "partial_delivery_note",
"date_delivery_note": "2025-07-18 09:00:00",
"articles": [
{
"article_title": "Kaninchenstall XL",
"article_quantity": 1
}
]
});
// The HMAC is calculated over the exact request body that is sent
const hmac = crypto.createHmac('sha256', apiSecret).update(payload).digest('base64');
const response = await fetch('https://www.billware.de/api/v1', {
method: 'POST',
headers: {
'X-Bw-Hmac': `${apiAppId}:${hmac}`,
'X-Bw-Method': 'order.createDocument',
'Content-Type': 'application/json'
},
body: payload
});
console.log(await response.json());
import base64
import hashlib
import hmac
import json
import requests
# Get your API credentials from your billware customer area
api_appid = "your-app-id"
api_secret = "your-api-secret"
payload = json.dumps({
"order_ident": "aswm5o5i2v5hwlbp",
"type": "partial_delivery_note",
"date_delivery_note": "2025-07-18 09:00:00",
"articles": [
{
"article_title": "Kaninchenstall XL",
"article_quantity": 1,
},
],
})
# The HMAC is calculated over the exact request body that is sent
signature = base64.b64encode(
hmac.new(api_secret.encode(), payload.encode(), hashlib.sha256).digest()
).decode()
response = requests.post(
"https://www.billware.de/api/v1",
data=payload,
headers={
"X-Bw-Hmac": f"{api_appid}:{signature}",
"X-Bw-Method": "order.createDocument",
"Content-Type": "application/json",
},
)
print(response.json())
using System.Net.Http;
using System.Security.Cryptography;
using System.Text;
using System.Text.Json;
// Get your API credentials from your billware customer area
const string apiAppId = "your-app-id";
const string apiSecret = "your-api-secret";
var payload = JsonSerializer.Serialize(new
{
order_ident = "aswm5o5i2v5hwlbp",
type = "partial_delivery_note",
date_delivery_note = "2025-07-18 09:00:00",
articles = new[]
{
new
{
article_title = "Kaninchenstall XL",
article_quantity = 1
}
}
});
// The HMAC is calculated over the exact request body that is sent
using var hmac = new HMACSHA256(Encoding.UTF8.GetBytes(apiSecret));
var signature = Convert.ToBase64String(hmac.ComputeHash(Encoding.UTF8.GetBytes(payload)));
using var client = new HttpClient();
var request = new HttpRequestMessage(HttpMethod.Post, "https://www.billware.de/api/v1")
{
Content = new StringContent(payload, Encoding.UTF8, "application/json")
};
request.Headers.Add("X-Bw-Hmac", $"{apiAppId}:{signature}");
request.Headers.Add("X-Bw-Method", "order.createDocument");
var response = await client.SendAsync(request);
Console.WriteLine(await response.Content.ReadAsStringAsync());
Response Data
Fields
Description
Type
response
Indicates if the document exists now
Boolean
data
The document
Object
order_ident
Identifier of the order
String
type
The document type of the request
String
document_nr
The number printed on the document: the invoice number, the invoice number with -S or -K, the delivery note number, the delivery note number with a running number for a partial delivery note, the quotation number, else the order number
String
created
Whether this call created the document
1 Created now0 Existed already
file
The PDF, the same object as an entry of files in order.read: href is a link that downloads the file without a login, file_user_name the name of the file, date_sent when it was sent
Object
e_invoice
Whether and how the document is an e-invoice, from the e-invoice settings of your account: the format, whether the PDF itself carries the XML (ZUGFeRD) and the separate XRechnung XML
Object
format
zugferd: the PDF carries the XML; xrechnung: a separate XML file; both; null when the account creates no e-invoice for this document type
zugferdxrechnungbothNULL
in_pdf
Whether the PDF carries the embedded XML, checked in the file itself
1 Yes0 No
xml
The separate XRechnung XML as an object like file, else null
ObjectNULL
message
Human-readable result message
String
Example Request
{
"order_ident": "154xy0817679B1kJ",
"type": "invoice",
"free_text_1": "Vielen Dank für Ihren Einkauf."
}
Sends a document of an order by email to the billing email address of the order, with the mail template of your account for this document type, the PDF and, when your account attaches it, the XRechnung XML. The mail goes out as mails from the order page do: from billware with your address as reply address, or through your own SMTP server when you have set one up. When the document does not exist yet, it is created first; the fields of order.createDocument apply. A document is sent once: a second call is refused and tells when it was sent.
Data
Fields
Description
Accepted Types
order_ident Required
Identifier of the order
String
type Required
The document to send, see order.createDocument. Of several partial delivery notes the newest one is sent
String
When the document has to be created first, the optional fields of order.createDocument apply: document_layout_ident, free_text_1, free_text_2, the positions and the others.
Rules
The rules of order.createDocument apply when the document is created on the way.
The order needs a valid billing email address (bill_email). Without one the document is created but not sent.
A document that was sent already, from the API or from the order page, is not sent again.
Code Examples
order.sendDocument (invoice)
# Get your API credentials from your billware customer area
API_APPID="your-app-id"
API_SECRET="your-api-secret"
PAYLOAD='{"order_ident":"aswm5o5i2v5hwlbp","type":"invoice"}'
# The HMAC is calculated over the exact request body that is sent
HMAC=$(printf '%s' "$PAYLOAD" | openssl dgst -sha256 -hmac "$API_SECRET" -binary | base64)
curl -X POST "https://www.billware.de/api/v1" \
-H "X-Bw-Hmac: $API_APPID:$HMAC" \
-H "X-Bw-Method: order.sendDocument" \
-H "Content-Type: application/json" \
-d "$PAYLOAD"
<?php
// Get your API credentials from your billware customer area
$apiAppId = 'your-app-id';
$apiSecret = 'your-api-secret';
$payload = json_encode([
'order_ident' => 'aswm5o5i2v5hwlbp',
'type' => 'invoice',
]);
// The HMAC is calculated over the exact request body that is sent
$hmac = base64_encode(hash_hmac('sha256', $payload, $apiSecret, true));
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => 'https://www.billware.de/api/v1',
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => $payload,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
'X-Bw-Hmac: '.$apiAppId.':'.$hmac,
'X-Bw-Method: order.sendDocument',
'Content-Type: application/json',
],
]);
$response = curl_exec($curl);
curl_close($curl);
print_r(json_decode($response, true));
import crypto from 'node:crypto';
// Get your API credentials from your billware customer area
const apiAppId = 'your-app-id';
const apiSecret = 'your-api-secret';
const payload = JSON.stringify({
"order_ident": "aswm5o5i2v5hwlbp",
"type": "invoice"
});
// The HMAC is calculated over the exact request body that is sent
const hmac = crypto.createHmac('sha256', apiSecret).update(payload).digest('base64');
const response = await fetch('https://www.billware.de/api/v1', {
method: 'POST',
headers: {
'X-Bw-Hmac': `${apiAppId}:${hmac}`,
'X-Bw-Method': 'order.sendDocument',
'Content-Type': 'application/json'
},
body: payload
});
console.log(await response.json());
import base64
import hashlib
import hmac
import json
import requests
# Get your API credentials from your billware customer area
api_appid = "your-app-id"
api_secret = "your-api-secret"
payload = json.dumps({
"order_ident": "aswm5o5i2v5hwlbp",
"type": "invoice",
})
# The HMAC is calculated over the exact request body that is sent
signature = base64.b64encode(
hmac.new(api_secret.encode(), payload.encode(), hashlib.sha256).digest()
).decode()
response = requests.post(
"https://www.billware.de/api/v1",
data=payload,
headers={
"X-Bw-Hmac": f"{api_appid}:{signature}",
"X-Bw-Method": "order.sendDocument",
"Content-Type": "application/json",
},
)
print(response.json())
using System.Net.Http;
using System.Security.Cryptography;
using System.Text;
using System.Text.Json;
// Get your API credentials from your billware customer area
const string apiAppId = "your-app-id";
const string apiSecret = "your-api-secret";
var payload = JsonSerializer.Serialize(new
{
order_ident = "aswm5o5i2v5hwlbp",
type = "invoice"
});
// The HMAC is calculated over the exact request body that is sent
using var hmac = new HMACSHA256(Encoding.UTF8.GetBytes(apiSecret));
var signature = Convert.ToBase64String(hmac.ComputeHash(Encoding.UTF8.GetBytes(payload)));
using var client = new HttpClient();
var request = new HttpRequestMessage(HttpMethod.Post, "https://www.billware.de/api/v1")
{
Content = new StringContent(payload, Encoding.UTF8, "application/json")
};
request.Headers.Add("X-Bw-Hmac", $"{apiAppId}:{signature}");
request.Headers.Add("X-Bw-Method", "order.sendDocument");
var response = await client.SendAsync(request);
Console.WriteLine(await response.Content.ReadAsStringAsync());
order.sendDocument (reversal invoice)
# Get your API credentials from your billware customer area
API_APPID="your-app-id"
API_SECRET="your-api-secret"
PAYLOAD='{"order_ident":"aswm5o5i2v5hwlbp","type":"reversal_invoice"}'
# The HMAC is calculated over the exact request body that is sent
HMAC=$(printf '%s' "$PAYLOAD" | openssl dgst -sha256 -hmac "$API_SECRET" -binary | base64)
curl -X POST "https://www.billware.de/api/v1" \
-H "X-Bw-Hmac: $API_APPID:$HMAC" \
-H "X-Bw-Method: order.sendDocument" \
-H "Content-Type: application/json" \
-d "$PAYLOAD"
<?php
// Get your API credentials from your billware customer area
$apiAppId = 'your-app-id';
$apiSecret = 'your-api-secret';
$payload = json_encode([
'order_ident' => 'aswm5o5i2v5hwlbp',
'type' => 'reversal_invoice',
]);
// The HMAC is calculated over the exact request body that is sent
$hmac = base64_encode(hash_hmac('sha256', $payload, $apiSecret, true));
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => 'https://www.billware.de/api/v1',
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => $payload,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
'X-Bw-Hmac: '.$apiAppId.':'.$hmac,
'X-Bw-Method: order.sendDocument',
'Content-Type: application/json',
],
]);
$response = curl_exec($curl);
curl_close($curl);
print_r(json_decode($response, true));
import crypto from 'node:crypto';
// Get your API credentials from your billware customer area
const apiAppId = 'your-app-id';
const apiSecret = 'your-api-secret';
const payload = JSON.stringify({
"order_ident": "aswm5o5i2v5hwlbp",
"type": "reversal_invoice"
});
// The HMAC is calculated over the exact request body that is sent
const hmac = crypto.createHmac('sha256', apiSecret).update(payload).digest('base64');
const response = await fetch('https://www.billware.de/api/v1', {
method: 'POST',
headers: {
'X-Bw-Hmac': `${apiAppId}:${hmac}`,
'X-Bw-Method': 'order.sendDocument',
'Content-Type': 'application/json'
},
body: payload
});
console.log(await response.json());
import base64
import hashlib
import hmac
import json
import requests
# Get your API credentials from your billware customer area
api_appid = "your-app-id"
api_secret = "your-api-secret"
payload = json.dumps({
"order_ident": "aswm5o5i2v5hwlbp",
"type": "reversal_invoice",
})
# The HMAC is calculated over the exact request body that is sent
signature = base64.b64encode(
hmac.new(api_secret.encode(), payload.encode(), hashlib.sha256).digest()
).decode()
response = requests.post(
"https://www.billware.de/api/v1",
data=payload,
headers={
"X-Bw-Hmac": f"{api_appid}:{signature}",
"X-Bw-Method": "order.sendDocument",
"Content-Type": "application/json",
},
)
print(response.json())
using System.Net.Http;
using System.Security.Cryptography;
using System.Text;
using System.Text.Json;
// Get your API credentials from your billware customer area
const string apiAppId = "your-app-id";
const string apiSecret = "your-api-secret";
var payload = JsonSerializer.Serialize(new
{
order_ident = "aswm5o5i2v5hwlbp",
type = "reversal_invoice"
});
// The HMAC is calculated over the exact request body that is sent
using var hmac = new HMACSHA256(Encoding.UTF8.GetBytes(apiSecret));
var signature = Convert.ToBase64String(hmac.ComputeHash(Encoding.UTF8.GetBytes(payload)));
using var client = new HttpClient();
var request = new HttpRequestMessage(HttpMethod.Post, "https://www.billware.de/api/v1")
{
Content = new StringContent(payload, Encoding.UTF8, "application/json")
};
request.Headers.Add("X-Bw-Hmac", $"{apiAppId}:{signature}");
request.Headers.Add("X-Bw-Method", "order.sendDocument");
var response = await client.SendAsync(request);
Console.WriteLine(await response.Content.ReadAsStringAsync());
order.sendDocument (first reminder)
# Get your API credentials from your billware customer area
API_APPID="your-app-id"
API_SECRET="your-api-secret"
PAYLOAD='{"order_ident":"aswm5o5i2v5hwlbp","type":"reminder_1"}'
# The HMAC is calculated over the exact request body that is sent
HMAC=$(printf '%s' "$PAYLOAD" | openssl dgst -sha256 -hmac "$API_SECRET" -binary | base64)
curl -X POST "https://www.billware.de/api/v1" \
-H "X-Bw-Hmac: $API_APPID:$HMAC" \
-H "X-Bw-Method: order.sendDocument" \
-H "Content-Type: application/json" \
-d "$PAYLOAD"
<?php
// Get your API credentials from your billware customer area
$apiAppId = 'your-app-id';
$apiSecret = 'your-api-secret';
$payload = json_encode([
'order_ident' => 'aswm5o5i2v5hwlbp',
'type' => 'reminder_1',
]);
// The HMAC is calculated over the exact request body that is sent
$hmac = base64_encode(hash_hmac('sha256', $payload, $apiSecret, true));
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => 'https://www.billware.de/api/v1',
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => $payload,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
'X-Bw-Hmac: '.$apiAppId.':'.$hmac,
'X-Bw-Method: order.sendDocument',
'Content-Type: application/json',
],
]);
$response = curl_exec($curl);
curl_close($curl);
print_r(json_decode($response, true));
import crypto from 'node:crypto';
// Get your API credentials from your billware customer area
const apiAppId = 'your-app-id';
const apiSecret = 'your-api-secret';
const payload = JSON.stringify({
"order_ident": "aswm5o5i2v5hwlbp",
"type": "reminder_1"
});
// The HMAC is calculated over the exact request body that is sent
const hmac = crypto.createHmac('sha256', apiSecret).update(payload).digest('base64');
const response = await fetch('https://www.billware.de/api/v1', {
method: 'POST',
headers: {
'X-Bw-Hmac': `${apiAppId}:${hmac}`,
'X-Bw-Method': 'order.sendDocument',
'Content-Type': 'application/json'
},
body: payload
});
console.log(await response.json());
import base64
import hashlib
import hmac
import json
import requests
# Get your API credentials from your billware customer area
api_appid = "your-app-id"
api_secret = "your-api-secret"
payload = json.dumps({
"order_ident": "aswm5o5i2v5hwlbp",
"type": "reminder_1",
})
# The HMAC is calculated over the exact request body that is sent
signature = base64.b64encode(
hmac.new(api_secret.encode(), payload.encode(), hashlib.sha256).digest()
).decode()
response = requests.post(
"https://www.billware.de/api/v1",
data=payload,
headers={
"X-Bw-Hmac": f"{api_appid}:{signature}",
"X-Bw-Method": "order.sendDocument",
"Content-Type": "application/json",
},
)
print(response.json())
using System.Net.Http;
using System.Security.Cryptography;
using System.Text;
using System.Text.Json;
// Get your API credentials from your billware customer area
const string apiAppId = "your-app-id";
const string apiSecret = "your-api-secret";
var payload = JsonSerializer.Serialize(new
{
order_ident = "aswm5o5i2v5hwlbp",
type = "reminder_1"
});
// The HMAC is calculated over the exact request body that is sent
using var hmac = new HMACSHA256(Encoding.UTF8.GetBytes(apiSecret));
var signature = Convert.ToBase64String(hmac.ComputeHash(Encoding.UTF8.GetBytes(payload)));
using var client = new HttpClient();
var request = new HttpRequestMessage(HttpMethod.Post, "https://www.billware.de/api/v1")
{
Content = new StringContent(payload, Encoding.UTF8, "application/json")
};
request.Headers.Add("X-Bw-Hmac", $"{apiAppId}:{signature}");
request.Headers.Add("X-Bw-Method", "order.sendDocument");
var response = await client.SendAsync(request);
Console.WriteLine(await response.Content.ReadAsStringAsync());
Response Data
Fields
Description
Type
response
Indicates if the mail was sent
Boolean
data
The document as in order.createDocument, file carries date_sent now
Lists the document layouts of your account, as the layout page shows them: for every document type the layouts in German and English with the default of each language. The document_layout_ident of a layout goes into order.createDocument and order.sendDocument.
Data
Fields
Description
Accepted Types
type
Only the layouts of this document type, one of the types of order.createDocument. A partial delivery note uses the delivery note layouts. Without it all layouts
String
Code Examples
# Get your API credentials from your billware customer area
API_APPID="your-app-id"
API_SECRET="your-api-secret"
PAYLOAD='{"type":"invoice"}'
# The HMAC is calculated over the exact request body that is sent
HMAC=$(printf '%s' "$PAYLOAD" | openssl dgst -sha256 -hmac "$API_SECRET" -binary | base64)
curl -X POST "https://www.billware.de/api/v1" \
-H "X-Bw-Hmac: $API_APPID:$HMAC" \
-H "X-Bw-Method: document_layout.list" \
-H "Content-Type: application/json" \
-d "$PAYLOAD"
<?php
// Get your API credentials from your billware customer area
$apiAppId = 'your-app-id';
$apiSecret = 'your-api-secret';
$payload = json_encode([
'type' => 'invoice',
]);
// The HMAC is calculated over the exact request body that is sent
$hmac = base64_encode(hash_hmac('sha256', $payload, $apiSecret, true));
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => 'https://www.billware.de/api/v1',
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => $payload,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
'X-Bw-Hmac: '.$apiAppId.':'.$hmac,
'X-Bw-Method: document_layout.list',
'Content-Type: application/json',
],
]);
$response = curl_exec($curl);
curl_close($curl);
print_r(json_decode($response, true));
import crypto from 'node:crypto';
// Get your API credentials from your billware customer area
const apiAppId = 'your-app-id';
const apiSecret = 'your-api-secret';
const payload = JSON.stringify({
"type": "invoice"
});
// The HMAC is calculated over the exact request body that is sent
const hmac = crypto.createHmac('sha256', apiSecret).update(payload).digest('base64');
const response = await fetch('https://www.billware.de/api/v1', {
method: 'POST',
headers: {
'X-Bw-Hmac': `${apiAppId}:${hmac}`,
'X-Bw-Method': 'document_layout.list',
'Content-Type': 'application/json'
},
body: payload
});
console.log(await response.json());
import base64
import hashlib
import hmac
import json
import requests
# Get your API credentials from your billware customer area
api_appid = "your-app-id"
api_secret = "your-api-secret"
payload = json.dumps({
"type": "invoice",
})
# The HMAC is calculated over the exact request body that is sent
signature = base64.b64encode(
hmac.new(api_secret.encode(), payload.encode(), hashlib.sha256).digest()
).decode()
response = requests.post(
"https://www.billware.de/api/v1",
data=payload,
headers={
"X-Bw-Hmac": f"{api_appid}:{signature}",
"X-Bw-Method": "document_layout.list",
"Content-Type": "application/json",
},
)
print(response.json())
using System.Net.Http;
using System.Security.Cryptography;
using System.Text;
using System.Text.Json;
// Get your API credentials from your billware customer area
const string apiAppId = "your-app-id";
const string apiSecret = "your-api-secret";
var payload = JsonSerializer.Serialize(new
{
type = "invoice"
});
// The HMAC is calculated over the exact request body that is sent
using var hmac = new HMACSHA256(Encoding.UTF8.GetBytes(apiSecret));
var signature = Convert.ToBase64String(hmac.ComputeHash(Encoding.UTF8.GetBytes(payload)));
using var client = new HttpClient();
var request = new HttpRequestMessage(HttpMethod.Post, "https://www.billware.de/api/v1")
{
Content = new StringContent(payload, Encoding.UTF8, "application/json")
};
request.Headers.Add("X-Bw-Hmac", $"{apiAppId}:{signature}");
request.Headers.Add("X-Bw-Method", "document_layout.list");
var response = await client.SendAsync(request);
Console.WriteLine(await response.Content.ReadAsStringAsync());
Response Data
Fields
Description
Type
response
Indicates if the action was successful
Boolean
data
Returned object
Object
document_layouts
The layouts, one entry per layout
Array
document_layout_ident
Identifier of the layout for order.createDocument
String
layout_name
The name given in the layout editor
String
type
The document type the layout is for
String
lang
The language of the layout
deen
is_default
Whether this is the default layout of its type and language