﻿# Regeln für grenzüberschreitende Zahlungen und automatische Überweisungen

Erstellen Sie ein Finanzkonto, automatisieren Sie die Gelder und senden Sie eine grenzüberschreitende Auszahlung.

Dieser beispielhafte Use Case zeigt eine Integration über eine SaaS-Plattform, die mithilfe von *Connect* (Connect is Stripe's solution for multi-party businesses, such as marketplace or software platforms, to route payments between sellers, customers, and other recipients) und [Treasury für Plattformen](https://docs.stripe.com/treasury/connect.md) Finanzdienstleistungen für Immobilienverwalter/innen anbietet. Eine/r der Immobilienverwalter/innen aus dem Vereinigten Königreich benötigt ein Finanzkonto, um Mieteinnahmen zu verwalten und Vermieter/innen international zu bezahlen.

Für die Beispielintegration sind die folgenden Schritte erforderlich:

- Erstellen Sie ein [verbundenes Konto](https://docs.stripe.com/treasury/connect/account-management/connected-accounts.md) für Treasury für Plattformen und führen Sie das Onboarding dafür durch.
- Erstellen Sie ein [Finanzkonto](https://docs.stripe.com/treasury/connect/account-management/financial-accounts.md).
- Konfigurieren Sie Regeln für die automatische Übertragung, um bei planmäßigen Auszahlungen Gelder aus dem Zahlungsguthaben des verbundenen Kontos auf das Finanzkonto zu übertragen.
- Senden Sie eine grenzüberschreitende `OutboundPayment` an den/die Vermieter/in in Norwegen.

> #### Entwicklung in einer Sandbox
> 
> Beginnen Sie in einer [Sandbox](https://docs.stripe.com/sandboxes.md) mit Zugriff auf Treasury für Plattformen und verwenden Sie die Test-API-Schlüssel dieser Sandbox für alle Anfragen.

## Verbundenes Konto erstellen

Die Plattform [erstellt das verbundene Konto](https://docs.stripe.com/api/v2/core/accounts/create.md) für die Immobilienverwaltung mit den Konfigurationen `merchant` und `money_manager` und fordert die zugehörigen Funktionen an.

```curl
curl -X POST https://api.stripe.com/v2/core/accounts \
  -H "Authorization: Bearer <<YOUR_SECRET_KEY>>" \
  -H "Stripe-Version: 2026-09-30.preview" \
  --json '{
    "include": [
        "configuration.money_manager"
    ],
    "contact_email": "property.manager@example.com",
    "display_name": "Property Manager Ltd",
    "identity": {
        "country": "US",
        "entity_type": "company"
    },
    "configuration": {
        "merchant": {
            "mcc": "6513",
            "support": {
                "phone": "0000000000"
            },
            "capabilities": {
                "card_payments": {
                    "requested": true
                }
            }
        },
        "money_manager": {
            "capabilities": {
                "received_credits": {
                    "bank_accounts": {
                        "requested": true
                    }
                },
                "business_storage": {
                    "inbound": {
                        "gbp": {
                            "requested": true
                        }
                    },
                    "outbound": {
                        "gbp": {
                            "requested": true
                        }
                    }
                },
                "outbound_transfers": {
                    "bank_accounts": {
                        "requested": true
                    }
                },
                "outbound_payments": {
                    "bank_accounts": {
                        "requested": true
                    }
                }
            }
        }
    },
    "dashboard": "none",
    "defaults": {
        "currency": "usd",
        "responsibilities": {
            "fees_collector": "application",
            "losses_collector": "application"
        }
    }
  }'
```

```json
{
  "id": "{{CONNECTED_ACCOUNT_ID}}",
  "object": "v2.core.account",
  "applied_configurations": ["merchant","money_manager"],
  "configuration": {
    "money_manager": {
      "capabilities": {
        "business_storage": { "inbound": { "gbp": { "requested": true, "status": "restricted" } }, "outbound": { "gbp": { "requested": true, "status": "restricted" } } }
      }
    }
  },
  "display_name": "Property Manager Ltd",
  "dashboard": "none",
  "livemode": false
}
```

## Onboarding des verbundenen Kontos

Anschließend [führt die Plattform das Onboarding für das verbundene Konto](https://docs.stripe.com/connect/api-onboarding.md) mit den folgenden Schritten durch:

1. Abrufen der für die angeforderten Funktionen generierten Anforderungen.
2. Bereitstellen eines Formulars zur Erfassung der von Ihrem verbundenen Konto benötigten Informationen.
3. Aktualisieren des `Kontos` mit den erfassten Informationen und Angabe des verbundenen Kontos im Header `Stripe-Context`: `{{CONNECTED_ACCOUNT_ID}}`, um das verbundene Konto als das zu aktualisierende Konto zu identifizieren.

Alternativ kann die Plattform einen [Konto-Link](https://docs.stripe.com/connect/hosted-onboarding.md?accounts-namespace=v2&lang=curl#create-account-link) erstellen, der den `type` als die Konfigurationen `merchant` und `money_manager` angibt, und die zurückgegebene URL dann vor ihrem Ablauf an das verbundene Konto senden. So kann dieses die erforderlichen Informationen in einer von Stripe gehosteten Benutzeroberfläche bereitstellen.

Die Plattform wartet auf den `v2.core.account[configuration.money_manager].capability_status_updated`-[Webhook](https://docs.stripe.com/webhooks.md), um zu bestätigen, dass die Funktionen für ihr verbundenes Konto aktiv sind.

## Das Finanzkonto erstellen

Die Plattform erstellt ein [Finanzkonto im GBP-Speicher](https://docs.stripe.com/api/v2/money-management/financial-accounts/create.md?api-version=preview), indem sie die Konto-ID des Immobilienverwalters/der Immobilienverwalterin im Header `Stripe-Context` angibt, um das Finanzkonto mit dem/der Immobilienverwalter/in zu verknüpfen.

```curl
curl -X POST https://api.stripe.com/v2/money_management/financial_accounts \
  -H "Authorization: Bearer <<YOUR_SECRET_KEY>>" \
  -H "Stripe-Version: 2026-09-30.preview" \
  -H "Stripe-Context: {{CONTEXT_ID}}" \
  --json '{
    "type": "storage",
    "storage": {
        "holds_currencies": [
            "usd"
        ]
    }
  }'
```

Die Antwort enthält die ID des Finanzkontos:

```json
{
  "id": "{{FINANCIAL_ACCOUNT_ID}}",
  "object": "v2.money_management.financial_account",
  "balance": {
    "available": { "usd": { "value": 0, "currency": "usd" } },
    "inbound_pending": { "usd": { "value": 0, "currency": "usd" } },
    "outbound_pending": { "usd": { "value": 0, "currency": "usd" } }
  },
  "country": "US",
  "created": "2025-06-18T11:05:27.930Z",
  "status": "pending",
  "status_details": null,
  "storage": { "holds_currencies": ["usd"] },
  "type": "storage",
  "livemode": false
}
```

## Simulation von Mieteinnahmen

Die Plattform erstellt und bestätigt einen Test-PaymentIntent und verwendet dabei die Konto-ID des Immobilienverwalters/der Immobilienverwalterin im Header `Stripe-Context`, um eine Mietzahlung zu simulieren, mit der das Zahlungsguthaben des Immobilienverwalters/der Immobilienverwalterin aufgeladen wird.

```curl
curl https://api.stripe.com/v1/payment_intents \
  -u "<<YOUR_SECRET_KEY>>:" \
  -H "Stripe-Account: {{CONNECTEDACCOUNT_ID}}" \
  -d amount=25000 \
  -d currency=gbp \
  -d confirm=true \
  -d payment_method=pm_card_visa \
  --data-urlencode "return_url=https://example.com/return"
```

## Konfigurieren Sie die Regeln für automatische Übertragungen

Regeln für die automatische Übertragung erfordern geplante Auszahlungen (nicht `manual`). Die Plattform aktualisiert die [Saldoeinstellungen](https://docs.stripe.com/api/balance-settings.md?api-version=preview) des Immobilienverwalters/der Immobilienverwalterin auf Folgendes:

- Setzen Sie `payments.payouts.schedule.interval` auf `daily`, um sicherzustellen, dass die Regel für die automatische Übertragung ausgeführt werden kann.
- Legen Sie automatic_transfer_rules_by_currency so fest, dass während der planmäßigen Auszahlungen alle Gelder in GBP aus dem Zahlungsguthaben auf das Finanzkonto übertragen werden.

```curl
curl https://api.stripe.com/v1/balance_settings \
  -u "<<YOUR_SECRET_KEY>>:" \
  -H "Stripe-Version: 2026-09-30.preview" \
  -H "Stripe-Account: {{CONNECTEDACCOUNT_ID}}" \
  -d "payments[payouts][schedule][interval]=daily" \
  -d "payments[payouts][automatic_transfer_rules_by_currency][gbp][0][payout_method]={{FINANCIALACCOUNTID_ID}}" \
  -d "payments[payouts][automatic_transfer_rules_by_currency][gbp][0][type]=transfer_all"
```

Die Plattform überwacht den [Webhook](https://docs.stripe.com/api/events/types.md?api-version=preview&rds=1#event_types-received_credit.created) `v2.money_management.received_credit.created`, um zu erfahren, wann die Geldübertragung begonnen hat, und listet dann Finanzkonten auf, um Guthaben zu überprüfen:

```curl
curl https://api.stripe.com/v2/money_management/financial_accounts \
  -H "Authorization: Bearer <<YOUR_SECRET_KEY>>" \
  -H "Stripe-Version: 2026-09-30.preview" \
  -H "Stripe-Context: {{CONTEXT_ID}}"
```

```json
{
  "data": [
    {
      "id": "{{FINANCIAL_ACCOUNT_ID}}",
      "object": "v2.money_management.financial_account",
      "balance": {
        "available": { "gbp": { "value": 25000, "currency": "gbp" } },
        "inbound_pending": { "gbp": { "value": 0, "currency": "gbp" } },
        "outbound_pending": { "gbp": { "value": 0, "currency": "gbp" } }
      },
      "country": "GB",
      "status": "open",
      "storage": { "holds_currencies": ["gbp"] },
      "type": "storage",
      "livemode": false
    }
  ],
  "next_page_url": null,
  "previous_page_url": null
}
```

## Senden einer grenzüberschreitenden Zahlung an eine/n norwegische/n Vermieter/in

Die Plattform erstellt ein vom/von der Empfänger/in konfiguriertes verbundenes Konto, um den/die Vermieter/in in Norwegen darzustellen, den/die der/die Immobilienverwalter/in von dem Finanzkonto aus bezahlt. Diese Einrichtung erfordert die folgenden Schritte:

- Erstellen Sie ein vom/von der Empfänger/in konfiguriertes verbundenes Konto.
- Laden Sie den/die Empfänger/in zum Onboarding ein.
- Fügen Sie mithilfe von `OutboundSetupIntents` eine Auszahlungsmethode hinzu.
- Erstellen Sie ein Angebot für ausgehende Zahlungen (erforderlich für grenzüberschreitende OutboundPayments).
- Erstellen Sie mithilfe der Auszahlungsmethode und des Angebots eine ausgehende Zahlung an den/die Empfänger/in.

### Erstellung des Empfängerkontos des Vermieters/der Vermieterin

Die Plattform [erstellt ein verbundenes Konto](https://docs.stripe.com/api/v2/core/accounts/create.md) für den/die Vermieter/in in Norwegen mit den `recipient`-Konfigurationen und fordert die zugehörigen Funktionen an. Sie gibt die Konto-ID des Immobilienverwalters/der Immobilienverwalterin im Header `Stripe-Context` an, um den/die Vermieter/in als Konto des Immobilienverwalters/der Immobilienverwalterin und nicht als direktes Konto der Plattform zu kennzeichnen.

```curl
curl -X POST https://api.stripe.com/v2/core/accounts \
  -H "Authorization: Bearer <<YOUR_SECRET_KEY>>" \
  -H "Stripe-Version: 2026-09-30.preview" \
  -H "Stripe-Context: {{CONTEXT_ID}}" \
  --json '{
    "include": [
        "requirements"
    ],
    "contact_email": "owner.no@example.com",
    "display_name": "NO Property Owner",
    "identity": {
        "country": "no",
        "entity_type": "individual"
    },
    "configuration": {
        "recipient": {
            "capabilities": {
                "bank_accounts": {
                    "local": {
                        "requested": true
                    }
                }
            }
        }
    }
  }'
```

Die Antwort enthält die Konto-ID und eventuelle Onboarding-Anforderungen:

```json
{
  "id": "{{RECIPIENT_ACCOUNT_ID}}",
  "object": "v2.core.account",
  "applied_configurations": ["recipient"],
  "configuration": {
    "recipient": {
      "capabilities": {
        "bank_accounts": {
          "local": {
            "requested": true,
            "status": "restricted",
            "status_details": [
              {
                "code": "requirements_past_due",
                "resolution": "provide_info"
              }
            ]
          }
        }
      }
    }
  },
  "display_name": "NO Property Owner",
  "requirements": {
    "collector": "stripe",
    "entries": [
      { "description": "identity.individual.date_of_birth.day", "impact": { "restricts_capabilities": [ { "capability": "bank_accounts.local", "configuration": "recipient", "deadline": { "status": "past_due" } } ] }, "minimum_deadline": { "status": "past_due" }, "awaiting_action_from": "user", "errors": [], "reference": null, "requested_reasons": [ { "code": "routine_onboarding" } ] },
      { "description": "identity.individual.date_of_birth.month", "impact": { "restricts_capabilities": [ { "capability": "bank_accounts.local", "configuration": "recipient", "deadline": { "status": "past_due" } } ] }, "minimum_deadline": { "status": "past_due" }, "awaiting_action_from": "user", "errors": [], "reference": null, "requested_reasons": [ { "code": "routine_onboarding" } ] },
      { "description": "identity.individual.date_of_birth.year", "impact": { "restricts_capabilities": [ { "capability": "bank_accounts.local", "configuration": "recipient", "deadline": { "status": "past_due" } } ] }, "minimum_deadline": { "status": "past_due" }, "awaiting_action_from": "user", "errors": [], "reference": null, "requested_reasons": [ { "code": "routine_onboarding" } ] },
      { "description": "identity.individual.given_name", "impact": { "restricts_capabilities": [ { "capability": "bank_accounts.local", "configuration": "recipient", "deadline": { "status": "past_due" } } ] }, "minimum_deadline": { "status": "past_due" }, "awaiting_action_from": "user", "errors": [], "reference": null, "requested_reasons": [ { "code": "routine_onboarding" } ] },
      { "description": "identity.individual.surname", "impact": { "restricts_capabilities": [ { "capability": "bank_accounts.local", "configuration": "recipient", "deadline": { "status": "past_due" } } ] }, "minimum_deadline": { "status": "past_due" }, "awaiting_action_from": "user", "errors": [], "reference": null, "requested_reasons": [ { "code": "routine_onboarding" } ] }
    ],
    "summary": { "minimum_deadline": { "status": "past_due", "time": null } }
  },
  "livemode": false
}
```

### Onboarding des Vermieters/der Vermieterin

Die Plattform [führt dann das Onboarding des vom/von der Empfänger/in konfigurierten verbundenen Kontos](https://docs.stripe.com/connect/api-onboarding.md) durch:

1. Abrufen der bei der Kontoerstellung hinterlegten Anforderungen.
2. Bereitstellen eines Formulars zur Erfassung der erforderlichen Informationen.
3. Aktualisieren des `Kontos` mit den erfassten Informationen, wobei das verbundene Konto und der/die Empfänger/in im Header `Stripe-Context` angegeben werden: `{{CONNECTED_ACCOUNT_ID}}/{{RECIPIENT_ACCOUNT_ID}}`, um kenntlich zu machen, dass die Plattform eine Anfrage im Namen des Vermieterkontos des Immobilienverwalters/der Immobilienverwalterin stellt.

Nach der Übermittlung der erforderlichen Informationen bestätigt die Plattform, dass die Funktionen des Empfängers/der Empfängerin `aktiv` sind, bevor sie fortfährt.

```curl
curl -G https://api.stripe.com/v2/core/accounts/{{RECIPIENTACCOUNTID_ID}} \
  -H "Authorization: Bearer <<YOUR_SECRET_KEY>>" \
  -H "Stripe-Version: 2026-09-30.preview" \
  -H "Stripe-Context: {{CONTEXT_ID}}" \
  -d "include[0]=configuration.recipient" \
  -d "include[1]=requirements"
```

```json
{
  "id": "{{RECIPIENT_ACCOUNT_ID}}",
  "object": "v2.core.account",
  "configuration": {
    "recipient": {
      "capabilities": {
        "bank_accounts": {
          "local": {
            "requested": true,
            "status": "active"
          }
        }
      }
    }
  },
  "livemode": false,
  "requirements": {
    "collector": "stripe",
    "entries": [],
    "summary": { "minimum_deadline": { "status": "past_due", "time": null } }
  }
}
```

### Hinzufügen einer Auszahlungsmethode

Die Plattform erstellt mithilfe eines [OutboundSetupIntent](https://docs.stripe.com/api/v2/money-management/outbound-setup-intents.md?api-version=preview) eine Auszahlungsmethode für den/die Vermieter/in in Norwegen. Der Header `Stripe-Context` enthält sowohl das verbundene Konto als auch den/die Empfänger/in: `{{CONNECTED_ACCOUNT_ID}}/{{RECIPIENT_ACCOUNT_ID}}`, um die Beziehung zu identifizieren. Die Plattform stellt eine Anfrage im Namen des Vermieterkontos des Immobilienverwalters/der Immobilienverwalterin.

```curl
curl -X POST https://api.stripe.com/v2/money_management/outbound_setup_intents \
  -H "Authorization: Bearer <<YOUR_SECRET_KEY>>" \
  -H "Stripe-Version: 2026-09-30.preview" \
  -H "Stripe-Context: {{CONTEXT_ID}}" \
  --json '{
    "payout_method_data": {
        "type": "bank_account",
        "bank_account": {
            "country": "NO",
            "account_number": "NO9386011117947"
        }
    },
    "usage_intent": "payment"
  }'
```

Die Antwort enthält die ID der Auszahlungsmethode:

```json
{
  "id": "osi_test_61SITWK7KhLsQIGAK16QsOpAPpE97EJALhqt1U5mC4kq",
  "object": "v2.money_management.outbound_setup_intent",
  "created": "2025-06-19T17:52:34.829Z",
  "payout_method": {
    "id": "{{RECIPIENT_PAYOUT_METHOD_ID}}",
    "object": "v2.money_management.payout_method"
  },
  "status": "succeeded",
  "usage_intent": "payment",
  "livemode": false
}
```

### Erstellen Sie ein Angebot für ausgehende Zahlungen

Die Plattform erstellt ein [OutboundPaymentQuote](https://docs.stripe.com/api/v2/money-management/outbound-payment-quotes/object.md?api-version=preview), das einen Wechselkurs und Gebühren für diese grenzüberschreitende OutboundPayment enthält. Grenzüberschreitende OutboundPayments erfordern ein Angebot und dieses stellt geschätzte Gebühren und Wechselkurse bereit.

```curl
curl -X POST https://api.stripe.com/v2/money_management/outbound_payment_quotes \
  -H "Authorization: Bearer <<YOUR_SECRET_KEY>>" \
  -H "Stripe-Version: 2026-09-30.preview" \
  -H "Stripe-Context: {{CONTEXT_ID}}" \
  --json '{
    "from": {
        "financial_account": "{{FINANCIALACCOUNTID_ID}}",
        "currency": "gbp"
    },
    "to": {
        "recipient": "{{RECIPIENTACCOUNTID_ID}}",
        "payout_method": "{{RECIPIENTPAYOUTMETHODID_ID}}",
        "currency": "nok"
    },
    "amount": {
        "value": 10000,
        "currency": "gbp"
    }
  }'
```

Die Antwort enthält die Angebots-ID- und FX-Details:

```json
{
  "id": "{{OUTBOUND_PAYMENT_QUOTE_ID}}",
  "object": "v2.money_management.outbound_payment_quote",
  "amount": {
    "value": 10000,
    "currency": "gbp"
  },
  "created": "2025-09-09T09:21:17.201Z",
  "estimated_fees": [
    {
      "amount": { "value": 50, "currency": "gbp" },
      "type": "standard_payout_fee"
    },
    {
      "amount": { "value": 200, "currency": "gbp" },
      "type": "foreign_exchange_fee"
    }
  ],
  "from": {
    "debited": { "value": 10250, "currency": "gbp" },
    "financial_account": "{{FINANCIAL_ACCOUNT_ID}}"
  },
  "fx_quote": {
    "lock_duration": "five_minutes",
    "lock_expires_at": "2025-09-09T09:26:17.000Z",
    "lock_status": "active",
    "rates": {
      "gbp": { "exchange_rate": "13.0000" }
    },
    "to_currency": "nok"
  },
  "to": {
    "credited": { "value": 130000, "currency": "nok" },
    "recipient": "{{RECIPIENT_ACCOUNT_ID}}"
  },
  "livemode": false
}
```

### Erstellen Sie die grenzüberschreitende Zahlung an norwegische Empfänger/innen

Die Plattform sendet mithilfe der Auszahlungsmethode und des Angebots eine [ausgehende Zahlung](https://docs.stripe.com/treasury/connect/moving-money/out-of/outbound-payments.md) vom Finanzkonto des Immobilienverwalters/der Immobilienverwalterin an den/die Empfänger/in in Norwegen.

```curl
curl -X POST https://api.stripe.com/v2/money_management/outbound_payments \
  -H "Authorization: Bearer <<YOUR_SECRET_KEY>>" \
  -H "Stripe-Version: 2026-09-30.preview" \
  -H "Stripe-Context: {{CONTEXT_ID}}" \
  --json '{
    "from": {
        "financial_account": "{{FINANCIALACCOUNTID_ID}}",
        "currency": "gbp"
    },
    "to": {
        "recipient": "{{RECIPIENTACCOUNTID_ID}}",
        "payout_method": "{{RECIPIENTPAYOUTMETHODID_ID}}",
        "currency": "nok"
    },
    "amount": {
        "value": 10000,
        "currency": "gbp"
    },
    "outbound_payment_quote": "{{OUTBOUNDPAYMENTQUOTEID_ID}}",
    "description": "Monthly rental remittance to owner (NO)"
  }'
```

```json
{
  "id": "obp_test_65TMskH4DujCYIcfvYM16TMrTK0AE95w2xxtzb7EQQiNLM",
  "object": "v2.money_management.outbound_payment",
  "amount": {
    "value": 10000,
    "currency": "gbp"
  },
  "cancelable": true,
  "created": "2025-10-01T18:30:07.260Z",
  "delivery_options": { "bank_account": "automatic" },
  "description": "Streamer earnings",
  "expected_arrival_date": "2025-10-06T23:59:59.999Z",
  "from": {
    "debited": { "value": 10000, "currency": "gbp" },
    "financial_account": "{{FINANCIAL_ACCOUNT_ID}}"
  },
  "metadata": {},
  "outbound_payment_quote": "{% identifier type=\"outboundPaymentQuoteId\" /%}",
  "receipt_url": "https://qa-payments.stripe.com/transaction_receipt/session_test_61TMskHZxzTs1Q4Ls16TMrTK0AE95w2xxtzb7EQQi1AO",
  "recipient_notification": { "setting": "configured" },
  "statement_descriptor": "Property Management Inc.",
  "status": "processing",
  "status_transitions": {
    "canceled_at": null,
    "failed_at": null,
    "posted_at": null,
    "returned_at": null
  },
  "to": {
    "credited": { "value": 131129, "currency": "nok" },
    "payout_method": "{{RECIPIENT_PAYOUT_METHOD_ID}}",
    "recipient": "{{RECIPIENT_ACCOUNT_ID}}"
  },
  "trace_id": { "status": "pending", "value": "" },
  "livemode": false
}
`