Aktualisiert am 10 Min. Lesezeit Von Marvin Frankenfeld

Fotoüberweisung unter Android mit Kotlin integrieren

Diese Anleitung zeigt, wie Sie mit Kotlin und dem Docutain SDK 1.9.0.0 einen produktionsreifen Prozess von der Rechnung bis zum vorausgefüllten Überweisungsformular umsetzen.

Nutzer können eine Papierrechnung scannen, ein PDF oder Bild importieren oder einen GiroCode erfassen. Docutain gibt die erkannten Zahlungsdaten als JSON zurück und liefert dabei ausschließlich gültige IBANs. Die Banking-App kann anschließend ihre Geschäftsregeln anwenden und das eigene Überweisungsformular vorausfüllen.

Erkennung und IBAN-Validierung laufen lokal auf dem Gerät. Nutzerbestätigung, bankeigene Zahlungsregeln, Authentifizierung und die eigentliche SEPA-Überweisung bleiben vollständig unter Kontrolle der Banking-App.

SDK-Version
Android 1.9.0.0
Mindestversion
Android 6.0 / API 23
Eingaben
Kamera, PDF, Bild, GiroCode
Verarbeitung
100 % lokal und offline
Direkt zum Kotlin-Setup

Der Zahlungsprozess im Überblick

Eine robuste Fotoüberweisung trennt Datenerfassung und Zahlungsfreigabe klar voneinander:

  1. Der Nutzer öffnet den Zahlungsprozess in der Banking-App.
  2. Docutain scannt oder importiert die Rechnung und prüft, ob ein GiroCode vorhanden ist.
  3. Ist kein nutzbarer GiroCode vorhanden, extrahiert das SDK die Zahlungsdaten aus dem sichtbaren Rechnungstext.
  4. Das SDK gibt strukturierte JSON-Daten an die Host-App zurück.
  5. Die App wendet ihre Geschäftsregeln an und zeigt die Daten zur Kontrolle, bevor ihr etablierter Freigabeprozess startet.

Damit erhalten Nutzer einen gemeinsamen Einstieg für Rechnungen mit und ohne QR-Code. Die Zahlungsabwicklung bleibt außerhalb des SDK und innerhalb der bestehenden Kontrollmechanismen der Bank.

Was sich mit Docutain SDK 1.9 ändert

Seit Version 1.9 kann Photo Payment GiroCode-Daten direkt extrahieren. Die Option allowGiroCode ist standardmäßig aktiviert; ein separater Barcode-Prozess ist für diesen Anwendungsfall daher nicht mehr nötig.

  • Ein gemeinsamer Prozess: GiroCode und Rechnungs-OCR werden innerhalb derselben Fotoüberweisung verarbeitet.
  • Teilen und Öffnen: Unter Android lassen sich eingehende PDFs und Bilder über openWithIntent weiterreichen.
  • Passende Nutzerführung: Die Photo-Payment-Standardinhalte für Onboarding und Scan-Tipps berücksichtigen auch GiroCodes.
  • Lokale Verarbeitung: QR-Daten und Zahlungsinformationen aus der Rechnung werden auf dem Gerät ausgewertet.

Android-Voraussetzungen

KomponenteAnforderung für SDK 1.9.0.0
SpracheKotlin in dieser Anleitung; Java wird ebenfalls unterstützt
Android-MindestversionAndroid 6.0 / API-Level 23
Compile SDKAPI-Level 34 oder höher
Android Gradle Plugin8.0.2 oder höher
LizenzEin Schlüssel passend zur applicationId der App
TestgerätEin physisches Gerät mit rückseitiger Kamera

Docutain SDK 1.9.0.0 hinzufügen und initialisieren

1. Die beiden Photo-Payment-Module hinzufügen

Stellen Sie sicher, dass Maven Central konfiguriert ist, und fügen Sie anschließend UI und DataExtraction im App-Modul hinzu:

def docutainSdkVersion = '1.9.0.0'
implementation("de.docutain:Docutain-SDK-UI:$docutainSdkVersion")
implementation("de.docutain:Docutain-SDK-DataExtraction:$docutainSdkVersion")

2. Das SDK initialisieren

Initialisieren Sie Docutain, bevor SDK-Funktionen verfügbar werden. Der Platzhalter muss durch den Lizenzschlüssel für die exakte applicationId der App ersetzt werden.

import de.docutain.sdk.DocutainSDK;

class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        if(!DocutainSDK.initSDK(this.application, "<YOUR-LICENSE-KEY>")){
            //init of Docutain SDK failed, get the last error message
            val error = DocutainSDK.getLastError()
            //your logic to deactivate access to SDK functionality
        }
    }
}

Nachdem initSDK() den Wert false zurückgegeben hat, darf die Scanaktion nicht fortgesetzt werden. Protokollieren oder zeigen Sie getLastError() gemäß Ihrem Supportkonzept, ohne sensible Informationen offenzulegen.

Fotoüberweisung starten

Registrieren Sie den Activity-Result-Contract einmalig und starten Sie ihn über die Zahlungsaktion Ihrer App:

import de.docutain.sdk.ui.PhotoPaymentConfiguration
import de.docutain.sdk.ui.PhotoPaymentResult

val photoPaymentResult = registerForActivityResult(PhotoPaymentResult()) { data ->
    if(data != null){
        if(data.isNotEmpty()){
            // data is a JSON string containing the information
            // extract the fields you need and pass it on to your payment sheet
        } else{
            // no data was extracted at all
            // Note: this case is only reachable, if you disabled the Empty Result Screen
        }
    } else{
        // user canceled scan process
    }
}

myButton.setOnClickListener {   
    val paymentConfig = PhotoPaymentConfiguration()
    photoPaymentResult.launch(paymentConfig)
}

Die Standardkonfiguration stellt den vollständigen Erfassungs-, Prüf- und Extraktionsprozess bereit. Passen Sie UI, Onboarding und Scan-Tipps nur dort an, wo es das bestehende Design und die Nutzerführung der Bank sinnvoll ergänzt.

Das JSON-Ergebnis verarbeiten

Ein erfolgreiches Ergebnis wird als JSON-String zurückgegeben. Die Standardstruktur kann unter anderem folgende Felder enthalten:

{
    "Address":
    {
        "Name1": "DB Fernverkehr AG",
        "Name2": "",
        "Name3": "",
        "Zipcode": "60643",
        "City": "Frankfurt am Main",
        "Street": "BahnCard-Service",
        "Phone": "0302970",
        "CustomerId": "",
        "Bank": [{"BIC": "PBNKDEFFXXX",
        "IBAN": "DE02100100100152517108"}]
    },
    "Date": "2024-10-14",
    "Amount": "244.00",
    "InvoiceId": "2023174086",
    "Reference": "RNr:2023174086 vom 14.10.2024",
    "SEPACreditor": "DB Vertrieb GmbH"
}

Übernehmen Sie nur die Felder, die das Überweisungsformular benötigt, und normalisieren Sie ihre Anzeigeformate in der Host-App. Docutain validiert die IBAN und gibt sie nur zurück, wenn sie gültig ist. Die Host-App wendet weiterhin ihre eigenen Anforderungen an Empfänger, Betrag und Verwendungszweck an. Erkannte Daten sollen einen Entwurf vorausfüllen und dürfen keine Überweisung automatisch auslösen.

GiroCode und OCR in einem Prozess kombinieren

Ein GiroCode ist ein EPC-QR-Code mit Daten für eine SEPA-Überweisung. In SDK 1.9 ist PhotoPaymentConfiguration.allowGiroCode standardmäßig true. Für den kombinierten Prozess ist daher keine zusätzliche Konfiguration nötig.

RechnungseingangPrimärer ErkennungswegVerhalten der App
Gültiger GiroCodeStrukturierte EPC-Zahlungsdaten decodierenGeschäftsregeln anwenden und Überweisungsformular vorausfüllen
Kein GiroCodeZahlungsdaten aus dem Rechnungstext lesenGeschäftsregeln anwenden und dasselbe Formular vorausfüllen
Unlesbares oder unvollständiges ErgebnisWiederholungshinweis des SDK oder App-Fallback anzeigenKorrektur oder manuelle Eingabe ermöglichen
Geteiltes PDF oder BildEingehenden Android-Intent über openWithIntent übergebenIm selben Photo-Payment-Prozess fortfahren

Hintergrundwissen und verständliche Nutzerbegriffe bietet unser Artikel Rechnungen mit GiroCode bezahlen. Produktumfang und Plattformen finden Sie auf der Seite zum Photo Payment SDK.

Sicherheits- und Testcheckliste

Die lokale Erkennung reduziert Rechnungsdaten, die das Gerät verlassen müssen. Der vollständige Banking-Prozess benötigt dennoch Kontrollen auf Anwendungsebene.

  • Bestätigen, dass die gültige IBAN zum vorgesehenen Empfänger gehört, und bankeigene Regeln für Betrag, Empfänger und unterstützte Zeichensätze anwenden.
  • Erkannte Daten immer vor dem bestehenden Freigabeschritt anzeigen.
  • Abbruch, leere Ergebnisse, fehlerhafte Dateien und unvollständige GiroCodes behandeln.
  • Papierrechnungen, gefaltete Dokumente, Rechnungen auf Bildschirmen sowie PDFs und Bilder aus Android-Teilen-/Öffnen-Aktionen testen.
  • Prozessneustart, Kameraberechtigung, Speicherdruck und Barrierefreiheit in der Host-App prüfen.
  • Mit repräsentativen echten Rechnungen und freigegebenen oder anonymisierten Daten testen.

Offizielle Ressourcen

Technische Quellen zuletzt geprüft am 30. Juli 2026.

HÄUFIGE FRAGEN

Fotoüberweisung unter Android integrieren





Kontaktieren Sie uns und erhalten Sie Ihr Angebot


Lassen Sie unseren Kollegen Harry Beck wissen, wie wir Ihnen helfen können und erhalten Sie ein unverbindliches Angebot.



Informationen zur Verarbeitung Ihrer Angaben finden Sie in unseren Datenschutzhinweisen.


Diesen Artikel teilen


Diesen Artikel in Facebook teilen Diesen Artikel in LinkedIn teilen Diesen Artikel in Twitter teilen Diesen Artikel in Xing teilen Diesen Artikel in Pinterest teilen Diesen Artikel über Mail teilen Diesen Artikel über WhatsApp teilen