-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathcreate.html
More file actions
85 lines (77 loc) · 2.67 KB
/
Copy pathcreate.html
File metadata and controls
85 lines (77 loc) · 2.67 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
<!DOCTYPE html>
<meta charset="utf-8">
<title>Create CII with InvoiceXML API</title>
<!--
Get API key: https://www.invoicexml.com/account/authentication
Docs: https://www.invoicexml.com/docs/api/create/cii
WARNING: do not ship API keys in production browser code. Anyone who
views the page source can read and reuse your key. For production,
proxy this request through your own backend so the key stays server-side.
-->
<h1>Create CII invoice</h1>
<button id="run">Generate invoice</button>
<p id="status"></p>
<script>
// Raw key only, without the "Bearer " prefix (it is added below).
const apiKey = 'YOUR_API_KEY';
// Totals and the VAT breakdown are calculated from the line items.
const payload = {
invoice: {
invoiceNumber: 'CII-2026-001',
issueDate: '2026-05-18',
currency: 'EUR',
seller: {
name: 'Acme GmbH',
vatIdentifier: 'DE123456789',
legalRegistration: { identifier: 'HRB 12345' },
postalAddress: {
line1: 'Hauptstraße 12',
city: 'Berlin',
postCode: '10115',
country: 'DE',
},
},
buyer: {
name: 'Globex SAS',
postalAddress: {
line1: '15 rue de Rivoli',
city: 'Paris',
postCode: '75001',
country: 'FR',
},
},
paymentDetails: { paymentAccountIdentifier: 'DE89370400440532013000' },
lines: [
{
quantity: 10,
priceDetails: { netPrice: 150.00 },
vatInformation: { rate: 19.00 },
item: { name: 'Senior consulting' },
},
],
},
};
document.getElementById('run').addEventListener('click', async () => {
const status = document.getElementById('status');
status.textContent = 'Generating...';
const response = await fetch('https://api.invoicexml.com/v1/create/cii', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
Authorization: 'Bearer ' + apiKey,
},
body: JSON.stringify(payload),
});
if (!response.ok) {
status.textContent = `InvoiceXML API error ${response.status}: ${await response.text()}`;
return;
}
const xml = await response.text();
const blob = new Blob([xml], { type: 'application/xml' });
const a = document.createElement('a');
a.href = URL.createObjectURL(blob);
a.download = 'invoice-cii.xml';
a.click();
status.textContent = `Downloaded invoice-cii.xml (${xml.length} chars)`;
});
</script>