• Zuletzt bearbeitet am: 05 August 2021

Integration von Rechnungen in Ihr ERP

Schrittweise Anweisungen zur Integration Ihrer Coupa-Rechnungen in Ihr ERP.

Einleitung

Sie können dieses Dokument auch als Microsoft Word-Dokument herunterladen:Coupa Invoices to ERP.docx

Allgemeine Überlegungen zur API-Konfiguration

Begrenzte Nutzlast: Felder und API-Filter

Coupas API gibt standardmäßig viele Daten zurück (z. B. vollständige Objekte für zugehörige Objekte). Die API-Rückgabenutzlasten können sehr groß und daher langsam sein. Dies kann ein Problem für Kunden sein, die keine fremden Daten benötigen, ganz zu schweigen vom unnötigen Ressourcenverbrauch.

Um die Dinge zu vereinfachen, hat Coupa das Konzept der "Felder"-Parameter und API-Filter, die eine begrenzte JSON- oder XML-Antwort anstelle des gesamten Schemas und aller Zuordnungen für ein Objekt zurückgeben.

In diesem Artikel beschriebene Anwendungsfälle

Die Rechnungen haben normalerweise eine interne Nummer im ERP. In diesem Dokument gehen wir davon aus, dass diese ERP-Dokumentnummer ein benutzerdefiniertes Feld in der Coupa-Rechnungskopfzeile ist. In unserem Beispiel cf_erp_invoice_number wurde das benutzerdefinierte Feld mit dem Namen ERP Invoice Numbererstellt. Dieser Artikel beschreibt die 3 verschiedenen Optionen zur Integration von Coupa-Rechnungen in Ihr ERP (für die Erstellung und Aktualisierung).

Diese Optionen ändern die Art und Weise, wie Sie Ihre Integrationen von Coupa aus überwachen können:

  • Option 1: Einfache Überwachung basierend auf benutzerdefinierten Feldern, die Sie in der Rechnungskopfzeile definieren
  • Option 2: Erweiterte Überwachung mit Integrationsverlaufsdatensätzen
  • Option 3: Nutzen Sie die vollständige Überwachung der Coupa-Integrationen

Für die 3 Optionen werden die Coupa-Rechnungen basierend auf dem Export-Kennzeichen in das ERP übertragen. Im Falle eines Fehlers ist bei der Integration einer Rechnung eine manuelle Änderung auf der Rechnung in der Coupa-Benutzeroberfläche erforderlich: Diese Änderung setzt das Export-Kennzeichen zurück und die Rechnung wird daher beim nächsten Durchlauf berücksichtigt.

Tipp

Coupa schlägt vor, dass Sie sich an den Coupa-Support wenden, damit dieser diese Option aktiviert:Für jede Änderungdie Rechnung für den letzten Export am zurücksetzen. Diese Einstellung gilt nur für die Benutzeroberfläche. Änderungen, die über die API vorgenommen werden, ändern nicht den Status Exportiert.

Dedizierte Integration und Kontakt für API erstellen

Für die Optionen 2 und 3 müssen Sie Folgendes erstellen:

  1. Eine spezielle Integration für jede API-Orchestrierung, die Sie implementieren
    invoice-integration-01.png
  2. Ein oder mehrere Integrationskontakte für jede Integration, die bei einer fehlgeschlagenen Integration gewarnt werden
    invoice-integration-contact.png
Tipp

Coupa empfiehlt, dass Sie sich an den Coupa-Support wenden, damit dieser diese Option aktiviert: Link zum Integrationsverlaufnach Dokumenttypaktivieren. Diese Einstellung fügt auf der Konfigurationsseite einen Link hinzu, um den vollständigen Integrationsverlauf pro Dokumenttyp anzuzeigen.

Option 1: Einfache Überwachung basierend auf benutzerdefinierten Feldern

Beschreibung

In diesem Szenario fügen wir für jede Rechnung den aktuellen Integrationsstatus in ein oder mehrere benutzerdefinierte Felder der Rechnungskopfzeile ein. Wir haben das benutzerdefinierte Feld cf-integration-status mit dem NamenIntegration Statushinzugefügt. Verwenden Sie die Standardtabelle für Rechnungsdaten, um den Integrationsstatus Ihrer Dokumente unter dieser URL nachzuverfolgen: https://<your instance hostname>/invoices.

invoices-01.png

Orchestrierungsdiagramm

orchestration-01.png

Schritte/API-Aufrufdetails

Schritt 1

Rufen Sie die Liste und die Details der Coupa-Rechnungen ab, die im ERP erstellt/aktualisiert werden sollen.

Zu den Auswahlkriterien gehören das Exportkennzeichen und der Rechnungsstatus.

Methode

GET

API

https://<your instance hostname>/api/invoices/

Abfrageparameter

fields=<your API filter name>
offset=10
exported=false
status[in]=approved,voided

Beispiel-URL

https://<your instance hostname>/api/invoices?filter=<your API filter name>&offset=10&exported=false&status[in]=approved,voided

Abfrage Textstichprobe

k. A.

Antworttyp

response-01.png

Schritt 2

Einzelne Rechnung als exportiert markieren

Methode

PUT

API

https:///api/invoices/

Abfrageparameter

exported=true
fields=["id","exported"]

Beispiel-URL

https://<your instance hostname>/api/invoices/<Invoice id>?exported=true&fields=["id","exported"]

Abfrage Textstichprobe

k. A.

Antworttyp


{
		"id": <Invoice id>,
		"exported": true
}

Schritt 3

Benutzerdefinierte Felder für die Berichterstellung und ERP-Dokumentnummer aktualisieren

Methode

PUT

API

https://<your instance hostname>/api/invoices/<Invoice id>

Abfrageparameter

fields=["id","exported",{ "custom_fields": {} }]

Beispiel-URL

https://<your instance hostname>/api/invoices/<Invoice id>?fields=["id","exported",{ "custom_fields": {} }]

Abfrage Textstichprobe


{ 
		"id": <Invoice_id>,
		"exported": true,
		"custom-fields": {
		"cf-erp-invoice-number": "<Invoice number in the ERP>",
		"cf-integration-status": "Success: The Invoice was replicated in your ERP"
			}
	}

oder


{
		"custom-fields": {
		"cf-integration-status": "Failure: The Invoice could not be replicated in your ERP"
	}
}

Antworttyp


{ 
		"id": <Invoice_id>,
		"exported": true,
		"custom-fields": {
				"cf-erp-invoice-number": "<Invoice number in the ERP>",
				"cf-integration-status": "Success: The Invoice was replicated in your ERP"
		}
}

oder


{
		"id": <Invoice id>,
		"exported": true,
		"custom-fields": {
				"cf-erp-invoice-number": null,
				"cf-integration-status": "Error[2] : The Invoice was properly replicated in your ERP"
		}
}

Option 2: Erweiterte Überwachung mit Integrationsverlauf

Beschreibung

In diesem Szenario gilt für jede Rechnung Folgendes:

  • Beheben Sie den vorherigen Integrationsverlaufsdatensatz für das Dokument
  • Integrationsverlaufsdatensatz erstellen
  • Erstellen Sie im Fehlerfall eine Warnung für den Integrationskontakt.

Jedes Dokument enthält Details zum Integrationsverlaufinvoice-int-hist-02.png

invoice-int-hist-01.png

Verwenden Sie die Datentabelle für den Standardrechnungsintegrationsverlauf, um den Integrationsstatus Ihrer Dokumente nachzuverfolgen. Sie finden es unter: https://<your instance hostname>/integration_history_records/invoices.

invoice-int-records-01.png

Sie können einen Filter für den Antwortcode verwenden, um zwischen erfolgreich replizierten Dokumenten und fehlgeschlagenen Dokumenten zu unterscheiden.

invoice-int-records-02.png

Orchestrierungsdiagramm

orchestration-02.png

Schritte/API-Aufrufdetails

Schritt 1

Rufen Sie die Liste und die Details der Coupa-Rechnungen ab, die im ERP erstellt/aktualisiert werden sollen.
Zu den Auswahlkriterien gehören das Exportkennzeichen und der Rechnungsstatus.

Methode

GET

API

https://<your instance hostname>/api/invoices/

Abfrageparameter

filter=<your API filter name>
offset=10
exported=false
status[in]=approved,voided

Beispiel-URL

https://<your instance hostname>/api/invoices?filter=<your API filter name>&offset=10&exported=false&status[in]=approved,voided

Abfrage Textstichprobe

k. A.

Antworttyp

response-02.png

Schritt 2

Einzelne Rechnung als exportiert markieren

Methode

PUT

API

https://<your instance hostname>/api/invoices/<Invoice id>

Abfrageparameter

exported=true
fields=["id","exported"]

Beispiel-URL

https://<your instance hostname>/api/invoices/<Invoice id>?exported=true&fields=["id","exported"]

Abfrage Textstichprobe

k. A.

Antworttyp


{
		"id": <Invoice id>,
		"exported": true
}

Hier erfolgt die Erstellung/Aktualisierung der Rechnung im ERP.

Schritt 3a

Ungelösten Integrationsverlaufsdatensatz erhalten

Methode

GET

API

https://<your instance hostname>/api/integration_history_records

Abfrageparameter

resolved=false
document-type=InvoiceHeader
document-id=<Invoice id>
fields=["id","document-id","status","resolved"]

Beispiel-URL

https://<your instance hostname>/api/integration_history_records?resolved=false&document-type=InvoiceHeader&document-id=<Invoice id>&fields=["id","document-id","status","resolved"]

Abfrage Textstichprobe

k. A.

Antworttyp


[
		{
				"id": <Old Integration History Record id>,
				"document-id": <Invoice id>,
				"status": "Error",
				"resolved": false
		}
]

Schritt 3b

Vorherigen Integrationsverlaufsdatensatz auflösen

Methode

PUT

API

https://<your instance hostname>/api/integration_history_records/<Old Integration History Record id>/resolve

Abfrageparameter

fields=["id","document-id","status","resolved"]

Beispiel-URL

https://<your instance hostname>/api/integration_history_records/<Old Integration History Record id>/resolve?fields=["id","document-id","status","resolved"]

Abfrage Textstichprobe

k. A.

Antworttyp


[
		{
				"id": <Old Integration History Record id>,
				"document-id": <Invoice id>,
				"status": "Error",
				"resolved": true
		}
]

Schritt 4a

Benutzerdefinierte Felder für ERP-Dokumentnummer aktualisieren (erfolgreich)

Methode

PUT

API

https://<your instance hostname>/api/invoices/<Invoice id>

Abfrageparameter

fields=["id","exported",{ "custom_fields": {} }]

Beispiel-URL

https://<your instance hostname>/api/invoices/<Invoice id>&fields=["id","exported",{ "custom_fields": {} }]

Abfrage Textstichprobe


{
		"custom-fields": {
		"cf-erp-invoice-number": "<Invoice number in the ERP>"
		}
}

Antworttyp


{
		"id": <Invoice id>,
		"exported": true,
		"custom-fields": {
		"cf-erp-invoice-number": "<Invoice number in the ERP>"
		}
}

Schritt 4b

Integrationsverlauf erstellen (erfolgreich)

Methode

PUT

API

https://<your instance hostname>/api/integration_history_records

Abfrageparameter

fields=["id","document-id","status"]

Beispiel-URL

https://<your instance hostname>/api/integration_history_records?fields=["id","document-id","status"]

Abfrage Textstichprobe


{
		"document-type": "InvoiceHeader",
		"document-id": <Invoice id>,
		"document-status":"<Invoice status>",
		"contact-alert-type": "Functional",
		"status": "Success",
		"integration": {"code":"<Customer Integration id>"},
		"responses": [
				{
						"response-code": "Success-1234",
						"response-message": "The integration in the ERP went well"
				}
		]
}

Antworttyp


{
		"id": <New Integration History Record id>,
		"document-id": <Invoice id>,
		"status": "Success"
}

Schritt 4c

Integrationsverlauf erstellen (Fehler) und an Integrationskontakt warnen

Methode

PUT

API

https://<your instance hostname>/api/integration_history_records/create_alert

Abfrageparameter

fields=["id","document-id","status"]

Beispiel-URL

https://<your instance hostname>/api/integration_history_records/create_alert?fields=["id","document-id","status"]

Abfrage Textstichprobe


{
		"document-type": "InvoiceHeader",
		"document-id": <Invoice id>,
		"document-status":"<Invoice status>",
		"contact-alert-type": "Functional",
		"status": "Error",
		"integration": {"code":"<Customer Integration id>"},
		"responses": [
				{
						"response-code": "Failure-CC",
						"response-message": "Header: Period is currently closed for Booking"
				},
				{
				"response-code": "Failure-CC",
				"response-message": "Line 1: Cost center CA234 is closed for invoicing"
				}
		]
}

Antworttyp


{
		"id": <New Integration History Record id>,
		"document-id": <Invoice id>,
		"status": "Error"
}

Option 3: Nutzen Sie die vollständige Überwachung der Coupa-Integrationen

Beschreibung

In diesem Szenario erstellen wir einen Integrationslauf, der

  • Der Status der Integration (ausstehend/gestartet/fehlerhaft/erfolgreich/fehlgeschlagen)
  • Die Gesamtzahl der verarbeiteten Rechnungen
  • Anzahl von Erfolgen und Fehlern
  • Die Liste der Integrationsfehler und deren Status (behoben oder nicht)

Für jede Rechnung:

  • Beheben Sie den vorherigen Integrationsverlaufsdatensatz für das Dokument
  • Integrationsverlaufsdatensatz erstellen
  • Erstellen Sie im Fehlerfall einen Integrationsfehler und eine Warnung an den Integrationskontakt.

Sie können alle Integrationsläufe für Ihre Integration mit dieser URL überwachen:https://<your instance hostname>/integrations/<your integration id>/integration_runs.

po-api-integration-01.png

Sie verwenden die Standardtabelle für Rechnungsintegrationsfehler, um alle Rechnungen mit Integrationsfehler aufzulisten, deren Lösung aussteht. Sie finden es unter: https://<your instance hostname>/integration_errors.

inoice-int-records-03.png

Orchestrierungsdiagramm

orchestration-03.png

Schritte/API-Aufrufdetails

Schritt 1

Integrationslauf erstellen

Methode

POST

API

https://<your instance hostname>/api/integration_runs

Abfrageparameter

k. A.

Abfrage Textstichprobe


{
		"integration": {
				"code": "{{integration_code}}"
		}
}

Antworttyp


{
		"id": <Integration Run ID>,
		...
}

Schritt 2

Rufen Sie die Liste und die Details der Coupa-Rechnungen ab, die im ERP erstellt/aktualisiert werden sollen.
Zu den Auswahlkriterien gehören das Exportkennzeichen und der Rechnungsstatus.

Methode

GET

API

https://<your instance hostname>/api/invoices/

Abfrageparameter

filter=<your API filter name>
offset=10
exported=false
status[in]=approved,voided

Beispiel-URL

https://<your instance hostname>/api/invoices?filter=<your API filter name>&offset=10&exported=false&status[in]=approved,voided

Abfrage Textstichprobe

k. A.

Antworttyp

response-03.png

Schritt 3

Integrationslauf starten

Methode

PUT

API

https://<your instance hostname>/api/integration_runs/<Integration Run ID>/run

Abfrageparameter

k. A.

Abfrage Textstichprobe


{
		"total_records": <Total Number of Invoices from Step 2>
}

Antworttyp


{
		"id": <Integration Run ID>,
		...
}

Schritt 4

Einzelne Rechnung als exportiert markieren

Methode

PUT

API

https://<your instance hostname>/api/invoices/<Invoice id>

Abfrageparameter

exported=true
fields=["id","exported"]

Beispiel-URL

https://<your instance hostname>/api/invoices/<Invoice id>?exported=true&fields=["id","exported"]

Abfrage Textstichprobe

k. A.

Antworttyp


{
		"id": <Invoice id>,
		"exported": true
}

Hier erfolgt die Erstellung/Aktualisierung der Rechnung im ERP.

Schritt 5a

Ungelösten Integrationsverlaufsdatensatz erhalten

Methode

GET

API

https://<your instance hostname>/api/integration_history_records

Abfrageparameter

resolved=false
document-type=InvoiceHeader
document-id=<Invoice id>
fields=["id","document-id","status","resolved"]

Beispiel-URL

https://<your instance hostname>/api/integration_history_records?resolved=false&document-type=InvoiceHeader&document-id=<Invoice id>&fields=["id","document-id","status","resolved"]

Abfrage Textstichprobe

k. A.

Antworttyp


[
		{
				"id": <Old Integration History Record id>,
				"document-id": <Invoice id>,
				"status": "Error",
				"resolved": false
		}
]

Schritt 5b

Vorherigen Integrationsverlaufsdatensatz auflösen

Methode

PUT

API

https://<your instance hostname>/api/integration_history_records/<Old Integration History Record id>/resolve

Abfrageparameter

fields=["id","document-id","status","resolved"]

Beispiel-URL

https://<your instance hostname>/api/integration_history_records/<Old Integration History Record id>/resolve?fields=["id","document-id","status","resolved"]

Abfrage Textstichprobe

k. A.

Antworttyp


[
		{
				"id": <Old Integration History Record id>,
				"document-id": <Invoice id>,
				"status": "Error",
				"resolved": true
		}
]

Schritt 6a

Ungelösten Integrationsfehlerdatensatz abrufen

Methode

GET

API

https://<your instance hostname>/api/integration_errors

Abfrageparameter

resolved=false
document-type=InvoiceHeader
document-id=<Invoice id>

Beispiel-URL

https://<your instance hostname>/api/integration_errors?resolved=false&document-type=InvoiceHeader&document-id=<Invoice id>

Abfrage Textstichprobe

k. A.

Antworttyp


[
		{
				"id": <Old Integration Error Record id>,
				"document-type": ”InvoiceHeader”,
				"document-id": <Invoice id>,
				"status": "Error",
				"resolved": false
				...
		}
]

Schritt 6b

Vorherigen Integrationsverlaufsdatensatz auflösen

Methode

PUT

API

https:///api/integration_errors//solve

Abfrageparameter

k. A.

Abfrage Textstichprobe

k. A.

Antworttyp


[
		{
				"id": <Old Integration Error Record id>,
				"document-id": <Invoice id>,
				"status": "Error",
				"resolved": true
				...
		}
]

Schritt 7a

Benutzerdefinierte Felder für ERP-Dokumentnummer aktualisieren (erfolgreich)

Methode

PUT

API

https://<your instance hostname>/api/invoices/<Invoice id>

Abfrageparameter

fields=["id","exported",{ "custom_fields": {} }]

Beispiel-URL

https://<your instance hostname>/api/invoices/<Invoice id>?fields=["id","exported",{ "custom_fields": {} }]

Abfrage Textstichprobe


{
		"custom-fields": {
		"cf-erp-invoice-number": "<Invoice number in the ERP>"
		}
}

Antworttyp


{
		"id": <Invoice id>,
		"exported": true,
		"custom-fields": {
				"cf-erp-invoice-number": "<Invoice number in the ERP>"
		}
}

Schritt 7b

Integrationsverlauf erstellen (erfolgreich)
Sie muss auf den Integrationslauf verweisen

Methode

PUT

API

https://<your instance hostname>/api/integration_history_records

Abfrageparameter

fields=["id","document-id","status"]

Beispiel-URL

https://<your instance hostname>/api/integration_history_records?fields=["id","document-id","status"]

Abfrage Textstichprobe


{
		"document-type": "InvoiceHeader",
		"document-id": <Invoice id>,
		"document-status":"<Invoice status>",
		"contact-alert-type": "Functional",
		"status": "Success",
		"integration": {"code":"<Customer Integration id>"},
		"integration-run": {"id":<Integration Run ID>},
		"responses": [
				{
						"response-code": "Success-1234",
						"response-message": "The integration in the ERP went well"
				}
		]
}

Antworttyp


{
		"id": <New Integration History Record id>,
		"document-id": <Invoice id>,
		"status": "Success"
}

Schritt 7c

Integrationsfehler erstellen und auf Integrationskontakt aufmerksam machen
Sie muss auf den Integrationslauf verweisen

Methode

PUT

API

https://<your instance hostname>/api/integration_errors/create_alert

Abfrageparameter

k. A.

Abfrage Textstichprobe


{
		"document-type": "InvoiceHeader",
		"document-id": <Invoice id>,
		"document-status":"<Invoice status>",
		"contact-alert-type": "Functional",
		"status": "Error",
		"integration-run-id": "<Integration Run ID>",
		"responses": [
				{
						"response-code": "Failure-CC",
						"response-message": "Header: Period is currently closed for Booking"
				},
				{
						"response-code": "Failure-CC",
						"response-message": "Line 1: Cost center CA234 is closed for invoicing"
				}
		]
}

Antworttyp


{
		"id": <New Integration Error Record id>,
		"document-id": <Invoice id>,
		"status": "Error"
		...
}

Schritt 8

Integrationslauf erfolgreich beenden

Methode

PUT

API

https://<your instance hostname>/api/integration_runs/<Integration Run ID>/success

Abfrageparameter

k. A.

Abfrage Textstichprobe

k. A.

Antworttyp


{
		"id": <Integration Run ID>,
		"status": "successful"
		...
}

Wenn während des Integrationslaufs ein allgemeiner Fehler auftritt.

Schritt x

Fehler für den Integrationslauf auslösen

Methode

PUT

API

https://<your instance hostname>/api/integration_runs/<Integration Run ID>/fail

Abfrageparameter

k. A.

Abfrage Textstichprobe

k. A.

Antworttyp


{
		"id": <Integration Run ID>,
		"status": "failed"
		...
}

Parts or all of this page might have been machine-translated. We apologize for any inaccuracies.

Vergleichbare Artikel


Die Coupa Core-API

Unsere RESTful-API bietet robusten Zugriff zum Lesen, Bearbeiten oder Integrieren Ihrer Daten mit der Coupa-Plattform.

Erste Schritte mit der API

Allgemeine Informationen zur Verwendung der Coupa-API und wann Sie CSV verwenden sollten.

Übergang zu OAuth 2.0 und OIDC

Coupa veraltet ältere API-Schlüssel und erfordert die Verwendung von OAuth 2.0 / OIDC. Ab R34 werden keine neuen API-Schlüssel ausgegeben und API-Schlüssel werden mit R35 nicht mehr unterstützt.

Bauen Sie auf der Coupa-Plattform auf

Unsere API-basierte offene Integrationsplattform ermöglicht Technologiepartnern und unabhängigen Softwareanbietern (ISVs) die Integration ihrer Produkte in Coupa