IN DIESEM ARTIKEL6 ABSCHNITTE
Cord führt einen Verkauf vom Angebot über die Zahlung bis zur Rechnung, in 12 Ländern. Anfangs dachten wir, die Zahlungen wären der schwierige Teil. Es waren die Rechnungen. Jeder Punkt dieser Liste ist eine Annahme, die unser Code traf, bis die Regeln eines Landes das Gegenteil bewiesen.
Das Dokument
- Eine Rechnung ist ein PDF. In Mexiko ist die Rechnung eine XML-Datei, die der Verkäufer signiert und ein von der Steuerbehörde (SAT) zugelassener Zertifizierer stempelt. Das PDF ist nur eine gedruckte Darstellung ohne eigene Rechtswirkung.
- Eine Rechnung existiert, sobald man sie speichert. In Mexiko, Argentinien, Chile, Peru, Kolumbien und Brasilien existiert sie erst, wenn die Steuerbehörde oder eine von ihr zugelassene Stelle sie annimmt. Bis dahin ist sie ein Entwurf.
- Ein Land hat nur eine Art von Rechnung. Brasilien hat ein System für Waren (die NF-e, von jedem Bundesstaat autorisiert) und ein anderes für Dienstleistungen (die NFS-e), und den Steuersatz einer Dienstleistung legt die Gemeinde fest. Argentinien hat Rechnungen der Klassen A, B und C, je nach umsatzsteuerlichem Status von Verkäufer und Käufer.
- Das Rechnungsdatum ist das einzige Datum, das zählt. In Deutschland ist das Leistungsdatum Pflicht. Ist es dasselbe wie das Rechnungsdatum, muss die Rechnung das sagen.
- Man weiß immer, wer der Kunde ist. Spanien und Argentinien erlauben Rechnungen an nicht identifizierte Verbraucher. Argentinien nur unterhalb eines bestimmten Betrags.
Nummern
- Man wählt seine Rechnungsnummern selbst. In Chile lädt man bei der Steuerbehörde eine signierte Datei mit dem Nummernbereich herunter, den man verwenden darf. Der Bereich läuft ab, und eine verwendete Nummer kommt nie zurück, selbst wenn die Rechnung abgelehnt wurde.
- Eine Rechnungsnummer ist pro Konto eindeutig. Sie ist pro Steuernummer und Serie eindeutig. Zwei Konten mit derselben Steuernummer dürfen keine Serie teilen, sonst sieht die Behörde eine Rechnung, wo Sie zwei haben.
max(nummer) + 1reicht. Nicht, wenn zwei Anfragen gleichzeitig ausstellen. Wir nutzen ein Lease pro Sequenz plus einen eindeutigen Index, weil unser Postgres-Treiber über HTTP spricht und keinen Advisory Lock von einer Anweisung zur nächsten halten kann.
Geld
- Die Steuer ist die Summe der Steuern jeder Zeile. Chile berechnet die Umsatzsteuer auf den gesamten Nettobetrag der Rechnung. Solange wir pro Zeile rundeten, gingen unsere Rechnungen in Pesos oft nicht auf: in einem Test mit zufälligen Beträgen bei 26 % der Rechnungen mit zwei Zeilen und bei 47 % derer mit fünf.
- Jede Währung hat Cents. Beträge auf einem chilenischen Steuerdokument sind ganze Pesos. Der Yen hat keine Untereinheit, der Kuwait-Dinar hat drei Nachkommastellen.
Math.round(betrag * 100)berechnet einem Kunden in Japan das Hundertfache. - Ein Land hat nur eine Umsatzsteuer. Quebec erhebt seine QST von 9,975 % zusätzlich zur bundesweiten GST von 5 %. Spanien erhebt IVA, außer auf den Kanaren (IGIC) und in Ceuta und Melilla (IPSI). Die USA haben keinen landesweiten Satz: In Los Angeles liegt der Satz des Bundesstaats bei 7,25 %, der tatsächliche mit County, Stadt und Sonderbezirken bei etwa 9,5 %.
- Der Wechselkurs ist der, den die EZB veröffentlicht. Die Europäische Zentralbank veröffentlicht weder den kolumbianischen, chilenischen oder argentinischen Peso noch den peruanischen Sol. Wenn keine Quelle den Kurs hat, halten wir an und sagen es, denn ein erfundener Kurs landet auf einem rechtlichen Dokument.
Es sich anders überlegen
- Man kann eine Rechnung nach der Ausstellung bearbeiten. Mit Verifactu in Spanien enthält jeder Rechnungsdatensatz den SHA-256-Hash des vorherigen. Eine Korrektur ist ein neuer Datensatz, der auf den alten verweist. Wir erzwingen das in Postgres mit einem Trigger, der UPDATE und DELETE auf signierten Datensätzen blockiert: Nicht einmal unser eigener Code kann die Kette umschreiben.
- Man kann eine Rechnung stornieren. In Argentinien lässt sich eine von der Behörde genehmigte Rechnung nicht annullieren: Man stellt eine Gutschrift aus. In Mexiko hat die Stornierung eine gesetzliche Frist und braucht oft die Zustimmung des Kunden.
- Bezahlt heißt erledigt. Wer in Mexiko vor der Zahlung fakturiert hat, braucht für jede Zahlung einen eigenen elektronischen Beleg, spätestens bis zum 5. des Folgemonats. Mit der französischen Reform wird bei Dienstleistungen, deren Umsatzsteuer mit der Zahlung fällig wird, die Zahlung selbst gemeldet.
Mit der Steuerbehörde sprechen
- Wenn die Anfrage nicht geantwortet hat, schickt man sie noch einmal. Ein erneuter Versand kann eine zweite rechtsgültige Rechnung erzeugen. Wenn wir keine Antwort bekommen, senden wir nie erneut: Wir fragen die Behörde, was sie hat (in Argentinien die letzte autorisierte Nummer, dann diese Rechnung), und entscheiden danach.
- Die Steuerbehörde antwortet sofort. Die spanische AEAT sagt einem, wie lange man bis zur nächsten Übermittlung warten soll. Wir verketten den Datensatz bei der Ausstellung und senden ihn später aus einer Warteschlange, sodass ein Ausfall der AEAT niemanden am Fakturieren hindert.
- Wird ein Stapel abgelehnt, sind alle Rechnungen darin falsch. Es kann ein einzelner Datensatz sein. Wir teilen den Stapel in zwei Hälften, bis wir ihn isoliert haben.
- E-Rechnungspflichten sind eine lateinamerikanische Sache. Seit dem 1. September 2026 muss jedes in Frankreich ansässige Unternehmen E-Rechnungen über eine zugelassene Plattform empfangen können, und kleine Unternehmen beginnen im September 2027 mit dem Versand. Verifactu war für 2027 geplant; im Oktober 2026 kündigte die spanische Regierung stattdessen Oktober 2028 an, die vierte Verschiebung.
Warum das wichtig ist
Nichts davon ist exotisch. So sieht Rechnungsstellung von innen aus, in jedem Land, das Ihre Rechnungen sehen will, und diese Liste wird länger.
Cord übernimmt das, damit ein Unternehmen es nicht muss: ein Angebot, das der Kunde über einen einzigen Link bestätigt und bezahlt, und die Rechnung mit einem Klick. Das CFDI in Mexiko ist live, Verifactu in Spanien ist in der Beta, und die übrigen Integrationen in Lateinamerika sind gebaut, aber noch nicht live.
Cord führt einen Verkauf vom Angebot über die Zahlung bis zur Rechnung, in 12 Ländern. Anfangs dachten wir, die Zahlungen wären der schwierige Teil. Es waren die Rechnungen. Jeder Punkt dieser Liste ist eine Annahme, die unser Code traf, bis die Regeln eines Landes das Gegenteil bewiesen.
## Das Dokument
1. **Eine Rechnung ist ein PDF.** In Mexiko ist die Rechnung eine XML-Datei, die der Verkäufer signiert und ein von der Steuerbehörde (SAT) zugelassener Zertifizierer stempelt. Das PDF ist nur eine gedruckte Darstellung ohne eigene Rechtswirkung.
2. **Eine Rechnung existiert, sobald man sie speichert.** In Mexiko, Argentinien, Chile, Peru, Kolumbien und Brasilien existiert sie erst, wenn die Steuerbehörde oder eine von ihr zugelassene Stelle sie annimmt. Bis dahin ist sie ein Entwurf.
3. **Ein Land hat nur eine Art von Rechnung.** Brasilien hat ein System für Waren (die NF-e, von jedem Bundesstaat autorisiert) und ein anderes für Dienstleistungen (die NFS-e), und den Steuersatz einer Dienstleistung legt die Gemeinde fest. Argentinien hat Rechnungen der Klassen A, B und C, je nach umsatzsteuerlichem Status von Verkäufer und Käufer.
4. **Das Rechnungsdatum ist das einzige Datum, das zählt.** In Deutschland ist das Leistungsdatum Pflicht. Ist es dasselbe wie das Rechnungsdatum, muss die Rechnung das sagen.
5. **Man weiß immer, wer der Kunde ist.** Spanien und Argentinien erlauben Rechnungen an nicht identifizierte Verbraucher. Argentinien nur unterhalb eines bestimmten Betrags.
## Nummern
6. **Man wählt seine Rechnungsnummern selbst.** In Chile lädt man bei der Steuerbehörde eine signierte Datei mit dem Nummernbereich herunter, den man verwenden darf. Der Bereich läuft ab, und eine verwendete Nummer kommt nie zurück, selbst wenn die Rechnung abgelehnt wurde.
7. **Eine Rechnungsnummer ist pro Konto eindeutig.** Sie ist pro Steuernummer und Serie eindeutig. Zwei Konten mit derselben Steuernummer dürfen keine Serie teilen, sonst sieht die Behörde eine Rechnung, wo Sie zwei haben.
8. **`max(nummer) + 1` reicht.** Nicht, wenn zwei Anfragen gleichzeitig ausstellen. Wir nutzen ein Lease pro Sequenz plus einen eindeutigen Index, weil unser Postgres-Treiber über HTTP spricht und keinen Advisory Lock von einer Anweisung zur nächsten halten kann.
## Geld
9. **Die Steuer ist die Summe der Steuern jeder Zeile.** Chile berechnet die Umsatzsteuer auf den gesamten Nettobetrag der Rechnung. Solange wir pro Zeile rundeten, gingen unsere Rechnungen in Pesos oft nicht auf: in einem Test mit zufälligen Beträgen bei 26 % der Rechnungen mit zwei Zeilen und bei 47 % derer mit fünf.
10. **Jede Währung hat Cents.** Beträge auf einem chilenischen Steuerdokument sind ganze Pesos. Der Yen hat keine Untereinheit, der Kuwait-Dinar hat drei Nachkommastellen. `Math.round(betrag * 100)` berechnet einem Kunden in Japan das Hundertfache.
11. **Ein Land hat nur eine Umsatzsteuer.** Quebec erhebt seine QST von 9,975 % zusätzlich zur bundesweiten GST von 5 %. Spanien erhebt IVA, außer auf den Kanaren (IGIC) und in Ceuta und Melilla (IPSI). Die USA haben keinen landesweiten Satz: In Los Angeles liegt der Satz des Bundesstaats bei 7,25 %, der tatsächliche mit County, Stadt und Sonderbezirken bei etwa 9,5 %.
12. **Der Wechselkurs ist der, den die EZB veröffentlicht.** Die Europäische Zentralbank veröffentlicht weder den kolumbianischen, chilenischen oder argentinischen Peso noch den peruanischen Sol. Wenn keine Quelle den Kurs hat, halten wir an und sagen es, denn ein erfundener Kurs landet auf einem rechtlichen Dokument.
## Es sich anders überlegen
13. **Man kann eine Rechnung nach der Ausstellung bearbeiten.** Mit Verifactu in Spanien enthält jeder Rechnungsdatensatz den SHA-256-Hash des vorherigen. Eine Korrektur ist ein neuer Datensatz, der auf den alten verweist. Wir erzwingen das in Postgres mit einem Trigger, der UPDATE und DELETE auf signierten Datensätzen blockiert: Nicht einmal unser eigener Code kann die Kette umschreiben.
14. **Man kann eine Rechnung stornieren.** In Argentinien lässt sich eine von der Behörde genehmigte Rechnung nicht annullieren: Man stellt eine Gutschrift aus. In Mexiko hat die Stornierung eine gesetzliche Frist und braucht oft die Zustimmung des Kunden.
15. **Bezahlt heißt erledigt.** Wer in Mexiko vor der Zahlung fakturiert hat, braucht für jede Zahlung einen eigenen elektronischen Beleg, spätestens bis zum 5. des Folgemonats. Mit der französischen Reform wird bei Dienstleistungen, deren Umsatzsteuer mit der Zahlung fällig wird, die Zahlung selbst gemeldet.
## Mit der Steuerbehörde sprechen
16. **Wenn die Anfrage nicht geantwortet hat, schickt man sie noch einmal.** Ein erneuter Versand kann eine zweite rechtsgültige Rechnung erzeugen. Wenn wir keine Antwort bekommen, senden wir nie erneut: Wir fragen die Behörde, was sie hat (in Argentinien die letzte autorisierte Nummer, dann diese Rechnung), und entscheiden danach.
17. **Die Steuerbehörde antwortet sofort.** Die spanische AEAT sagt einem, wie lange man bis zur nächsten Übermittlung warten soll. Wir verketten den Datensatz bei der Ausstellung und senden ihn später aus einer Warteschlange, sodass ein Ausfall der AEAT niemanden am Fakturieren hindert.
18. **Wird ein Stapel abgelehnt, sind alle Rechnungen darin falsch.** Es kann ein einzelner Datensatz sein. Wir teilen den Stapel in zwei Hälften, bis wir ihn isoliert haben.
19. **E-Rechnungspflichten sind eine lateinamerikanische Sache.** Seit dem 1. September 2026 muss jedes in Frankreich ansässige Unternehmen E-Rechnungen über eine zugelassene Plattform empfangen können, und kleine Unternehmen beginnen im September 2027 mit dem Versand. Verifactu war für 2027 geplant; im Oktober 2026 kündigte die spanische Regierung stattdessen Oktober 2028 an, die vierte Verschiebung.
## Warum das wichtig ist
Nichts davon ist exotisch. So sieht Rechnungsstellung von innen aus, in jedem Land, das Ihre Rechnungen sehen will, und diese Liste wird länger.
Cord übernimmt das, damit ein Unternehmen es nicht muss: ein Angebot, das der Kunde über einen einzigen Link bestätigt und bezahlt, und die Rechnung mit einem Klick. Das CFDI in Mexiko ist live, Verifactu in Spanien ist in der Beta, und die übrigen Integrationen in Lateinamerika sind gebaut, aber noch nicht live.