# Mit Stripe Billing Steuerbeträge aus nicht unterstützten Systemen verwenden Verwenden Sie mit Stripe Invoices die von einem nicht unterstützten externen System berechneten Steuern. Wenn Sie zur Berechnung von Steuern eine Steuer-Engine eines Drittanbieters verwenden, der über keine unterstützte App im [Stripe App Marketplace](https://docs.stripe.com/tax/third-party-apps.md) verfügt, können Sie Steuerbeträge auf Ihren Rechnungen manuell mit dem Parameter [tax_amounts](https://docs.stripe.com/api/invoice-line-item/update.md#update_line-tax_amounts) festlegen. Nutzen Sie, damit Stripe Steuern für Sie berechnen kann, [Stripe Tax](https://docs.stripe.com/tax.md). ## Rechnung mit manuellen Steuerbeträgen erstellen In diesem Abschnitt wird beschrieben, wie Sie manuelle Steuerbeträge zu Rechnungsposten hinzufügen. ### Rechnung mit einem Rechnungsposten erstellen Im ersten Schritt erstellen Sie eine Rechnung. Wir gehen davon aus, dass Sie bereits einen Kunden/eine Kundin erstellt haben. Wenn dies nicht der Fall ist, lesen Sie bitte den Leitfaden für [Kunden/Kundinnen](https://docs.stripe.com/invoicing/customer.md). ```curl curl https://api.stripe.com/v1/invoices \ -u "<>:" \ -d "customer={{CUSTOMER_ID}}" ``` Manuelle Steuerbeträge können nur zu Rechnungsposten hinzugefügt werden, fügen Sie daher einen Rechnungsposten zur Rechnung hinzu. ```curl curl https://api.stripe.com/v1/invoiceitems \ -u "<>:" \ -d "customer={{CUSTOMER_ID}}" \ -d "invoice={{INVOICE_ID}}" \ -d amount=100 \ -d currency=usd ``` ### Rechnungsposten mit Steuerbeträgen aktualisieren Verwenden Sie den Parameter [tax_amounts](https://docs.stripe.com/api/invoice-line-item/update.md#update_line-tax_amounts), um die Steuerbeträge direkt festzulegen, wenn Sie [Rechnungsposten aktualisieren](https://docs.stripe.com/api/invoices/update_line.md). Sie müssen [tax_rate_data](https://docs.stripe.com/api/invoice-line-item/update.md#update_line-tax_amounts-tax_rate_data) mit `tax_amounts` angeben, um sicherzustellen, dass die relevanten Informationen für die Kundin/den Kunden angezeigt werden. Das folgende Beispiel zeigt, wie Sie einen Rechnungsposten mit dem Feld `tax_amounts` aktualisieren: ```curl curl https://api.stripe.com/v1/invoices/{{INVOICE_ID}}/lines/il_0O4tNe589O8KAxCGYD7OyXPP \ -u "<>:" \ -d "tax_amounts[0][amount]=10" \ -d "tax_amounts[0][taxable_amount]=100" \ -d "tax_amounts[0][tax_rate_data][percentage]=10" \ -d "tax_amounts[0][tax_rate_data][inclusive]=false" \ -d "tax_amounts[0][tax_rate_data][tax_type]=sales_tax" \ -d "tax_amounts[0][tax_rate_data][display_name]=Sales Tax" \ -d "tax_amounts[0][tax_rate_data][description]=Texas Sales Tax" \ -d "tax_amounts[0][tax_rate_data][jurisdiction]=Texas" \ -d "tax_amounts[0][tax_rate_data][jurisdiction_level]=state" \ -d "tax_amounts[0][tax_rate_data][country]=US" \ -d "tax_amounts[0][tax_rate_data][state]=TX" ``` Alle Felder unter `tax_amounts` sind erforderlich, mit Ausnahme von `description`, `jurisdiction`, `jurisdiction_level`, `country`, `state` und `tax_type`. Das [Rechnungspostenobjekt](https://docs.stripe.com/api/invoice-line-item/object.md) gibt das Feld `tax_amounts` zurück. ```json { id: "il_0O4tNe589O8KAxCGYD7OyXPP", object: "line_item", amount: 100, amount_excluding_tax: 100, currency: "usd", ... tax_amounts: [ { amount: 10, inclusive: false, tax_rate: "txr_0Ns7kW589O8KAxCGXoi7EAuS", taxability_reason: null, taxable_amount: 100 } ], tax_rates: [], ... } ``` > Stripe erstellt automatisch einen Steuersatz basierend auf `tax_rate_data` oder verwendet diesen wieder. Stripe berechnet die Steuerbeträge auf der Rechnung jedoch nur anhand des Betragsparameters. Andere Werte, wie zum Beispiel der Steuersatz, werden nur für die Darstellung auf der Rechnung verwendet. Diese Felder werden nicht überprüft, um sicherzustellen, dass sie mit den angegebenen Steuerbeträgen übereinstimmen. ### Rechnung finalisieren Nachdem alle Rechnungsposten mit den Steuerbeträgen aktualisiert wurden, müssen Sie die Rechnung finalisieren. Steuerbeträge können nach Finalisierung der Rechnung nicht mehr geändert werden. Lesen Sie den Leitfaden [Rechnung bearbeiten](https://docs.stripe.com/invoicing/invoice-edits.md), wenn Sie die Rechnung nach der Finalisierung ändern müssen. ```curl curl -X POST https://api.stripe.com/v1/invoices/{{INVOICE_ID}}/finalize \ -u "<>:" ``` ## Stripe erstellt automatisch Steuersätze Für manuelle Steuerbeträge benötigt Stripe Informationen über den entsprechenden Steuersatz. Der Steuersatz wird nur verwendet, um Kundinnen/Kunden Informationen anzuzeigen. Er wird nicht für Berechnungen verwendet. Stripe erzeugt im Hintergrund automatisch Steuersatz-Objekte basierend auf `tax_rate_data`. Wenn dieselben Steuersatzdaten mehrmals übergeben werden, verweist Stripe auf das bestehende Steuersatz-Objekt, anstatt ein neues zu erstellen. Die folgenden Felder werden verwendet, um den Steuersatz zu deduplizieren: `percentage`, `inclusive`, `display_name`, `jurisdiction`, `jurisdiction_level`, `country`, `state` und `tax_type`. Nehmen Sie in diesem Beispiel an, dass ein zweiter Rechnungsposten auf der Rechnung aus dem vorherigen Abschnitt mit denselben `tax_rate_data` aktualisiert wurde. ```curl curl https://api.stripe.com/v1/invoices/{{INVOICE_ID}}/lines/il_0P6nbg589O8KAxCGRWBJAdNV \ -u "<>:" \ -d "tax_amounts[0][amount]=50" \ -d "tax_amounts[0][taxable_amount]=500" \ -d "tax_amounts[0][tax_rate_data][percentage]=10" \ -d "tax_amounts[0][tax_rate_data][inclusive]=false" \ -d "tax_amounts[0][tax_rate_data][tax_type]=sales_tax" \ -d "tax_amounts[0][tax_rate_data][display_name]=Sales Tax" \ -d "tax_amounts[0][tax_rate_data][description]=Texas Sales Tax" \ -d "tax_amounts[0][tax_rate_data][jurisdiction]=Texas" \ -d "tax_amounts[0][tax_rate_data][jurisdiction_level]=state" \ -d "tax_amounts[0][tax_rate_data][country]=US" \ -d "tax_amounts[0][tax_rate_data][state]=TX" ``` ```json { id: "il_0P6nbg589O8KAxCGRWBJAdNV", object: "line_item", amount: 100, amount_excluding_tax: 100, currency: "usd", ... tax_amounts: [ { amount: 10, inclusive: false, tax_rate: "txr_0Ny6QR589O8KAxCGo6MKGPxM", taxability_reason: null, taxable_amount: 100 } ], tax_rates: [], ... } ``` Beide Rechnungsposten haben die gleiche `tax_rate`-ID unter `tax_amount`. Stripe übernimmt die Erstellung und Deduplizierung von Steuersätzen, um den Aufwand für Unternehmen zu minimieren. Während die `tax_rate`-ID einem gültigen Steuersatzobjekt zugeordnet ist, können die den automatisch erstellten Steuersätzen zugeordneten IDs nicht an das Feld `tax_rates` auf der API übergeben werden. Die einzige Ausnahme von dieser Regel ist der Endpoint zum Erstellen von Stornorechnungen. ## Stornorechnung ausstellen Stornorechnungen ermöglichen Korrekturen an Rechnungen, ohne dass eine Rechnung storniert werden muss. Wenn Sie eine Stornorechnung für einen Rechnungsposten mit manuellen Steuerbeträgen ausstellen, benötigt die API zusätzliche Informationen, um sie korrekt zu erstellen. ### Stornorechnung erstellen Der Endpoint zum Erstellen einer Stornorechnung akzeptiert auch den Parameter `tax_amounts`. Das Feld ist erforderlich, wenn der entsprechende Rechnungsposten manuelle Steuerbeträge enthält. So wird die korrekte Abrechnung der Stornorechnung und die Übereinstimmung mit Ihren Rechnungen sichergestellt. ```curl curl https://api.stripe.com/v1/credit_notes \ -u "<>:" \ -d "invoice={{INVOICE_ID}}" \ -d reason=duplicate \ -d "lines[0][type]=invoice_line_item" \ -d "lines[0][invoice_line_item]=il_0O4tNe589O8KAxCGYD7OyXPP" \ -d "lines[0][tax_amounts][0][amount]=10" \ -d "lines[0][tax_amounts][0][taxable_amount]=100" \ -d "lines[0][tax_amounts][0][tax_rate]=txr_0Ns7kW589O8KAxCGXoi7EAuS" ``` ## Beschränkungen Beachten Sie die folgenden Einschränkungen, wenn Sie mit manuellen Steuerbeträgen arbeiten. ### Rechnungsposten haben keine Steuerbeträge Manuelle Steuerbeträge können nur zu Rechnungsposten hinzugefügt werden. ### taxable_amount und tax_rates sind nicht validiert Der in der Anfrage übermittelte Steuerbetrag und Steuersatz werden nur zu Rendering-Zwecken verwendet. Sie werden nicht mit dem Steuerbetrag in der Anfrage abgeglichen. ### tax_amounts und tax_rates können nicht kombiniert werden Ein Rechnungsposten kann keine manuellen Steuerbeträge haben, wenn er auch einen Steuersatz hat und umgekehrt. Rechnungsposten können auch keine manuellen Steuerbeträge haben, wenn die Rechnung einen Standardsteuersatz hat oder wenn einer der anderen Rechnungsposten auf der Rechnung einen Steuersatz hat. ### tax_amounts können veraltet sein, wenn andere Felder aktualisiert werden Vorhandene manuelle Steuerbeträge bleiben im Rechnungsposten bestehen, sofern sie nicht direkt bearbeitet werden. Dies kann bei der [Aktualisierung des Rechnungspostens](https://docs.stripe.com/api/invoiceitems/update.md) mit Feldern, die sich auf den Betrag beziehen, wie beispielsweise `amount`, `discounts` oder `price`, zu veralteten Steuerbeträgen führen. ### Automatisch erstellte Steuersätze können nicht direkt verwendet werden Stripe erstellt automatisch Steuersatzobjekte für manuelle Steuerbeträge. Auf diese Steuersätze kann nicht direkt in den rechnungs- oder zahlungsbezogenen Endpoints verwiesen werden, mit Ausnahme des Endpoints für die Stornorechnung. Sie können auch nicht direkt aktualisiert werden und werden nicht in den Endpoint für alle Steuersätze aufgenommen. Sie können jedoch auf die Daten des Steuersatzes zugreifen, indem Sie den Endpoint zum Abrufen des Steuersatzes mit seinem Token aufrufen.