> ## Documentation Index
> Fetch the complete documentation index at: https://docs.business-os.de/llms.txt
> Use this file to discover all available pages before exploring further.

# Create Payment

> Initiiert eine SEPA oder SEPA Instant Zahlung. Gibt eine Payment-URL zurück, über die der User die Zahlung per TAN bestätigt.

Nur `account_id` und `amount` sind pflichtig — alle anderen Werte (Provider, Debitor-IBAN, Banking-API) werden automatisch aus der Account-ID aufgelöst. Der `end_to_end_id` wird vom Server generiert (`BOS-{ts}-{hex}`) und in der Response zurückgegeben, damit später die zugehörige Transaction matchbar ist.

**Cost:** 3 Credits (only charged when payment settles successfully)



## OpenAPI

````yaml POST /v2/banking/payments
openapi: 3.1.0
info:
  title: Business OS API
  description: >-
    API für Business OS – Zugang zu DATEV und Banking Enterprise-Schnittstellen.
    Alle Endpoints erfordern einen API Key im `x-api-key` Header. Credits werden
    pro API-Call abgezogen.
  version: 2.0.0
  contact:
    name: Business OS Support
    email: impressum@business-os.de
    url: https://business-os.de/kontakt
servers:
  - url: https://api.business-os.de
    description: Production
security:
  - ApiKeyAuth: []
tags:
  - name: DATEV Allgemein
    description: >-
      Modulübergreifende DATEV-Endpunkte (z. B. Abo-/Service-Diagnose für
      Mandanten)
  - name: DATEV DUO
    description: DATEV Unternehmen Online — Kassenbuch, Belegbilder und Buchungsvorschläge
  - name: DATEV ReWe - Write
    description: 'DATEV Rechnungswesen — Write: Buchungen, Kontakte, Belegtypen, Steuersätze'
  - name: DATEV ReWe - Read
    description: >-
      DATEV Rechnungswesen — Read (Export): Geschäftsjahre und weitere
      Lesemodule
  - name: Banking AIS
    description: >-
      Account Information Services — Verbindungen, Kontostände und Transaktionen
      verwalten
  - name: Banking PIS
    description: Payment Initiation Services — Zahlungen ausführen und Status abrufen
  - name: Banking Webhooks
    description: Webhook-Konfiguration für Echtzeit-Benachrichtigungen
paths:
  /v2/banking/payments:
    post:
      tags:
        - Banking PIS
      summary: Create Payment
      description: >-
        Initiiert eine SEPA oder SEPA Instant Zahlung. Gibt eine Payment-URL
        zurück, über die der User die Zahlung per TAN bestätigt.


        Nur `account_id` und `amount` sind pflichtig — alle anderen Werte
        (Provider, Debitor-IBAN, Banking-API) werden automatisch aus der
        Account-ID aufgelöst. Der `end_to_end_id` wird vom Server generiert
        (`BOS-{ts}-{hex}`) und in der Response zurückgegeben, damit später die
        zugehörige Transaction matchbar ist.


        **Cost:** 3 Credits (only charged when payment settles successfully)
      parameters:
        - $ref: '#/components/parameters/ApiParam'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PaymentCreateRequest'
      responses:
        '200':
          description: Zahlung initiiert — User muss die payment_url aufrufen
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaymentCreateResponse'
        '400':
          description: Fehlende oder ungültige Zahlungsdaten
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Ungültiger API Key
        '402':
          description: Nicht genügend Credits
components:
  parameters:
    ApiParam:
      name: api
      in: query
      schema:
        type: string
        enum:
          - partner
          - openbanking
        default: partner
      description: >-
        Banking-API: `partner` (regulierte Banken) oder `openbanking`
        (unregulierte wie AMEX, Revolut)
  schemas:
    PaymentCreateRequest:
      type: object
      description: >-
        Request-Body zum Initiieren einer Zahlung. Felder werden flach übergeben
        — `provider_code`, `debtor_iban` und die Banking-API werden automatisch
        aus der Account-ID aufgelöst. `end_to_end_id` wird **immer server-seitig
        generiert** (`BOS-{timestamp}-{hex}`) für das
        Payment-↔-Transaction-Matching. Ein vom Client übergebener Wert wird
        ignoriert.
      required:
        - account_id
        - amount
      properties:
        account_id:
          type: string
          description: >-
            ID des eigenen Bankkontos (`Account.id`). Daraus werden Provider,
            Debitor-IBAN und Banking-API automatisch aufgelöst.
          example: '8273645091827364509'
        amount:
          type: string
          description: Betrag als String (z.B. "1.00" für 1,00 €).
          example: '1.00'
        currency_code:
          type: string
          description: Währungscode (ISO 4217). Default `EUR`.
          default: EUR
          example: EUR
        template_identifier:
          type: string
          enum:
            - AUTO
            - SEPA
            - SEPA_INSTANT
          description: >-
            Zahlungsart. Default `AUTO`: wählt automatisch `SEPA_INSTANT`, wenn
            die Bank Instant anbietet, sonst `SEPA` (bei Terminüberweisung via
            `date` immer `SEPA`); lehnt die Bank den automatisch gewählten
            Instant-Auftrag ab, wird einmalig als `SEPA` ausgeführt
            (Response-Feld `template_fallback`). Explizit gesetztes
            `SEPA`/`SEPA_INSTANT` wird unverändert verwendet.
          default: AUTO
          example: AUTO
        creditor_name:
          type: string
          description: Name des Empfängers.
          example: Mustermann GmbH
        creditor_iban:
          type: string
          description: IBAN des Empfängers.
          example: DE27100777770209299700
        description:
          type: string
          description: Verwendungszweck.
          example: Rechnung G-RE-2026-03024
        reference:
          type: string
          description: >-
            Lokales Label (optional) — z.B. die eigene Rechnungsnummer. Wird
            gespeichert und bei `GET /v2/banking/payments/{id}` sowie `GET
            /v2/banking/payments` wieder zurückgegeben, **nicht** an die Bank
            übermittelt (SEPA kennt kein solches Feld).
          example: RG-2026-03024
        date:
          type: string
          format: date
          description: >-
            Ausführungsdatum (`YYYY-MM-DD`) für eine geplante Zahlung
            (Terminüberweisung). Nur wirksam, wenn das Payment-Template der Bank
            `date` unterstützt — die je Template verfügbaren Zusatzfelder
            liefert `GET /v2/banking/payment-templates`.
          example: '2026-07-01'
        creditor_country_code:
          type: string
          description: >-
            ISO-3166-1-alpha-2 Country-Code des Empfängers. Wenn weggelassen,
            wird er automatisch aus den ersten 2 Zeichen der `creditor_iban`
            abgeleitet.
          example: DE
        creditor_address:
          type: string
          description: Adresse des Empfängers (optional, bankabhängig).
          example: Musterstr. 1, 10115 Berlin
        creditor_agent:
          type: string
          description: BIC der Empfängerbank (optional).
          example: MUSTBE22
        creditor_agent_name:
          type: string
          description: Name der Empfängerbank (optional).
          example: Musterbank AG
        debtor_bic:
          type: string
          description: >-
            BIC der eigenen Bank (optional, wird i.d.R. aus der `debtor_iban`
            aufgelöst).
          example: DEUTDEFFXXX
        mode:
          type: string
          description: bankspezifischer Modus (optional, bankabhängig).
          example: embedded
        return_to:
          type: string
          format: uri
          description: >-
            Redirect-URL nach Zahlungsbestätigung im Browser. Default
            `https://app.business-os.de/close`.
          default: https://app.business-os.de/close
          example: https://app.business-os.de/close
        custom_fields:
          type: object
          description: Benutzerdefinierte Felder (werden im Callback zurückgegeben).
          example:
            invoice_id: G-RE-2026-03024
    PaymentCreateResponse:
      type: object
      description: >-
        Antwort beim Initiieren einer Zahlung. Banking-Response (`data`) wird
        durchgereicht, plus der server-seitig generierte `end_to_end_id` als
        zusätzliches Top-Level-Field unter `data`.
      properties:
        data:
          type: object
          properties:
            payment_id:
              type: string
              description: >-
                Banking-Payment-ID — wird für Status-Abfragen und
                Transaction-Matching benötigt.
              example: '4509182736450918273'
            payment_url:
              type: string
              format: uri
              description: >-
                URL zur Zahlungsbestätigung im Browser (Endkunde authentifiziert
                hier per OAuth/Decoupled).
              example: https://psd2.business-os.de/payments/connect?token=xxx
            expires_at:
              type: string
              format: date-time
              description: Ablaufzeitpunkt der Zahlungs-Session.
              example: '2026-03-24T12:44:03Z'
            end_to_end_id:
              type: string
              description: >-
                Server-seitig generierter Eindeutigkeits-Identifier im Format
                `BOS-{timestamp}-{hex}`. Erscheint später in der zugehörigen
                `Transaction` und ermöglicht das Payment-↔-Transaction-Matching.
              example: BOS-1716480000000-a1b2c3d4
    Error:
      type: object
      properties:
        error:
          type: string
          description: Fehlermeldung
          example: 'Missing required parameter: connection_id'
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key
      description: >-
        Dein Business OS API Key. Erstelle einen unter
        [app.business-os.de](https://app.business-os.de/) → API Keys.

````