Quelle des Auftrags, z. B. "amazon". "csv" für den CSV-Import, das Programm, aus dem die Datei stammt, steht in external_account_name, z. B. "Billbee"
String
"billware"
external_ident
Wurde der Auftrag z. B. von eBay importiert, ist das die eindeutige Kennung aus der Quelle
String
""
external_account_name
Wurde der Auftrag z. B. von eBay importiert, ist das der Name des eBay-Kontos
String
""
customer_ident Pflicht
Kennung des Kunden, der zum Auftrag gehört
String
divergent_delivery_address
Gibt an, ob die Lieferadresse von der Rechnungsadresse abweicht
0 Nein1 Ja
0
address_ident
Kennung der Lieferadresse, die der Auftrag übernimmt, wenn divergent_delivery_address auf 1 steht
String
""
date_created
Datum des Auftrags
Datum als String
"2026-10-19 04:51:46"
date_paid
Datum, an dem der Auftrag vollständig bezahlt wurde. Liegt es in der Vergangenheit, gilt der Auftrag als bezahlt
Datum als String
NULL
invoice_nr
Rechnungsnummer, die beim Erzeugen der Rechnung gesetzt wird. Lässt du sie leer und erzeugst die Rechnung, wird automatisch eine Nummer vergeben
String
""
is_quotation
Gibt an, ob der Auftrag ein Angebot ist; mit dem Wert 0 wird er zum Auftrag
0 Nein1 Ja
0
is_canceled
Gibt an, ob der Auftrag storniert ist
0 Nein1 Ja
0
small_entrepreneur
Gibt an, ob die Kleinunternehmerregelung für den Auftrag gilt
0 Nein1 Ja
0
reverse_charge
Gibt an, ob für den Auftrag die Steuerschuldnerschaft des Leistungsempfängers gilt (Reverse Charge)
0 Nein1 Ja
0
intracommunity
Gibt an, ob der Auftrag eine steuerfreie innergemeinschaftliche Lieferung ist
0 Nein1 Ja
0
differential_taxation
Gibt an, ob für den Auftrag die Differenzbesteuerung nach § 25a UStG gilt
0 Nein1 Ja
0
document_show_article_description
Gibt an, ob die Artikelbeschreibung auf der Rechnung erscheint
0 Nein1 Ja
0
term_of_credit
Zahlungsziel in Tagen
Integer
Das Zahlungsziel aus deinen billware-Einstellungen
user_note
Optionale interne Notiz zu diesem Auftrag
String
""
public_authority_id
Leitweg-ID einer Behörde, z. B. 04011000-1234512345-06. Kommt in die E-Rechnung als Käuferreferenz (BT-10) und elektronische Adresse des Käufers (BT-49). Die Prüfziffern werden geprüft, eine falsche ID wird abgelehnt. Leer oder nicht gesetzt: die public_authority_id des Kunden. Ein Kunde ohne eigene behält auch die des Auftrags
String bis 46 Zeichen
public_authority_id des Kunden
customer_reference
Referenz des Kunden, z. B. seine Bestellnummer. Steht auf den Dokumenten und in der E-Rechnung als Bestellreferenz (BT-13), ohne public_authority_id auch als Käuferreferenz (BT-10)
String bis 128 Zeichen
""
date_delivered
Zeitraum und Art der Leistung
Array
Array
type
Gibt an, wie das Lieferdatum des Auftrags bestimmt wird
0 Konkretes Datum1 Wie das Rechnungsdatum-1 Unbekannt2 Zeitraum von bis3 Wie das Lieferscheindatum
1
start
Das konkrete Datum oder der Beginn des Zeitraums
Datum als String
NULL
end
Das Ende des Zeitraums
Datum als String
NULL
discount
Felder des Rabatts für den Auftrag
Array
Array
title
Bezeichnung des Rabatts, erscheint auf den Dokumenten
String
""
calculation_type
Gibt an, ob und wie der Rabatt angewendet wird
-1 Keine0 Wert ist ein Prozentsatz1 Wert ist ein Betrag
-1
price_type
Bei calculation_type 1: ob der Rabatt auf den Netto- oder den Bruttopreis wirkt
0 Wirkt auf den Nettopreis1 Wirkt auf den Bruttopreis
0
value
Wert des Rabatts als Prozentsatz oder Betrag, je nach calculation_type
Float
0
payment
Felder der Zahlungsart für den Auftrag
Array
Array
name
Name der Zahlungsart
String
""
calculation_type
Gibt an, ob und wie die Zahlungsart angewendet wird
-1 Keine0 Wert ist ein Prozentsatz1 Wert ist ein Betrag2 Kostenlos, Zahlungsart wird genannt, aber nicht berechnet
-1
price_type
Bei calculation_type 1: ob der Aufschlag der Zahlungsart auf den Netto- oder den Bruttopreis wirkt
0 Wirkt auf den Nettopreis1 Wirkt auf den Bruttopreis
0
value
Aufschlag der Zahlungsart als Prozentsatz oder Betrag, je nach calculation_type
Float
0
cashback_active
Gibt an, ob Skonto aktiv ist
0 Nein1 Ja
0
cashback
Skonto für den Auftrag in Prozent
Integer
0
cashback_days
Anzahl der Tage auf der Rechnung, in denen das Skonto gilt
Integer
0
shipping
Felder der Versandart für den Auftrag
Array
Array
carrier
Name des Versanddienstleisters
String
""
tracking
Sendungsnummer der Lieferung
String
""
calculation_type
Gibt an, ob und wie die Versandart angewendet wird
-1 Keine0 Wert ist ein Prozentsatz1 Wert ist ein Betrag2 Kostenlos, Versandart wird genannt, aber nicht berechnet
-1
price_type
Bei calculation_type 1: ob die Versandkosten auf den Netto- oder den Bruttopreis wirken
0 Wirkt auf den Nettopreis1 Wirkt auf den Bruttopreis
0
value
Versandkosten als Prozentsatz oder Betrag, je nach calculation_type
Float
0
articles
Array der Artikel, die dem Auftrag hinzugefügt werden
Array
Array
[KEYS]
Array-Element mit den Feldern eines Artikels. Der Schlüssel kann eine Zahl oder eine Zeichenkette sein
Array Key
NULL
article_ident
Kennung des Artikels oder eine beliebige Zeichenkette, wenn der Artikel nicht in der Datenbank existiert
String
NULL
article_price
Nettopreis des Artikels
Float
0.0000
article_purchase_price
Einkaufspreis des Artikels
Float
0.0000
article_tax_rate
Steuersatz des Artikels
Float
0.0000
article_quantity
Menge dieser Position
Float
0.00
article_position
Position dieses Artikels in den Tabellen der Dokumente
Integer
1
article_title
Titel dieses Artikels
String
""
article_subtitle
Untertitel dieses Artikels
String
""
article_unit
Kennung der Einheit des Artikels
"unit_ppu" Preis je Stück"unit_hour" Einheit sind Stunden"unit_lump"
Pauschal"unit_kg" Einheit sind Kilogramm
"unit_ppu"
article_sku
SKU des Artikels
String
""
article_ean
EAN des Artikels
String
""
article_nr
Artikelnummer
String
""
Codebeispiele
# 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());
Rückgabewerte
Felder
Beschreibung
order_ident
Kennung des angelegten Auftrags
order.read
Liefert die Daten eines Auftrags.
Daten
Felder
Beschreibung
Erlaubte Werte
order_ident Pflicht
Kennung des Auftrags
String
Codebeispiele
# 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());
Rückgabewerte
Felder
Beschreibung
Typ
order_ident
Kennung des Auftrags
String
customer_ident
Kennung des Kunden, der zum Auftrag gehört
String
external_ident
Wurde der Auftrag z. B. von eBay importiert, ist das die eindeutige Kennung aus der Quelle
String
external_account_name
Wurde der Auftrag z. B. von eBay importiert, ist das der Name des eBay-Kontos
String
is_template
Gibt an, ob der Auftrag die Vorlage eines wiederkehrenden Auftrags ist
0 Nein1 Ja
is_quotation
Gibt an, ob der Auftrag ein Angebot ist
0 Nein1 Ja
is_canceled
Gibt an, ob der Auftrag als storniert markiert ist
0 Nein1 Ja
repeated
Gibt an, ob dieser Auftrag aus einem wiederkehrenden Auftrag erzeugt wurde
0 Nein1 Ja
document_show_article_description
Gibt an, ob die Artikelbeschreibung auf der Rechnung erscheint
0 Nein1 Ja
date_created
Datum und Uhrzeit, wann der Auftrag angelegt wurde
Datum als String
date_created_user
Datum, wann der Auftrag angelegt wurde, im Format des Kontos, z. B. "19.10.2018"
Datum als String
date_updated
Datum und Uhrzeit der letzten Änderung des Auftrags
Datum als String
date_updated_user
Datum der letzten Änderung des Auftrags im Format des Kontos, z. B. "19.10.2018"
Datum als String
date_paid
Datum und Uhrzeit, wann der Auftrag vollständig bezahlt wurde
Datum als String
date_paid_user
Datum, wann der Auftrag vollständig bezahlt wurde, im Format des Kontos, z. B. "19.10.2018"
Datum als String
date_invoice
Datum und Uhrzeit der Rechnung
Datum als String
date_invoice_user
Rechnungsdatum im Format des Kontos, z. B. "19.10.2018"
Datum als String
order_type
Quelle des Auftrags, z. B. "amazon"
String
external_username
Wurde der Auftrag z. B. von eBay importiert, ist das der Benutzername des Kunden
String
order_nr
Die Auftragsnummer
String
customer_nr
Die Kundennummer
String
invoice_nr
Die Rechnungsnummer
String
delivery_note_nr
Die Lieferscheinnummer
String
quotation_nr
Ist oder war der Auftrag ein Angebot, steht hier die Angebotsnummer
String
is_business_client
Gibt an, ob der Kunde ein Geschäftskunde ist
0 Nein1 Ja
bill_title
Rechnungsadresse: Anrede des Kunden
-1 Firma0 Herr1 Frau2 Divers3 Keine Anrede4 Familie5 Eheleute6 Doktor7 Professor
Rechnungsadresse: Ländercode (ISO 3166 ALPHA-2) in Kleinbuchstaben, z. B. de; Großschreibung wird klein gespeichert
String
bill_email
Rechnungsadresse: E-Mail-Adresse
String
bill_phone
Rechnungsadresse: Telefonnummer
String
bill_phone_mobile
Rechnungsadresse: Mobilnummer
String
divergent_delivery_address
Gibt an, ob die Lieferadresse von der Rechnungsadresse abweicht
0 Nein1 Ja
delivery_title
Lieferadresse: Anrede des Kunden
-1 Firma0 Herr1 Frau2 Divers3 Keine Anrede4 Familie5 Eheleute6 Doktor7 Professor
delivery_firstname
Lieferadresse: Vorname
String
delivery_lastname
Lieferadresse: Nachname
String
delivery_company
Lieferadresse: Firmenname
String
delivery_street
Lieferadresse: Straße
String
delivery_street2
Lieferadresse: Adresszusatz
String
delivery_zipcode
Lieferadresse: Postleitzahl
String
delivery_city
Lieferadresse: Ort
String
delivery_country
Lieferadresse: Ländercode (ISO 3166 ALPHA-2) in Kleinbuchstaben, z. B. de; Großschreibung wird klein gespeichert
String
delivery_phone
Lieferadresse: Telefonnummer
String
delivery_phone_mobile
Lieferadresse: Mobilnummer
String
account_bank
Name der Bank
String
account_bic
BIC der Bank
String
account_iban
IBAN des Kundenkontos
String
account_paypal
PayPal-Konto des Kunden
String
small_entrepreneur
Gibt an, ob die Kleinunternehmerregelung für den Auftrag gilt
0 Nein1 Ja
reverse_charge
Gibt an, ob für den Auftrag die Steuerschuldnerschaft des Leistungsempfängers gilt (Reverse Charge)
0 Nein1 Ja
intracommunity
Gibt an, ob der Auftrag eine steuerfreie innergemeinschaftliche Lieferung ist
0 Nein1 Ja
differential_taxation
Gibt an, ob für den Auftrag die Differenzbesteuerung nach § 25a UStG gilt
0 Nein1 Ja
term_of_credit
Zahlungsziel in Tagen
Integer
sum_net
Nettosumme des Auftrags
Float
sum_gross
Bruttosumme des Auftrags
Float
sum_reminder1
Gebühr der ersten Mahnstufe
Float
sum_reminder2
Gebühr der zweiten Mahnstufe
Float
sum_reminder3
Gebühr der letzten Mahnstufe
Float
user_note
Interne Notiz zu diesem Auftrag
String
public_authority_id
Leitweg-ID einer Behörde, leer, wenn keine gesetzt ist
String
customer_reference
Referenz des Kunden, leer, wenn keine gesetzt ist. HTML-Sonderzeichen kommen kodiert zurück, z. B. &
String
credit_note
Array, wenn der Auftrag eine Korrekturrechnung hat, sonst false
Array
credit_note_ident
Kennung der Korrekturrechnung
String
sum_net
Nettosumme der Korrekturrechnung
Float
sum_gross
Bruttosumme der Korrekturrechnung
Float
date_delivered
Zeitraum und Art der Leistung
Array
type
Gibt an, wie das Lieferdatum des Auftrags bestimmt wird
0 Konkretes Datum1 Wie das Rechnungsdatum-1 Unbekannt2 Zeitraum von bis3 Wie das Lieferscheindatum
start
Das konkrete Datum oder der Beginn des Zeitraums
Datum als String
end
Das Ende des Zeitraums
Datum als String
discount
Felder des Rabatts des Auftrags
Array
title
Bezeichnung des Rabatts, erscheint auf den Dokumenten
String
calculation_type
Gibt an, ob und wie der Rabatt angewendet wird
-1 Keine0 Wert ist ein Prozentsatz1 Wert ist ein Betrag
price_type
Bei calculation_type 1: ob der Rabatt auf den Netto- oder den Bruttopreis wirkt
0 Wirkt auf den Nettopreis1 Wirkt auf den Bruttopreis
value
Wert des Rabatts als Prozentsatz oder Betrag, je nach calculation_type
Float
payment
Felder der Zahlungsart des Auftrags
Array
name
Name der Zahlungsart
String
calculation_type
Gibt an, ob und wie die Zahlungsart angewendet wird
-1 Keine0 Wert ist ein Prozentsatz1 Wert ist ein Betrag2 Kostenlos, Zahlungsart wird genannt, aber nicht berechnet
price_type
Bei calculation_type 1: ob der Aufschlag der Zahlungsart auf den Netto- oder den Bruttopreis wirkt
0 Wirkt auf den Nettopreis1 Wirkt auf den Bruttopreis
value
Aufschlag der Zahlungsart als Prozentsatz oder Betrag, je nach calculation_type
Float
cashback_active
Gibt an, ob Skonto aktiv ist
0 Nein1 Ja
cashback
Skonto für den Auftrag in Prozent
Integer
cashback_days
Anzahl der Tage auf der Rechnung, in denen das Skonto gilt
Integer
shipping
Felder der Versandart des Auftrags
Array
carrier
Name des Versanddienstleisters
String
tracking
Sendungsnummer der Lieferung
String
calculation_type
Gibt an, ob und wie die Versandart angewendet wird
-1 Keine0 Wert ist ein Prozentsatz1 Wert ist ein Betrag2 Kostenlos, Versandart wird genannt, aber nicht berechnet
price_type
Bei calculation_type 1: ob die Versandkosten auf den Netto- oder den Bruttopreis wirken
0 Wirkt auf den Nettopreis1 Wirkt auf den Bruttopreis
value
Versandkosten als Prozentsatz oder Betrag, je nach calculation_type
Float
order_articles
Array der Artikel und Positionen dieses Auftrags
Array
[ORDER_ARTICLE_IDENT]
Array-Element mit den Feldern eines Artikels. Der Schlüssel des Elements ist die Kennung des Artikels
Array Key
order_article_ident
Kennung dieses Artikels bzw. dieser Position
String
article_ident
Kennung des ursprünglichen Artikels in der Artikeldatenbank als Querverweis. NULL, wenn dieser Artikel gelöscht wurde oder die Position anders entstand, z. B. als freie Position
String
article_price
Nettopreis des Artikels
Float
article_purchase_price
Einkaufspreis des Artikels
Float
article_tax_rate
Steuersatz des Artikels
Float
article_quantity
Menge dieser Position
Float
article_position
Position dieses Artikels in den Tabellen der Dokumente
Integer
article_title
Titel dieses Artikels
String
article_subtitle
Untertitel dieses Artikels
String
article_unit
Kennung der Einheit des Artikels
"unit_ppu" Preis je Stück"unit_hour" Einheit sind Stunden"unit_lump"
Pauschal"unit_kg" Einheit sind Kilogramm
article_sku
SKU des Artikels
String
article_ean
EAN des Artikels
String
article_nr
Artikelnummer
String
files
Array der Dateien dieses Auftrags
Array
[ORDER_FILE_IDENT]
Array-Element mit den Feldern einer Datei. Der Schlüssel des Elements ist die Kennung der Datei
Array Key
order_file_ident
Kennung dieser Datei
String
file_source
Quelle der Datei, z. B. "ebay"
String
href
Direkter Link zur Datei, lädt sie ohne Login
String
controller
Gibt an, welcher Controller für Dateioperationen zuständig ist, z. B. "order"
String
reference_nr
Nummer des Besitzers dieser Datei, z. B. die order_nr
String
parent_ident
Kennung des Besitzers dieser Datei, z. B. die Kennung dieses Auftrags
String
file_name
Interner Dateiname mit Endung
String
file_user_name
Ursprünglicher Dateiname mit Endung
String
file_extension
Endung der Datei, z. B. "pdf"
String
file_type
Typ dieser Datei
"invoice""contract_note""proforma_invoice""quotation""delivery_note""reversal_invoice""credit_note""reminder_1""reminder_2""reminder_3""user" Vom Nutzer hochgeladene Datei
date_updated
Datum und Uhrzeit der letzten Änderung der Datei
Datum als String
date_updated_user
Datum der letzten Änderung der Datei im Format des Kontos, z. B. "19.10.2018"
Datum als String
date_sent
Datum und Uhrzeit, wann die Datei als gesendet markiert wurde
Datum als String
date_sent_user
Datum, wann die Datei als gesendet markiert wurde, im Format des Kontos, z. B. "19.10.2018"
Beginn des Zeitraums, aus dem die Aufträge gelistet werden. Format: Y-m-d H:i:s (z. B. "2024-10-01 00:00:00")
String
end_date Pflicht
Ende des Zeitraums, aus dem die Aufträge gelistet werden. Format: Y-m-d H:i:s (z. B. "2024-10-31 23:59:59")
String
date_type Pflicht
Datum, nach dem gefiltert wird. Erlaubte Werte: date_created, date_updated, date_paid, date_invoice
String
page
Seitennummer für die seitenweise Ausgabe. Standard ist 1.
Integer
Codebeispiele
# 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());
Rückgabewerte
Das Array orders enthält Einträge mit derselben Struktur wie die Antwort von order.read.
Seitenweise Ausgabe
Die Antwort enthält Angaben zur seitenweisen Ausgabe:
page: Die angeforderte Seitennummer.
limit: Die feste Zahl der Aufträge je Seite (immer 10).
total: Die Gesamtzahl der Aufträge, die zum Filter passen.
total_pages: Die Zahl der Seiten, die sich aus Trefferzahl und Seitengröße ergibt.
Mit dem Parameter page blätterst du durch die Ergebnisseiten. Ohne Angabe kommt Seite 1.
# 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());
Antwortdaten
Felder
Beschreibung
Typ
response
Gibt an, ob die Aktion erfolgreich war
truefalse
data
Array mit den Antwortdaten
Array
order_ident
Die Kennung des geänderten Auftrags
String
[fields]
Alle geänderten und bereinigten Felder
method
order.update
String
message
Zusätzliche Information zur Anfrage
String
Beispielantwort
// 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
Löscht einen bestehenden Auftrag.
Daten
Felder
Beschreibung
Erlaubte Werte
order_ident Pflicht
Kennung des Auftrags
String
Codebeispiele
# 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());
Beispielantworten
// 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
Bucht eine Zahlung zu einem bestehenden Auftrag. Der Auftrag muss bereits existieren.
Daten
Felder
Beschreibung
Erlaubte Werte
order_ident Pflicht
Kennung des Auftrags, dem die Zahlung hinzugefügt wird
String
amount
Betrag der Zahlung (positiv für Zahlungen, negativ für Erstattungen). Fehlt er, wird der offene Betrag des Auftrags genommen.
Float
fee
Transaktions- oder Bearbeitungsgebühr der Zahlung (optional, Standard: 0.0)
Float
payment_name / name
Name der Zahlungsart (billware-Standard: payment_cash, payment_directdebit, payment_bankwire, payment_invoice, payment_paypal)
String
date_paid
Datum der Zahlung (Pflicht, wenn der Auftrag noch keines hat)
String (YYYY-MM-DD HH:MM:SS)
external_ident
Externe Kennung der Zahlung (z. B. PayPal-Transaktions-ID)
String
set_paid
Auf 1 setzen, wenn der Auftrag nach dieser Zahlung als bezahlt gelten soll
Integer (0 or 1)
Codebeispiele
# 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());
Vergibt eine Rechnungsnummer für einen bestehenden Auftrag. Gibst du eine Nummer an, wird sie übernommen. Sonst wird nach deinen Einstellungen automatisch eine Rechnungsnummer erzeugt.
Daten
Felder
Beschreibung
Erlaubte Werte
order_ident Pflicht
Die interne Kennung des Auftrags
String
invoice_nr
(Optional) Eigene Rechnungsnummer. Fehlt sie, wird eine Nummer automatisch vergeben
String
Codebeispiele
# 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());
Antwortdaten
Felder
Beschreibung
Typ
response
Gibt an, ob die Aktion erfolgreich war
Boolean
data
Objekt mit der neuen Rechnungsnummer
Object
invoice_nr
Die zugewiesene oder neu vergebene Rechnungsnummer
Erzeugt ein Dokument zu einem Auftrag, so wie die Auftragsseite: das PDF mit Layout und Freitexten deines Kontos, die Nummer des Dokuments und bei eingeschalteter E-Rechnung die XRechnung-XML. Das Dokument entsteht einmal: Ein zweiter Aufruf mit demselben type liefert die bestehende Datei und druckt nichts neu. Nur der anteilige Lieferschein ist bei jedem Aufruf ein neues Dokument, weil jeder Aufruf eine neue Teillieferung ist.
Daten
Felder
Beschreibung
Erlaubte Werte
order_ident Pflicht
Kennung des Auftrags
String
type Pflicht
Das Dokument, das erzeugt wird. Die Auftragsseite bietet dieselben Dokumente; die Rechnung zieht Rechnungsnummer und -datum, wenn der Auftrag noch keine hat, der Lieferschein seine Lieferscheinnummer
Das Layout für den Druck, eines deiner Layouts für diesen Dokumenttyp aus document_layout.list. Ohne Angabe gilt das Standardlayout in der Sprache des Auftrags. Der anteilige Lieferschein nutzt die Layouts des Lieferscheins
String
free_text_1
Der erste Freitext auf dem Dokument, mit den Platzhaltern, die der Texteditor des Auftrags anbietet. Ersetzt den für diesen Dokumenttyp gespeicherten Text
String
free_text_2
Der zweite Freitext, wie oben
String
date_credit_note
Nur Korrekturrechnung: das Datum der Korrekturrechnung. Ohne Angabe das aktuelle Datum
Datum als String Y-m-d H:i:s
articles
Nur Korrekturrechnung und anteiliger Lieferschein: die Positionen des Dokuments. Eine Korrekturrechnung ohne Positionen nimmt den ganzen Auftrag zurück: jede Position mit negativer Menge, Versand, Rabatt und Zahlungsaufschlag mit umgekehrtem Vorzeichen. Ein anteiliger Lieferschein ohne Positionen führt alle Positionen des Auftrags auf
Array
article_title Pflicht
Bezeichnung der Position. Beim anteiligen Lieferschein liefert die Auftragsposition mit dieser Bezeichnung Artikelnummer und Einheit
String
article_quantity Pflicht
Die Menge. Bei der Korrekturrechnung die Menge, wie sie auf der Korrekturrechnung steht, also negativ für ein zurückgenommenes Stück
Number
article_price
Korrekturrechnung: Pflicht, der Nettopreis je Einheit
Number
article_tax_rate
Korrekturrechnung: Pflicht, der Steuersatz der Position in Prozent
Number
article_unit
Einheit der Position, wie in article.create
String
article_nr
Artikelnummer auf dem Dokument
String
order_article_ident
Anteiliger Lieferschein: die Auftragsposition statt ihrer Bezeichnung, aus order_articles von order.read
String
shipping
Nur Korrekturrechnung mit Positionen: zurückgenommener Versand mit calculation_type, price_type und value wie in order.create, der Betrag mit dem Vorzeichen, das er auf der Korrekturrechnung hat, dazu service, carrier und tracking. Ohne Angabe kein Versand auf der Korrekturrechnung
Array
discount
Nur Korrekturrechnung mit Positionen: zurückgenommener Rabatt mit calculation_type, price_type, value und title wie in order.create. Ohne Angabe kein Rabatt auf der Korrekturrechnung
Array
payment
Nur Korrekturrechnung mit Positionen: zurückgenommener Zahlungsaufschlag mit calculation_type, price_type, value und name wie in order.create. Ohne Angabe kein Zahlungsaufschlag auf der Korrekturrechnung
Array
address_ident
Nur anteiliger Lieferschein: die Adresse auf dem Dokument. Ohne Angabe die Lieferadresse des Auftrags, wenn er eine hat, sonst die Rechnungsadresse
bill_addressdelivery_address oder die address_ident einer Lieferadresse des Kunden
date_delivery_note
Nur anteiliger Lieferschein: das Datum auf dem Dokument. Ohne Angabe das aktuelle Datum
Datum als String Y-m-d H:i:s
Regeln
Der Aufruf wird mit response: false und einer Meldung abgelehnt, wenn auch die Auftragsseite das Dokument nicht anbieten würde:
Ein Angebot bekommt nur das Dokument quotation; jeder andere Typ braucht einen Auftrag. Eine Wiederholungsvorlage bekommt keine Dokumente.
Ein stornierter Auftrag bekommt nur noch reversal_invoice und credit_note.
reversal_invoice, credit_note und die Mahnungen brauchen zuerst eine Rechnung. Die Stornorechnung trägt die Rechnungsnummer mit dem Zusatz -S und setzt den Auftrag auf storniert, die Korrekturrechnung den Zusatz -K. Ein Auftrag hat eine Korrekturrechnung.
Eine Mahnung wird bei einem bezahlten Auftrag abgelehnt, und reminder_2 braucht reminder_1, reminder_3 braucht reminder_2. Die Mahngebühr kommt aus deinen Einstellungen.
Eine zweite Anfrage für denselben Auftrag, während die erste noch druckt, wird abgelehnt; schick sie kurz darauf noch einmal.
Codebeispiele
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());
Antwortdaten
Felder
Beschreibung
Typ
response
Gibt an, ob das Dokument jetzt existiert
Boolean
data
Das Dokument
Object
order_ident
Kennung des Auftrags
String
type
Der Dokumenttyp der Anfrage
String
document_nr
Die Nummer auf dem Dokument: die Rechnungsnummer, die Rechnungsnummer mit -S oder -K, die Lieferscheinnummer, die Lieferscheinnummer mit laufender Nummer beim anteiligen Lieferschein, die Angebotsnummer, sonst die Auftragsnummer
String
created
Ob dieser Aufruf das Dokument erzeugt hat
1 Jetzt erzeugt0 Gab es schon
file
Das PDF, dasselbe Objekt wie ein Eintrag in files von order.read: href ist ein Link, der die Datei ohne Login lädt, file_user_name der Dateiname, date_sent der Versandzeitpunkt
Object
e_invoice
Ob und wie das Dokument eine E-Rechnung ist, nach den E-Rechnungs-Einstellungen deines Kontos: das Format, ob das PDF selbst die XML trägt (ZUGFeRD) und die separate XRechnung-XML
Object
format
zugferd: das PDF trägt die XML; xrechnung: eine separate XML-Datei; both: beides; null, wenn das Konto für diesen Dokumenttyp keine E-Rechnung erzeugt
zugferdxrechnungbothNULL
in_pdf
Ob das PDF die eingebettete XML trägt, geprüft in der Datei selbst
1 Ja0 Nein
xml
Die separate XRechnung-XML als Objekt wie file, sonst null
ObjectNULL
message
Lesbare Ergebnismeldung
String
Beispielanfrage
{
"order_ident": "154xy0817679B1kJ",
"type": "invoice",
"free_text_1": "Vielen Dank für Ihren Einkauf."
}
Sendet ein Dokument eines Auftrags per E-Mail an die Rechnungs-Mailadresse des Auftrags, mit der Mailvorlage deines Kontos für diesen Dokumenttyp, dem PDF und, wenn dein Konto sie anhängt, der XRechnung-XML. Die Mail geht wie aus der Auftragsseite raus: von billware mit deiner Adresse als Antwortadresse oder über deinen eigenen SMTP-Server, wenn du einen eingerichtet hast. Existiert das Dokument noch nicht, wird es zuerst erzeugt; dabei gelten die Felder von order.createDocument. Ein Dokument wird einmal gesendet: Ein zweiter Aufruf wird abgelehnt und nennt den Versandzeitpunkt.
Daten
Felder
Beschreibung
Erlaubte Werte
order_ident Pflicht
Kennung des Auftrags
String
type Pflicht
Das Dokument, das gesendet wird, siehe order.createDocument. Von mehreren anteiligen Lieferscheinen geht der neueste
String
Muss das Dokument erst erzeugt werden, gelten die optionalen Felder von order.createDocument: document_layout_ident, free_text_1, free_text_2, die Positionen und die übrigen.
Regeln
Die Regeln von order.createDocument gelten, wenn das Dokument dabei erst erzeugt wird.
Der Auftrag braucht eine gültige Rechnungs-Mailadresse (bill_email). Ohne sie wird das Dokument erzeugt, aber nicht gesendet.
Ein Dokument, das schon gesendet wurde, aus der API oder von der Auftragsseite, wird nicht erneut gesendet.
Codebeispiele
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());
Antwortdaten
Felder
Beschreibung
Typ
response
Gibt an, ob die Mail gesendet wurde
Boolean
data
Das Dokument wie in order.createDocument, file trägt jetzt date_sent
Listet die Dokumentlayouts deines Kontos, so wie die Layoutseite sie zeigt: je Dokumenttyp die Layouts in Deutsch und Englisch mit dem Standard jeder Sprache. Die document_layout_ident eines Layouts gehört in order.createDocument und order.sendDocument.
Daten
Felder
Beschreibung
Erlaubte Werte
type
Nur die Layouts dieses Dokumenttyps, einer der Typen von order.createDocument. Der anteilige Lieferschein nutzt die Layouts des Lieferscheins. Ohne Angabe alle Layouts
String
Codebeispiele
# 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());
Antwortdaten
Felder
Beschreibung
Typ
response
Gibt an, ob die Aktion erfolgreich war
Boolean
data
Zurückgegebenes Objekt
Object
document_layouts
Die Layouts, ein Eintrag je Layout
Array
document_layout_ident
Kennung des Layouts für order.createDocument
String
layout_name
Der Name aus dem Layouteditor
String
type
Der Dokumenttyp, für den das Layout gilt
String
lang
Die Sprache des Layouts
deen
is_default
Ob dies das Standardlayout seines Typs und seiner Sprache ist