Coupa-Lieferantenportal: aus der Bestellung eine Rechnung machen
Einkäufer auf Coupa wollen die Rechnung aus ihrer Bestellung heraus, in ihrem Portal. Diese Vorlage meldet sich mit Tresor-Zugang und zweitem Faktor an, öffnet die Bestellung, legt die Rechnung mit deiner Nummer und deinem Datum an, speichert sie als Entwurf und prüft, dass es ihn gibt. Ob das Absenden ein Klick oder eine Entscheidung ist, legst du fest.
Wer Bestellungen in Rechnungen umdreht
Das Portal hat sich der Einkäufer ausgesucht; der Lieferant bezahlt es in Minuten je Rechnung.
- Fakturierung, täglich
- Jede Lieferung wird im ERP zur Rechnung und danach noch einmal in Coupa: Bestellung öffnen, Rechnung anlegen, Nummer und Datum abtippen, anhängen, absenden. Die zweite Erfassung ist der Teil, den diese Vorlage bis zum Entwurf übernimmt.
- Lieferanten mehrerer Coupa-Einkäufer
- Jeder Einkäufer hat seine eigene Instanz und eigene Regeln. Dieselben Klicks, andere URLs, andere Pflichtfelder - die Vorlage wird je Einkäufer neu veröffentlicht.
- Streitfälle
- Eine als Disputed zurückgegebene Rechnung muss korrigiert und neu eingereicht werden. Den Grund zu lesen ist eine Extraktion; die Korrektur ist die Entscheidung einer Person.
- Was schiefgeht
- Nummer und Datum falsch abgetippt, eine Rechnung zur falschen Bestellung eingereicht, und zweite Faktoren, die am Telefon einer einzigen Person hängen.
So rechnet ein Lieferant in Coupa eine Bestellung ab
Aus Coupas öffentlicher Lieferantendokumentation. Einkäufer richten eigene Anforderungen ein, ein Schritt kann also mehr verlangen als hier steht.
-
Mit zweitem Faktor anmelden
E-Mail-Adresse und Passwort am Lieferantenportal, danach ein Code. Coupa verlangt für Lieferantenkonten eine Zwei-Faktor-Authentifizierung; eine Authenticator-App ist eine der angebotenen Methoden.
-
Die Bestellung öffnen
Orders listet die Bestellungen, die der Einkäufer geschickt hat, mit Status und den Aktionen je Zeile. Die Bestellung zu öffnen zeigt Kopf und Positionen.
-
Die Rechnung aus der Bestellung anlegen
Die Rechnungsaktion auf der Bestellung belegt Positionen und Beträge vor. Beim ersten Mal fragt das Portal nach rechnungsstellender Einheit und Zahlungsadresse, jedes Mal nach Rechnungsnummer und Datum.
-
Anhängen, was der Einkäufer verlangt
Manche Einkäufer verlangen die Rechnungs-PDF oder einen Scan als Anhang. Browserberg kann heute keine Datei in den Browser geben, ein Einkäufer mit dieser Regel braucht den Anhang also von einer Person, bevor abgesendet wird.
-
Als Entwurf sichern oder absenden
Save as draft hält die Rechnung zur Durchsicht; Submit schickt sie an den Einkäufer, und der Status läuft über Pending Approval nach Approved oder Disputed.
Vorlage, Zugang mit Geheimnis und ein Lauf
Der Entwurf wird geprüft, indem die Rechnungsliste gelesen wird - nicht dadurch, dass dem Speichern geglaubt wird. Der Webhook-Body setzt einen Parameter und eine Blockausgabe zu einem JSON-Objekt zusammen.
{
"title": "Coupa-Lieferantenportal: Rechnung aus einer Bestellung entwerfen",
"parameters": [
{
"key": "bestellnummer",
"description": "Die Bestellung, zu der abgerechnet wird, wie unter Orders angezeigt",
"required": true
},
{
"key": "rechnungsnummer",
"description": "Deine Rechnungsnummer",
"required": true
},
{
"key": "rechnungsdatum",
"description": "Rechnungsdatum (JJJJ-MM-TT)",
"required": true
},
{
"key": "debitoren_webhook",
"description": "Endpunkt, der erfährt, dass der Entwurf existiert",
"required": true
}
],
"runSequentially": true,
"sequentialKey": "cred_coupa_supplier",
"blocks": [
{
"blockType": "login",
"label": "Anmelden",
"credentialId": "cred_coupa_supplier",
"url": "https://supplier.coupahost.com/"
},
{
"blockType": "action",
"label": "Bestellung_oeffnen",
"instruction": "Öffne Orders und darin die Bestellung {{ bestellnummer }}"
},
{
"blockType": "extraction",
"label": "Bestellung",
"instruction": "Kopf und Positionen der Bestellung {{ bestellnummer }}: Kunde, Währung, Bestellsumme sowie je Position Bezeichnung, Menge, Einzelpreis und Positionssumme",
"schema": {
"type": "object",
"properties": {
"kunde": {
"type": "string"
},
"waehrung": {
"type": "string"
},
"summe": {
"type": "number"
},
"positionen": {
"type": "array",
"items": {
"type": "object",
"properties": {
"bezeichnung": {
"type": "string"
},
"menge": {
"type": "number"
},
"einzelpreis": {
"type": "number"
},
"positionssumme": {
"type": "number"
}
},
"required": [
"bezeichnung",
"menge"
]
}
}
},
"required": [
"positionen"
]
}
},
{
"blockType": "action",
"label": "Entwurf_anlegen",
"instruction": "Wähle auf der Bestellung Create Invoice, gib auf Nachfrage die rechnungsstellende Einheit und die Zahlungsadresse an, setze die Rechnungsnummer auf {{ rechnungsnummer }} und das Rechnungsdatum auf {{ rechnungsdatum }}, lass die vorbelegten Positionen stehen und wähle dann Save as draft"
},
{
"blockType": "validation",
"label": "Entwurf_da",
"criterion": "Unter Invoices steht ein Entwurf {{ rechnungsnummer }} zur Bestellung {{ bestellnummer }}, dessen Summe der Bestellsumme entspricht"
},
{
"blockType": "http_request",
"label": "Debitoren_melden",
"method": "POST",
"url": "{{ debitoren_webhook }}",
"headers": {
"content-type": "application/json"
},
"body": "{\"rechnung\": \"{{ rechnungsnummer }}\", \"bestellung\": {{ Bestellung_output }}}"
}
]
}
import { Browserberg } from '@browserberg/sdk';
import vorlage from './coupa-rechnung-entwerfen.json' with { type: 'json' };
const bb = new Browserberg({
apiKey: process.env.BROWSERBERG_API_KEY,
baseUrl: 'https://browserberg.com',
});
const zugang = await bb.credentials.create({
name: 'Coupa-Lieferantenportal',
url: 'https://supplier.coupahost.com/',
fields: { email: 'fakturierung@example.de', password: process.env.COUPA_PASSWORD },
totpSeed: process.env.COUPA_TOTP_SEED, // Coupa verlangt 2FA auf Lieferantenkonten
nonSecretFields: ['email'],
});
const wf = await bb.workflows.publish({
...vorlage,
blocks: vorlage.blocks.map((b) =>
b.blockType === 'login' ? { ...b, credentialId: zugang.id } : b),
});
await using session = await bb.sessions.create();
const lauf = await bb.workflows.run(wf.workflowId, {
sessionId: session.id,
inputs: {
bestellnummer: 'PO-88231',
rechnungsnummer: 'RE-2026-1187',
rechnungsdatum: '2026-09-08',
debitoren_webhook: 'https://debitoren.intern.example/hooks/coupa-entwurf',
},
});
console.log(lauf.status, lauf.endedBy);
Zweiter Faktor, das Absenden und was abgelehnt wird
Browserberg gehört nicht zu Coupa Software. Das Lieferantenportal ist Coupas Produkt, und diese Seite beschreibt, wie du es mit dem Lieferantenkonto bedienst, das du selbst hältst.
Anmelden mit einem Geheimnis
Coupa verlangt auf Lieferantenkonten einen zweiten Faktor. Mit einer Authenticator-App wandert deren Geheimnis als totpSeed in den Tresor, und der Login-Block erzeugt den Code bei der Anmeldung; das Geheimnis erreicht weder ein Modell noch die Ausgabe eines Laufs. Bei Codes per SMS oder E-Mail gibt es nichts zu vertresoren, und die Anmeldung wird zum Schritt einer Person in der Live-Ansicht, bevor der Lauf startet.
Warum die Vorlage beim Entwurf haltmacht
Eine Rechnung abzusenden ist ein Submit-Effekt und liefe unter der Standardrichtlinie; abgelehnt werden Zahlungen, Zerstörendes und Massenexporte, und eine Rechnungsabsendung ist nichts davon. Die Vorlage speichert trotzdem einen Entwurf, aus zwei Gründen, die mit den Gates nichts zu tun haben. Erstens verlangen viele Einkäufer einen Anhang, und der Browser kann heute keine Datei in die Seite geben. Zweitens ist eine an einen Kunden gehende Rechnung ein Dokument, das dein Finanzteam vielleicht einmal im Portal ansehen will, bevor es rausgeht. Trifft beides nicht zu, ändere die letzte Anweisung in Entwurf_anlegen von Save as draft auf Submit und behalte die Validierung - angepasst auf den abgesendeten Status.
Was ohnehin abgelehnt wird
Ein Bedienelement, das eine Rechnung storniert oder löscht, oder eine Aktion an einer strittigen Rechnung, die sich als zerstörend liest, wird unter der Standardrichtlinie abgelehnt, wie eine Anweisung auch formuliert ist. Unter propose wird so ein Schritt einer Person vorgelegt. Rechnungsnummer und Datum zu tippen wird nie geblockt.
Sitzung
Coupa meldet nach einer Zeit ohne Aktivität ab; die Vorlage erledigt ihre Arbeit in einem Durchgang, und runSequentially mit dem Zugang als Schlüssel verhindert, dass sich zwei Läufe die Anmeldung teilen.
Fakten, auf die sich die Vorlage stützt
| Portal | Coupa Supplier Portal auf supplier.coupahost.com Coupa Supplier Portal |
|---|---|
| Zweiter Faktor | Für Lieferantenkonten ist eine Zwei-Faktor-Authentifizierung Pflicht; eine Authenticator-App gehört zu den Methoden Coupa Supplier Portal |
| Rechnung aus Bestellung | Die Rechnungsaktion auf einer Bestellung belegt die Rechnung aus den Bestellpositionen vor Coupa-Lieferantendokumentation |
| Entwurf und Absenden | Eine Rechnung kann vor dem Absenden als Entwurf gesichert werden; Status nach dem Absenden sind unter anderem Pending Approval, Approved und Disputed Coupa-Lieferantendokumentation |
| Anhänge | Abhängig vom Einkäufer; wo einer verlangt wird, hängt eine Person die Datei an, weil die Dateiübergabe aus Browserberg heute nicht umgesetzt ist |
Stand: 2026-09-08
Hinweis · Aus Coupas öffentlicher Dokumentation entworfen
Die Bestellansicht, die Rechnungsaktion und der Entwurfsstatus sind so beschrieben, wie Coupas öffentliche Lieferantendokumentation sie zum oben genannten Stand darstellt. Die Vorlage wurde beim Schreiben dieser Seite nicht gegen ein echtes Coupa-Lieferantenkonto geprüft, und jede Einkäufer-Instanz kann Felder verlangen, von denen diese Seite nichts weiß.
Fragen aus der Fakturierung
Kann sie die Rechnung absenden statt sie zu entwerfen?
Ja, indem du die letzte Anweisung und die Validierung änderst. Submit ist ein Submit-Effekt und läuft unter der Standardrichtlinie. Mach das, sobald feststeht, dass die Anhangsregel deines Einkäufers auch ohne Datei erfüllt ist.
Was, wenn der Einkäufer die Rechnungs-PDF als Anhang verlangt?
Dann ist der Entwurf heute das Ende der Fahnenstange, weil die Dateiübergabe in den Browser nicht umgesetzt ist. Eine Person öffnet den Entwurf, hängt an und sendet ab; das Laufprotokoll zeigt, dass und wann der Entwurf entstand.
Deckt sie Gutschriften ab?
Diese Vorlage nicht. Eine Gutschrift entsteht aus einer Rechnung und nicht aus einer Bestellung, und die Regeln der Einkäufer unterscheiden sich; schreib sie als eigenen Workflow.
Mehrere Einkäufer auf Coupa: ein Workflow?
Einer je Einkäufer. Der Freigabebereich des Zugangs ist die Portal-URL, die Pflichtfelder der Einkäufer unterscheiden sich, und ein Fehlschlag soll einen Einkäufer benennen.
Sieht das Modell das Geheimnis jemals?
Nein. Codes entstehen serverseitig aus dem Geheimnis in dem Moment, in dem die Anmeldung einen braucht. Der Planer sieht einen Platzhalter; der Wert wird im Executor und nur auf der freigegebenen Seite getippt.
Weiterlesen
- TOTP-Generator Prüfen, dass ein Geheimnis die richtigen Codes liefert, bevor es in den Tresor geht
- SAP Ariba Lieferantenportal Bestellungen bestätigen im anderen großen Einkäufernetzwerk
- XRechnung und ZUGFeRD Validator Die E-Rechnung prüfen, die dein ERP erzeugt hat
- Live-Ansicht und Übernahme Für Konten mit SMS-Code und für den Schritt Anhängen und Absenden
Die nächste Rechnung so entwerfen
Fünf Browserstunden, keine Karte. Je Einkäufer veröffentlichen, je Bestellung laufen lassen, und Submit nur dort einer Person überlassen, wo es eine braucht.