# Eine Rechnung erstellen und senden
Erstellen Sie ein Beispiel für eine Invoicing-Integration.
# Eine Rechnung erstellen und senden
Erstellen Sie eine vollständige, funktionierende Integration der Rechnungsstellung mithilfe von Stripe Invoicing. Erfahren Sie, wie Sie einen/eine Kund/in suchen, einen Preis aus einem Objekt erhalten, das eine Datenbank darstellt und eine Rechnung erstellen und senden.
1. Build the server
~~~
npm install
~~~
2. Run the server
~~~
npm start
~~~
1. Run the server
~~~
go run server.go
~~~
1. Build the server
~~~
pip3 install -r requirements.txt
~~~
2. Run the server
~~~
export FLASK_APP=server.py
python3 -m flask run --port=4242
~~~
1. Build the server
~~~
bundle install
~~~
2. Run the server
~~~
ruby server.rb -o 0.0.0.0
~~~
1. Build the server
~~~
composer install
~~~
2. Run the server
~~~
php -S 127.0.0.1:4242 --docroot=public
~~~
1. Build the server
~~~
dotnet build
~~~
2. Run the server
~~~
dotnet run
~~~
1. Build the server
~~~
mvn package
~~~
2. Run the server
~~~
java -cp target/sample-jar-with-dependencies.jar com.stripe.sample.Server
~~~
~~~
stripe listen --forward-to localhost:4242/webhook.php
~~~
~~~
stripe listen --forward-to localhost:4242/webhook
~~~
### Stripe Node-Bibliothek installieren
Installieren Sie das Paket und importieren Sie es in Ihren Code. Wenn Sie dagegen von Grund auf neu beginnen möchten und eine package.json-Datei benötigen, laden Sie die Projektdateien über den Download-Link im Code-Editor herunter.
#### npm
Bibliothek installieren:
```bash
npm install --save stripe
```
#### GitHub
Oder laden Sie den Quellcode der Stripe-Node-Bibliothek direkt von [GitHub](https://github.com/stripe/stripe-node) herunter.
### Stripe-Ruby-Bibliothek installieren
Installieren Sie Stripe Ruby Gem und fordern Sie es in Ihrem Code an. Wenn Sie dagegen von Grund auf neu beginnen möchten und eine Gemfile benötigen, laden Sie die Projektdateien über den Download-Link im Code-Editor herunter.
#### Terminal
Gem installieren:
```bash
gem install stripe
```
#### Bundler
Fügen Sie diese Zeile in Ihre Gemfile ein:
```bash
gem 'stripe'
```
#### GitHub
Oder laden Sie den Quellcode von Stripe Ruby Gem direkt von [GitHub](https://github.com/stripe/stripe-ruby) herunter.
### Stripe Java-Bibliothek installieren
Fügen Sie Ihrem Build die Abhängigkeit hinzu und importieren Sie die Bibliothek. Wenn Sie dagegen von Grund auf neu beginnen möchten und eine pom.xml-Beispieldatei (für Maven) benötigen, laden Sie die Projektdateien über den Download-Link im Code-Editor herunter.
#### Maven
Fügen Sie folgende Abhängigkeit zu Ihrer POM-Datei hinzu und ersetzen Sie {VERSION} durch die Versionsnummer, die Sie verwenden möchten.
```bash
\ncom.stripe\nstripe-java\n{VERSION}\n
```
#### Gradle
Fügen Sie die Abhängigkeit zu Ihrer build.gradle-Datei hinzu und ersetzen Sie {VERSION} durch die Versionsnummer, die Sie verwenden möchten.
```bash
implementation "com.stripe:stripe-java:{VERSION}"
```
#### GitHub
Laden Sie die JAR-Datei direkt von [GitHub](https://github.com/stripe/stripe-java/releases/latest) herunter.
### Stripe-Python-Paket installieren
Installieren Sie das Stripe-Paket und importieren Sie es in Ihren Code. Wenn Sie dagegen von Grund auf neu beginnen möchten und eine requirements.txt-Datei benötigen, laden Sie die Projektdateien über den Download-Link im Code-Editor herunter.
#### pip
Installieren Sie das Paket über pip:
```bash
pip3 install stripe
```
#### GitHub
Laden Sie den Quellcode der Stripe-Python-Bibliothek direkt [von GitHub](https://github.com/stripe/stripe-python) herunter.
### Stripe PHP-Bibliothek installieren
Installieren Sie die Bibliothek mit Composer und initialisieren Sie sie mit Ihrem geheimen API-Schlüssel. Wenn Sie dagegen von Grund auf neu beginnen möchten und eine composer.csproj-Datei benötigen, laden Sie die Dateien über den Download-Link im Code-Editor herunter.
#### Composer
Bibliothek installieren:
```bash
composer require stripe/stripe-php
```
#### GitHub
Oder laden Sie den Quellcode der Stripe-PHP-Bibliothek direkt von [GitHub](https://github.com/stripe/stripe-php) herunter.
### Server einrichten
Fügen Sie Ihrem Build die Abhängigkeit hinzu und importieren Sie die Bibliothek. Wenn Sie dagegen von Grund auf neu beginnen möchten und eine go.mod-Datei benötigen, laden Sie die Projektdateien über den Download-Link im Code-Editor herunter.
#### Go
Nutzen Sie für die Initialisierung Go-Module:
```bash
go get -u github.com/stripe/stripe-go/v84
```
#### GitHub
Oder laden Sie den Quellcode des Stripe-Go-Moduls direkt von [GitHub](https://github.com/stripe/stripe-go) herunter.
### Stripe.net-Bibliothek installieren
Installieren Sie das Paket mit .NET oder NuGet. Wenn Sie aber von Grund auf neu beginnen möchten, laden Sie die Dateien herunter, die eine konfigurierte .csproj-Datei enthalten.
#### dotnet
Bibliothek installieren:
```bash
dotnet add package Stripe.net
```
#### NuGet
Bibliothek installieren:
```bash
Install-Package Stripe.net
```
#### GitHub
Oder laden Sie den Quellcode der Stripe.net-Bibliothek direkt von [GitHub](https://github.com/stripe/stripe-dotnet) herunter.
### Stripe-Bibliotheken installieren
Installieren Sie die Pakete und importieren Sie sie in Ihren Code. Wenn Sie dagegen von Grund auf neu beginnen möchten und eine `package.json`-Datei benötigen, laden Sie die Projektdateien über den Download-Link im Code-Editor herunter.
Bibliotheken installieren:
```bash
npm install --save stripe @stripe/stripe-js next
```
### Produkte, Preise und Kund/innen verwalten
Erstellen Sie zunächst einen Preis für Ihr Produkt im [Dashboard](https://docs.stripe.com/invoicing/products-prices.md) oder über die [API](https://docs.stripe.com/api/prices/create.md). Nachdem Sie einen Preis erstellt und einem Produkt zugeordnet haben, speichern Sie seine ID in Ihrer Datenbank.
Suchen Sie als Nächstes nach [einem Kunden/einer Kundin](https://docs.stripe.com/api/customers.md) in Ihrer Datenbank anhand der [E-Mail-Adresse](https://docs.stripe.com/api/customers/object.md?lang=dotnet#customer_object-email). Wenn der Kunde/die Kundin nicht vorhanden ist, erstellen Sie das `Customer`-Objekt und speichern die Kunden-ID für zukünftige Käufe. Im nächsten Schritt wird beispielsweise die [ID](https://docs.stripe.com/api/customers/object.md#customer_object-id) des [Customer-Objekts](https://docs.stripe.com/api/customers/object.md) zum Erstellen einer Rechnung verwendet.
> Das `Customer`-Objekt stellt den/die Kund/in dar, der/die Ihr Produkt kauft. Es wird zum Erstellen einer Rechnung benötigt.
### Verwalten Sie Produkte, Preise und vom Kunden konfigurierte Konten
Erstellen Sie zunächst einen Preis für Ihr Produkt im [Dashboard](https://docs.stripe.com/invoicing/products-prices.md) oder über die [API](https://docs.stripe.com/api/prices/create.md). Nachdem Sie einen Preis erstellt und einem Produkt zugeordnet haben, speichern Sie seine ID in Ihrer Datenbank.
Suchen Sie anschließend eine Kundin oder einen Kunden in Ihrer Datenbank anhand der E-Mail-Adresse. Falls diese Kundin oder dieser Kunde nicht existiert, erstellen Sie das [Konto](https://docs.stripe.com/api/v2/core/accounts.md) für die [Kundin oder den Kunden](https://docs.stripe.com/connect/account-capabilities.md?accounts-namespace=v2#customer) und speichern Sie deren Ausweis für zukünftige Käufe. Der nächste Schritt verwendet beispielsweise die [id](https://docs.stripe.com/api/v2/core/accounts/object.md#v2_account_object-id) des [Konto-Objekts](https://docs.stripe.com/api/v2/core/accounts/object.md), um eine Rechnung zu erstellen.
> Das vom Kunden konfigurierte `Account`-Objekt stellt die Kundin oder den Kunden dar, der Ihr Produkt kauft. Es ist erforderlich, um eine Rechnung zu erstellen.
### Leere Rechnung erstellen
Legen Sie das Attribut [collection_method](https://docs.stripe.com/api/invoices/object.md#invoice_object-collection_method) auf `send_invoice` fest. Damit Stripe eine Rechnung als überfällig kennzeichnet, müssen Sie den Parameter [days_until_due](https://docs.stripe.com/api/invoices/create.md#create_invoice-days_until_due) hinzufügen. Wenn Sie eine Rechnung senden, sendet Stripe die Rechnung per E-Mail mit Zahlungsanweisungen an den Kunden/die Kundin.
> Die andere verfügbare Einzugsmethode ist `charge_automatically`. Bei der automatischen Zahlung versucht Stripe, die Rechnung sofort mit der Standardquelle zu bezahlen, die mit dem/der Kund/in verbunden ist. Hier verwenden wir `send_invoice`, um eine sofortige, unerwünschte Belastung des Kundenkontos zu verhindern.
### Rechnungsposten erstellen
Erstellen Sie einen Rechnungsposten, indem Sie die `id` des/der Kund/in, den `price` des Produkts und die Rechnungs-ID der `invoice` übergeben.
Die maximale Anzahl der Rechnungsposten ist 250.
> Wenn Rechnungsposten vor der Erstellung einer Rechnung erstellt werden, setzen Sie das [pending_invoice_items_behavior](https://docs.stripe.com/api/invoices/create.md#create_invoice-pending_invoice_items_behavior) bei Erstellung der Rechnung auf `include`, damit alle ausstehenden Rechnungsposten der Rechnung automatisch hinzugefügt werden. Fügen Sie in diesem Fall die Rechnungsposten immer nur einem einzigen Kunden/einer einzigen Kundin hinzu, um zu vermeiden, dass sie dem falschen Kunden/der falschen Kundin hinzugefügt werden.
>
> Beim Erstellen einer Rechnung werden bis zu 250 ausstehende Rechnungsposten hinzugefügt, der Rest wird bei der nächsten Rechnung hinzugefügt. Um ausstehende Rechnungsposten Ihrer Kundinnen/Kunden anzuzeigen, rufen Sie die Seite mit **Kundendetails** auf oder setzen Sie das Attribut [pending](https://docs.stripe.com/api/invoiceitems/list.md#list_invoiceitems-pending) auf `true`, wenn Sie die API verwenden, um alle Rechnungsposten aufzuführen.
Senden Sie die Rechnung an die mit dem/der Kund/in verbundenen E-Mail-Adresse. Sobald Sie die Rechnung versenden, wird sie von Stripe finalisiert. In vielen Zuständigkeitsbereichen gelten finalisierte Rechnungen als rechtliches Dokument, sodass bestimmte Felder nicht geändert werden können. Wenn Sie Rechnungen versenden, die bereits bezahlt wurden, gibt es in der E-Mail keinen Hinweis auf die Zahlung.
Für jede finalisierte Rechnung können Sie entweder eine [PDF](https://docs.stripe.com/api/invoices/object.md#invoice_object-invoice_pdf) oder den [Link](https://docs.stripe.com/api/invoices/object.md#invoice_object-hosted_invoice_url) zur entsprechenden [gehosteten Rechnungsseite](https://docs.stripe.com/invoicing/hosted-invoice-page.md) herunterladen und senden.
## Glückwunsch!
Sie haben Ihre erste Rechnung erstellt und versendet. Gehen Sie mit Ihrer Integration noch einen Schritt weiter und erfahren Sie, wie Sie die Steuererhebung über die API schnell automatisieren können.
### Steuereinzug automatisieren
Berechnen und erheben Sie den richtigen Steuerbetrag für Ihre Stripe-Transaktionen. Erfahren Sie mehr über [Stripe Tax](https://docs.stripe.com/tax.md) und wie Sie die Funktion im Dashboard [aktivieren](https://dashboard.stripe.com/tax), bevor Sie sie integrieren.
### Parameter für den automatischen Steuereinzug hinzufügen
Legen Sie den Parameter `automatic_tax` auf `enabled: true` fest.
// This is a public sample test API key.
// Don’t submit any personally identifiable information in requests made with this key.
// Sign in to see your own test API key embedded in code samples.
const stripe = require('stripe')('<>');
// You probably have a database to keep track of preexisting customers.
// But to keep things simple, we'll use an Object to store Stripe object IDs in this example.
const CUSTOMERS = [{stripeId: "cus_123456789", email: "jenny.rosen@example.com"}];
// Prices on Stripe model the pricing scheme of your business.
// Create Prices in the Dashboard or with the API before accepting payments
// and store the IDs in your database.
const PRICES = {basic: "price_123456789", professional: "price_987654321"};
const sendInvoice = async function (email) {
// Look up a customer in your database
let customer = CUSTOMERS.find(c => c.email === email);
let customerId;
if (!customer) {
// Create a new Customer
customer = await stripe.customers.create({
email,
description: 'Customer to invoice',
});
// Store the Customer ID in your database to use for future purchases
CUSTOMERS.push({stripeId: customer.id, email: email});
customerId = customer.id;
} else {
// Read the Customer ID from your database
customerId = customer.stripeId;
}
// You probably have a database to keep track of preexisting customers.
// But to keep things simple, we'll use an Object to store Stripe object IDs in this example.
const CUSTOMERS = [{stripeId: "acct_123456789", email: "jenny.rosen@example.com"}];
// Prices on Stripe model the pricing scheme of your business.
// Create Prices in the Dashboard or with the API before accepting payments
// and store the IDs in your database.
const PRICES = {basic: "price_123456789", professional: "price_987654321"};
const sendInvoice = async function (email) {
// Look up a customer in your database
let customer = CUSTOMERS.find(c => c.email === email);
let customerId;
if (!customer) {
// Create a new customer-configured Account
customer = await stripe.v2.core.accounts.create({
contact_email: email,
display_name: 'Customer to invoice',
configuration: {
customer: {
capabilities: {
automatic_indirect_tax: {requested: true}
},
},
},
});
// Store the Customer ID in your database to use for future purchases
CUSTOMERS.push({stripeId: customer.id, email: email});
customerId = customer.id;
} else {
// Read the Customer ID from your database
customerId = customer.stripeId;
}
// Create an Invoice
const invoice = await stripe.invoices.create({
customer: customerId,
collection_method: 'send_invoice',
days_until_due: 30,
automatic_tax: {enabled: true},
});
// Create an Invoice
const invoice = await stripe.invoices.create({
customer_account: customerId,
collection_method: 'send_invoice',
days_until_due: 30,
automatic_tax: {enabled: true},
});
// Create an Invoice Item with the Price, and Customer you want to charge
const invoiceItem = await stripe.invoiceItems.create({
customer: customerId,
pricing: {
price: PRICES.basic,
},
invoice: invoice.id
});
// Create an Invoice Item with the Price and the customer-configured Account you want to charge
const invoiceItem = await stripe.invoiceItems.create({
customer_account: customerId,
pricing: {
price: PRICES.basic,
},
invoice: invoice.id
});
// Send the Invoice
await stripe.invoices.sendInvoice(invoice.id);
};
{
"name": "stripe-sample",
"version": "1.0.0",
"description": "A sample Stripe implementation",
"main": "server.js",
"scripts": {
"start": "node server.js"
},
"author": "stripe-samples",
"license": "ISC",
"dependencies": {
"express": "^4.17.1",
"stripe": "^20.4.0"
}
}
{
"name": "stripe-sample",
"version": "0.1.0",
"dependencies": {
"@stripe/react-stripe-js": "^3.7.0",
"@stripe/stripe-js": "^7.3.0",
"express": "^4.17.1",
"react": "^18.2.0",
"react-dom": "^18.2.0",
"react-scripts": "^3.4.0",
"stripe": "20.4.0"
},
"devDependencies": {
"concurrently": "4.1.2"
},
"homepage": "http://localhost:3000/checkout",
"proxy": "http://localhost:4242",
"scripts": {
"start-client": "react-scripts start",
"start-server": "node server.js",
"build": "react-scripts build",
"test": "react-scripts test",
"eject": "react-scripts eject",
"start": "concurrently \"yarn start-client\" \"yarn start-server\""
},
"eslintConfig": {
"extends": "react-app"
},
"browserslist": {
"production": [
">0.2%",
"not dead",
"not op_mini all"
],
"development": [
"last 1 chrome version",
"last 1 firefox version",
"last 1 safari version"
]
}
}
const stripe = require('stripe')('<>');
\# This is a public sample test API key.
# Don’t submit any personally identifiable information in requests made with this key.
# Sign in to see your own test API key embedded in code samples.
Stripe.api_key = '<>'
\# This is a public sample test API key.
# Don’t submit any personally identifiable information in requests made with this key.
# Sign in to see your own test API key embedded in code samples.
$CLIENT = Stripe::StripeClient.new('<>')
\# You probably have a database to keep track of preexisting customers.
# But to keep things simple, we'll use an Object to store Stripe object IDs in this example.
$CUSTOMERS = [{ stripeId: 'cus_123456789', email: 'jenny.rosen@example.com' }]
# Prices on Stripe model the pricing scheme of your business.
# Create Prices in the Dashboard or with the API before accepting payments
# and store the IDs in your database.
$PRICES = { basic: 'price_123456', professional: 'price_456789' }
def send_invoice(email)
# Look up a customer in your database
customer = $CUSTOMERS.find { |customer_obj| customer_obj[:email] == email }
customer_id = nil
if !customer
# Create a new Customer
customer = Stripe::Customer.create({
email: email,
description: 'Customer to invoice'
})
# Store the Customer ID in your database to use for future purchases
$CUSTOMERS << { stripeId: customer.id, email: email }
customer_id = customer.id
else
# Read the Customer ID from your database
customer_id = customer[:stripeId]
end
\# You probably have a database to keep track of preexisting customers.
# But to keep things simple, we'll use an Object to store Stripe object IDs in this example.
$CUSTOMERS = [{ stripeId: 'acct_123456789', email: 'jenny.rosen@example.com' }]
# Prices on Stripe model the pricing scheme of your business.
# Create Prices in the Dashboard or with the API before accepting payments
# and store the IDs in your database.
$PRICES = { basic: 'price_123456', professional: 'price_456789' }
def send_invoice(email)
# Look up a customer in your database
customer = $CUSTOMERS.find { |customer_obj| customer_obj[:email] == email }
customer_id = nil
if !customer
# Create a new customer-configured Account
customer = $CLIENT.v2.core.accounts.create({
contact_email: email,
display_name: 'Customer to invoice',
configuration: {
customer: {
capabilities: {automatic_indirect_tax: {requested: true}}
}
}
})
\# Store the Customer ID in your database to use for future purchases
$CUSTOMERS << { stripeId: customer.id, email: email }
customer_id = customer.id
else
# Read the Customer ID from your database
customer_id = customer[:stripeId]
end
\# Create an Invoice
invoice = Stripe::Invoice.create({
customer: customer_id,
collection_method: 'send_invoice',
days_until_due: 30,
automatic_tax: {
enabled: true
},
})
\# Create an Invoice
invoice = $CLIENT.v1.invoices.create({
customer_account: customer_id,
collection_method: 'send_invoice',
days_until_due: 30,
automatic_tax: {
enabled: true
},
})
\# Create an Invoice Item
invoice_item = Stripe::InvoiceItem.create({
customer: customer_id,
pricing: {price: $PRICES[:basic]},
invoice: invoice.id
})
\# Create an Invoice Item
invoice_item = $CLIENT.v1.invoice_items.create({
customer_account: customer_id,
pricing: {price: $PRICES[:basic]},
invoice: invoice.id
})
\# Send the Invoice
Stripe::Invoice.send_invoice(invoice[:id])
\# Send the Invoice
$CLIENT.v1.invoices.send_invoice(invoice[:id])
Stripe.api_key = '<>'
import stripe
\# This is a public sample test API key.
# Don’t submit any personally identifiable information in requests made with this key.
# Sign in to see your own test API key embedded in code samples.
stripe.api_key = '<>'
import stripe
\# This is a public sample test API key.
# Don’t submit any personally identifiable information in requests made with this key.
# Sign in to see your own test API key embedded in code samples.
client = stripe.StripeClient('<>')
\# You probably have a database to keep track of preexisting customers
# But to keep things simple, we'll use an Object to store Stripe object IDs in this example.
CUSTOMERS = [{"stripe_id": "cus_123456789", "email": "jenny.rosen@example.com"}]
# Prices in Stripe model the pricing scheme of your business.
# Create Prices in the Dashboard or with the API before accepting payments
# and store the IDs in your database.
PRICES = {"basic": "price_123456789", "professional": "price_987654321"}
def send_invoice(email):
# Look up a customer in your database
customers = [c for c in CUSTOMERS if c["email"] == email]
if customers:
customer_id=customers[0]["stripe_id"]
else:
# Create a new Customer
customer = stripe.Customer.create(
email=email, # Use your email address for testing purposes
description="Customer to invoice",
)
# Store the customer ID in your database for future purchases
CUSTOMERS.append({"stripe_id": customer.id, "email": email})
# Read the Customer ID from your database
customer_id = customer.id
\# You probably have a database to keep track of preexisting customers
# But to keep things simple, we'll use an Object to store Stripe object IDs in this example.
CUSTOMERS = [{"stripe_id": "acct_123456789", "email": "jenny.rosen@example.com"}]
# Prices in Stripe model the pricing scheme of your business.
# Create Prices in the Dashboard or with the API before accepting payments
# and store the IDs in your database.
PRICES = {"basic": "price_123456789", "professional": "price_987654321"}
def send_invoice(email):
# Look up a customer in your database
customers = [c for c in CUSTOMERS if c["email"] == email]
if customers:
customer_id=customers[0]["stripe_id"]
else:
# Create a new customer-configured Account
customer = client.v2.core.accounts.create({
"contact_email": email, # Use your email address for testing purposes
"display_name": "Customer to invoice",
"configuration": {
"customer": {
"capabilities": {"automatic_indirect_tax": {"requested": True}}
},
},
})
\# Store the customer ID in your database for future purchases
CUSTOMERS.append({"stripe_id": customer.id, "email": email})
# Read the Customer ID from your database
customer_id = customer.id
\# Create an Invoice
invoice = stripe.Invoice.create(
customer=customer_id,
collection_method='send_invoice',
days_until_due=30,
\# Create an Invoice
invoice = client.v1.invoices.create({
"customer_account": customer_id,
"collection_method": 'send_invoice',
"days_until_due": 30,
"automatic_tax": { 'enabled': True },
\# Create an Invoice Item with the Price and Customer you want to charge
stripe.InvoiceItem.create(
customer=customer_id,
pricing={"price": PRICES["basic"]},
invoice=invoice.id
)
\# Create an Invoice Item with the Price and the customer-configured Account you want to charge
client.v1.invoice_items.create({
"customer_account": customer_id,
"pricing": {"price": PRICES["basic"]},
"invoice": invoice.id
})
\# Send the Invoice
stripe.Invoice.send_invoice(invoice.id)
return
\# Send the Invoice
client.v1.invoices.send_invoice(invoice.id)
return
certifi==2026.1.4
chardet==5.2.0
click==8.3.1
Flask==3.1.2
idna==3.11
itsdangerous==2.2.0
Jinja2==3.1.6
MarkupSafe==3.0.3
requests==2.32.5
stripe==14.4.0
toml==0.10.2
Werkzeug==3.1.5
stripe.api_key = '<>'
\Stripe\Stripe::setApiKey($stripeSecretKey);
$CLIENT = new \Stripe\StripeClient($stripeSecretKey);
// You probably have a database to keep track of preexisting customers.
// But to keep things simple, we'll use an Object to store Stripe object IDs in this example.
$CUSTOMERS = [
[
'stripeId' => 'cus_123456789',
'email' => 'jenny.rosen@example.com'
],
];
// Prices on Stripe model the pricing scheme of your business.
// Create Prices in the Dashboard or with the API before accepting payments
// and store the IDs in your database.
$PRICES = [
'basic' => 'price_123456789',
'professional' => 'price_987654321',
];
function sendInvoice($email) {
// Look up a customer in your database
global $CUSTOMERS;
global $PRICES;
$customerId = null;
$customers = array_filter($CUSTOMERS, function ($customer) use ($email) {
return $customer['email'] === $email;
});
if (!$customers) {
// Create a new Customer
$customer = \Stripe\Customer::create([
'email' => $email,
'description' => 'Customer to invoice',
]);
// Store the Customer ID in your database to use for future purchases
$CUSTOMERS[] = [
'stripeId' => $customer->id,
'email' => $email
];
$customerId = $customer->id;
}
else {
// Read the Customer ID from your database
$customerId = $customers[0]['stripeId'];
}
// You probably have a database to keep track of preexisting customers.
// But to keep things simple, we'll use an Object to store Stripe object IDs in this example.
$CUSTOMERS = [
[
'stripeId' => 'acct_123456789',
'email' => 'jenny.rosen@example.com'
],
];
// Prices on Stripe model the pricing scheme of your business.
// Create Prices in the Dashboard or with the API before accepting payments
// and store the IDs in your database.
$PRICES = [
'basic' => 'price_123456789',
'professional' => 'price_987654321',
];
function sendInvoice($email) {
// Look up a customer in your database
global $CUSTOMERS;
global $PRICES;
global $CLIENT;
$customerId = null;
$customers = array_filter($CUSTOMERS, function ($customer) use ($email) {
return $customer['email'] === $email;
});
if (!$customers) {
// Create a new customer-configured Account
$customer = $CLIENT->v2->core->accounts->create([
'contact_email' => $email,
'display_name' => 'Customer to invoice',
'configuration' => [
'customer' => [
'capabilities' => [
'automatic_indirect_tax' => [
'requested' => true,
],
],
],
]
]);
// Store the Customer ID in your database to use for future purchases
$CUSTOMERS[] = [
'stripeId' => $customer->id,
'email' => $email
];
$customerId = $customer->id;
}
else {
// Read the Customer ID from your database
$customerId = $customers[0]['stripeId'];
}
// Create an Invoice
$invoice = \Stripe\Invoice::create([
'customer' => $customerId,
'collection_method' => 'send_invoice',
'days_until_due' => 30,
'automatic_tax' => [
'enabled' => true,
],
]);
// Create an Invoice
$invoice = $CLIENT->v1->invoices->create([
'customer_account' => $customerId,
'collection_method' => 'send_invoice',
'days_until_due' => 30,
'automatic_tax' => [
'enabled' => true,
],
]);
// Create an Invoice Item with the Price, and Customer you want to charge
$invoiceItem = \Stripe\InvoiceItem::create([
'customer' => $customerId,
'pricing' => ['price' => $PRICES['basic']],
'invoice' => $invoice->id
]);
// Create an Invoice Item with the Price and the customer-configured Account you want to charge
$invoiceItem = $CLIENT->v1->invoiceItems->create([
'customer_account' => $customerId,
'pricing' => ['price' => $PRICES['basic']],
'invoice' => $invoice->id
]);
// Send the Invoice
$invoice->sendInvoice();
}
// Send the Invoice
$CLIENT->v1->invoices->sendInvoice();
}
$stripeSecretKey = '<>';
// This is a public sample test API key.
// Don’t submit any personally identifiable information in requests made with this key.
// Sign in to see your own test API key embedded in code samples.
private static StripeClient Client { get; set; } = new StripeClient("<>");
public static void Main(string[] args)
{
// Add a Customer
Customers.Add(new MyCustomer()
{
StripeId = "acct_123456789",
Email = "jenny.rosen@example.com"
});
public static void sendInvoice(String email)
{
// Look up a customer in your database
var customer = Customers.Find(customer => customer.Email == email);
String customerId;
if(customer == null) {
// Create a new Customer
var customerOptions = new CustomerCreateOptions
{
Email = email,
Description = "Customer to invoice",
};
var stripeCustomer = Client.V1.Customers.Create(customerOptions);
customerId = stripeCustomer.Id;
// Store the Customer ID in your database to use for future purchases
Customers.Add(new MyCustomer()
{
StripeId = stripeCustomer.Id,
Email = stripeCustomer.Email,
});
} else {
// Read the Customer ID from your database
customerId = customer.StripeId;
}
public static void sendInvoice(String email)
{
// Look up a customer in your database
var customer = Customers.Find(customer => customer.Email == email);
String customerId;
if(customer == null) {
// Create a new customer-configured Account
var customerOptions = new Stripe.V2.Core.AccountCreateOptions
{
ContactEmail = email,
DisplayName = "Customer to invoice",
Configuration = new Stripe.V2.Core.AccountCreateConfigurationOptions
{
Customer = new Stripe.V2.Core.AccountCreateConfigurationCustomerOptions
{
Capabilities = new Stripe.V2.Core.AccountCreateConfigurationCustomerCapabilitiesOptions
{
AutomaticIndirectTax = new Stripe.V2.Core.AccountCreateConfigurationCustomerCapabilitiesAutomaticIndirectTaxOptions
{
Requested = true,
},
},
}
},
};
var stripeCustomer = Client.V2.Core.Accounts.Create(customerOptions);
customerId = stripeCustomer.Id;
// Store the Customer ID in your database to use for future purchases
Customers.Add(new MyCustomer()
{
StripeId = stripeCustomer.Id,
Email = stripeCustomer.CustomerEmail,
});
} else {
// Read the Customer ID from your database
customerId = customer.StripeId;
}
// Create an Invoice
var invoiceOptions = new InvoiceCreateOptions
{
Customer = customerId,
CollectionMethod = "send_invoice",
DaysUntilDue = 30,
AutomaticTax = new InvoiceAutomaticTaxOptions
{
Enabled = true,
},
};
var invoice = Client.V1.Invoices.Create(invoiceOptions);
// Create an Invoice
var invoiceOptions = new InvoiceCreateOptions
{
CustomerAccount = customerId,
CollectionMethod = "send_invoice",
DaysUntilDue = 30,
AutomaticTax = new InvoiceAutomaticTaxOptions
{
Enabled = true,
},
};
var invoice = Client.V1.Invoices.Create(invoiceOptions);
// Create an Invoice Item with the Price, and Customer you want to charge
var invoiceItemOptions = new InvoiceItemCreateOptions
{
Customer = customerId,
Pricing = new InvoiceItemPricingOptions
{
Price = Prices["basic"],
},
Invoice = invoice.Id
};
Client.V1.InvoiceItems.Create(invoiceItemOptions);
// Create an Invoice Item with the Price and the customer-configured Account you want to charge
var invoiceItemOptions = new InvoiceItemCreateOptions
{
CustomerAccount = customerId,
Pricing = new InvoiceItemPricingOptions
{
Price = Prices["basic"],
},
Invoice = invoice.Id
};
Client.V1.InvoiceItems.Create(invoiceItemOptions);
// Send the Invoice
Client.V1.Invoices.SendInvoice(invoice.Id);
}
}
}
services.AddSingleton(new StripeClient("<>"));
"github.com/stripe/stripe-go/v84"
"github.com/stripe/stripe-go/v84/customer"
"github.com/stripe/stripe-go/v84/invoice"
"github.com/stripe/stripe-go/v84/invoiceitem"
// This is a public sample test API key.
// Don’t submit any personally identifiable information in requests made with this key.
// Sign in to see your own test API key embedded in code samples.
stripe.Key = "<>"
// This is a public sample test API key.
// Don’t submit any personally identifiable information in requests made with this key.
// Sign in to see your own test API key embedded in code samples.
client := stripe.NewClient("<>")
// You probably have a database to keep track of preexisting customers.
// But to keep things simple, we'll hardcode a list of fake customers.
customers := []MyCustomer{
{
StripeId: "cus_123456789",
Email: "jenny.rosen@example.com",
},
}
// Prices on Stripe model the pricing scheme of your business.
// Create Prices in the Dashboard or with the API before accepting payments
// and store the IDs in your database.
prices := []MyPrice{
{
Tier: "basic",
StripeId: "price_123456789",
},
{
Tier: "professional",
StripeId: "price_987654321",
},
}
customerID := ""
// Look up a customer in your database
for _, x := range customers {
if x.Email == email {
customerID = x.StripeId
break
}
}
if customerID == "" {
params := &stripe.CustomerParams{
Email: stripe.String("jenny.rosen@example.com"),
Description: stripe.String("Customer to invoice"),
}
cus, _ := customer.New(params)
newCus := MyCustomer{
Email: email,
StripeId: cus.ID,
}
customers = append(customers, newCus)
customerID = cus.ID
}
// Look up the Price ID from your database
var priceID string
for _, y := range prices {
if y.Tier == "basic" {
priceID = y.StripeId
break
}
}
// You probably have a database to keep track of preexisting customers.
// But to keep things simple, we'll hardcode a list of fake customers.
customers := []MyCustomer{
{
StripeId: "acct_123456789",
Email: "jenny.rosen@example.com",
},
}
// Prices on Stripe model the pricing scheme of your business.
// Create Prices in the Dashboard or with the API before accepting payments
// and store the IDs in your database.
prices := []MyPrice{
{
Tier: "basic",
StripeId: "price_123456789",
},
{
Tier: "professional",
StripeId: "price_987654321",
},
}
customerID := ""
// Look up a customer in your database
for _, x := range customers {
if x.Email == email {
customerID = x.StripeId
break
}
}
if customerID == "" {
params := &stripe.V2CoreAccountCreateParams{
ContactEmail: stripe.String("jenny.rosen@example.com"),
DisplayName: stripe.String("Customer to invoice"),
Configuration: &stripe.V2CoreAccountCreateConfigurationParams{
Customer: &stripe.V2CoreAccountCreateConfigurationCustomerParams{
Capabilities: &stripe.V2CoreAccountCreateConfigurationCustomerCapabilitiesParams{
AutomaticIndirectTax: &stripe.V2CoreAccountCreateConfigurationCustomerCapabilitiesAutomaticIndirectTaxParams{
Requested: stripe.Bool(true),
},
},
},
},
}
cus, _ := client.V2CoreAccounts.Create(context.TODO(), params)
newCus := MyCustomer{
Email: email,
StripeId: cus.ID,
}
customers = append(customers, newCus)
customerID = cus.ID
}
// Look up the Price ID from your database
var priceID string
for _, y := range prices {
if y.Tier == "basic" {
priceID = y.StripeId
break
}
}
// Create an Invoice
inParams := &stripe.InvoiceParams{
Customer: stripe.String(customerID),
CollectionMethod: stripe.String("send_invoice"),
DaysUntilDue: stripe.Int64(30),
AutomaticTax: &stripe.CheckoutSessionAutomaticTaxParams{Enabled: stripe.Bool(true)},
}
in, _ := invoice.New(inParams)
// Create an Invoice
inParams := &stripe.InvoiceCreateParams{
CustomerAccount: stripe.String(customerID),
CollectionMethod: stripe.String("send_invoice"),
DaysUntilDue: stripe.Int64(30),
AutomaticTax: &stripe.CheckoutSessionAutomaticTaxParams{Enabled: stripe.Bool(true)},
}
in, _ := client.V1Invoices.Create(context.TODO(), inParams)
// Create an Invoice Item with the Price, and Customer you want to charge
iiParams := &stripe.InvoiceItemParams{
Customer: stripe.String(customerID),
Pricing: &stripe.InvoiceItemPricingParams{
Price: sstripe.String(priceID),
},
Invoice: stripe.String(in.ID)
}
invoiceitem.New(iiParams)
// Create an Invoice Item with the Price and the customer-configured Account you want to charge
iiParams := &stripe.InvoiceItemCreateParams{
CustomerAccount: stripe.String(customerID),
Pricing: &stripe.InvoiceItemCreatePricingParams{
Price: sstripe.String(priceID),
},
Invoice: stripe.String(in.ID)
}
client.V1InvoiceItems.Create(context.TODO(), iiParams)
// Send the Invoice
params := &stripe.InvoiceSendInvoiceParams{}
invoice.SendInvoice(in.ID, params)
// Send the Invoice
params := &stripe.InvoiceSendInvoiceParams{}
client.V1Invoices.SendInvoice(context.TODO(), in.ID, params)
require github.com/stripe/stripe-go/v84 v84.4.0
"github.com/stripe/stripe-go/v84"
"github.com/stripe/stripe-go/v84/webhook"
stripe.Key = "<>"
import com.stripe.Stripe;
import com.stripe.model.Customer;
import com.stripe.param.CustomerCreateParams;
import com.stripe.StripeClient;
import com.stripe.model.v2.core.Account;
import com.stripe.param.v2.core.AccountCreateParams;
public static void main(String[] args) {
// This is a public sample test API key.
// Don’t submit any personally identifiable information in requests made with this key.
// Sign in to see your own test API key embedded in code samples.
Stripe.apiKey = "<>";
// Simulate data in the DB
customers.add(new MyCustomer("cus_123456789", "jenny.rosen@example.com"));
prices.add(new MyPrice("price_123456", "basic"));
prices.add(new MyPrice("price_789123", "professional"));
}
// This is a public sample test API key.
// Don’t submit any personally identifiable information in requests made with this key.
// Sign in to see your own test API key embedded in code samples.
public static StripeClient client = new StripeClient("<>");
public static void main(String[] args) {
// Simulate data in the DB
customers.add(new MyCustomer("acct_123456789", "jenny.rosen@example.com"));
prices.add(new MyPrice("price_123456", "basic"));
prices.add(new MyPrice("price_789123", "professional"));
}
static void sendInvoice(String email) {
Customer stripeCustomer;
// Look up a customer in your database
String customerId = null;
for (MyCustomer c : customers) {
if (c.getEmail().equals(email)) {
customerId = c.getStripeId();
}
}
// Create a new Customer
if(customerId == null) {
CustomerCreateParams params =
CustomerCreateParams
.builder()
.setEmail(email)
.setDescription("Customer to invoice")
.build();
try {
// Store the Customer ID in your database to use for future purchases
stripeCustomer = Customer.create(params);
customers.add(new MyCustomer(stripeCustomer.getId(), email));
customerId = stripeCustomer.getId();
} catch(StripeException e) {
System.out.println(e.getMessage());
}
}
static void sendInvoice(String email) {
Account stripeCustomer;
// Look up a customer in your database
String customerId = null;
for (MyCustomer c : customers) {
if (c.getEmail().equals(email)) {
customerId = c.getStripeId();
}
}
// Create a new customer-configured Account
if(customerId == null) {
AccountCreateParams params =
AccountCreateParams
.builder()
.setContactEmail(email)
.setDisplayName("Customer to invoice")
.setConfiguration(
AccountCreateParams.Configuration.builder()
.setCustomer(
AccountCreateParams.Configuration.Customer.builder()
.setCapabilities(
AccountCreateParams.Configuration.Customer.Capabilities.builder()
.setAutomaticIndirectTax(
AccountCreateParams.Configuration.Customer.Capabilities.AutomaticIndirectTax.builder()
.setRequested(true)
.build()
)
.build()
)
.build()
)
.build()
)
.build();
try {
// Store the Customer ID in your database to use for future purchases
stripeCustomer = client.v2().core().accounts().create(params);
customers.add(new MyCustomer(stripeCustomer.getId(), email));
customerId = stripeCustomer.getId();
} catch(StripeException e) {
System.out.println(e.getMessage());
}
}
try {
// Create an Invoice
InvoiceCreateParams invoiceParams =
InvoiceCreateParams
.builder()
.setCustomer(customerId)
.setCollectionMethod(InvoiceCreateParams.CollectionMethod.SEND_INVOICE)
.setDaysUntilDue(30L)
.setAutomaticTax(
InvoiceCreateParams.AutomaticTax.builder().setEnabled(true).build()
)
.build();
Invoice invoice = Invoice.create(invoiceParams);
try {
// Create an Invoice
InvoiceCreateParams invoiceParams =
InvoiceCreateParams
.builder()
.setCustomerAccount(customerId)
.setCollectionMethod(InvoiceCreateParams.CollectionMethod.SEND_INVOICE)
.setDaysUntilDue(30L)
.setAutomaticTax(
InvoiceCreateParams.AutomaticTax.builder().setEnabled(true).build()
)
.build();
Invoice invoice = client.v1().invoices().create(invoiceParams);
// Look up the Price ID from your database
String priceId = null;
for (MyPrice p : prices) {
if (p.getTier().equals("basic")) {
priceId = p.getStripeId();
}
}
// Create an Invoice Item with the Price and Customer you want to charge
InvoiceItemCreateParams invoiceItemParams =
InvoiceItemCreateParams.builder()
.setCustomer(customerId)
.setPricing(
InvoiceItemCreateParams.Pricing.builder()
.setPrice(priceId)
.build()
)
.setInvoice(invoice.getId())
.build();
try {
InvoiceItem.create(invoiceItemParams);
} catch(StripeException e) {
System.out.println(e.getMessage());
}
// Look up the Price ID from your database
String priceId = null;
for (MyPrice p : prices) {
if (p.getTier().equals("basic")) {
priceId = p.getStripeId();
}
}
// Create an Invoice Item with the Price and the customer-configured Account you want to charge
InvoiceItemCreateParams invoiceItemParams =
InvoiceItemCreateParams.builder()
.setCustomerAccount(customerId)
.setPricing(
InvoiceItemCreateParams.Pricing.builder()
.setPrice(priceId)
.build()
)
.setInvoice(invoice.getId())
.build();
try {
client.v1().invoiceItems().create(invoiceItemParams);
} catch(StripeException e) {
System.out.println(e.getMessage());
}
// Send an Invoice
InvoiceSendInvoiceParams params = InvoiceSendInvoiceParams.builder().build();
invoice.sendInvoice(params);
// Send an Invoice
InvoiceSendInvoiceParams params = InvoiceSendInvoiceParams.builder().build();
client.v1().invoices().sendInvoice(params);
Stripe.apiKey = "<>";
## Nächste Schritte
#### [Verwenden Sie eingehende Webhooks, um Updates in Echtzeit zu erhalten](https://docs.stripe.com/webhooks.md)
Überwachen Sie Ereignisse in Ihrem Stripe-Konto, damit Ihre Integration automatisch Reaktionen auslösen kann.
#### [Rechnungen anpassen](https://docs.stripe.com/invoicing/customize.md)
Mit der [Rechnungsvorlage](https://dashboard.stripe.com/account/billing/invoice) können Sie den Inhalt einer Rechnung anpassen. Sie können auch die bevorzugte Sprache eines/einer Kund/in festlegen und öffentliche Informationen in Ihren [Kontodetails](https://dashboard.stripe.com/settings/account/?support_details=true) angeben.
#### [Invoicing API](https://docs.stripe.com/api/invoices.md)
Erfahren Sie mehr über die Invoicing API.
#### [Stripe-CLI](https://docs.stripe.com/stripe-cli.md)
Die Stripe-CLI verfügt über mehrere Befehle, mit denen Sie Ihre Stripe-Anwendung über die Rechnungsstellung hinaus testen können.