# Make

> Zahlungen in jedes Make-Szenario: sofortige Trigger für bezahlte Rechnungen, Erstattungen, Abos und Kunden; Module, die Rechnungen und Zahlungslinks erstellen und finden.

Die App von Perly Pay bringt Ihre Zahlungen nach Make. Eine bezahlte Rechnung kann eine Tabelle füllen, ein CRM aktualisieren oder eine Discord-Rolle vergeben; ein Formular kann eine Rechnung erstellen und die Zahlungsseite senden. Nichts zu hosten, kein Code.

> **Hinweis:** Test- und Live-Schlüssel sind zwei Verbindungen. Ein Szenario auf der Testverbindung sieht nur Testzahlungen.

## Verbinden

1. **Schlüssel holen** — In Perly Pay: Dashboard → Developers → API keys. `sk_test_…` für den [Testmodus](https://pay.perly.io/docs/test-mode.md), `sk_live_…` für echtes Geld.
2. **Perly Pay zum Szenario hinzufügen** — Die App ist auf dem Weg in die App-Liste von Make. Bis sie dort ist, [schreiben Sie uns](https://pay.perly.io/de/contact) für einen Einladungslink; öffnen Sie ihn einmal, danach finden Sie **Perly Pay**, wenn Sie ein Modul hinzufügen.
3. **Verbinden** — Mit **Add** eine Verbindung anlegen und den Schlüssel einfügen. Benennen Sie sie so, dass Test und Live unterscheidbar sind.

## Sofortige Trigger

| Modul | Wann | Ereignis |
| --- | --- | --- |
| Watch paid invoices | Vollständig bezahlt, Absender geprüft. Zeit, Zugang zu geben oder zu versenden. | `invoice.fulfilled` |
| Watch underpaid invoices | Der Käufer hat weniger gesendet, als die Rechnung verlangt. | `invoice.underpaid` |
| Watch opened refunds | Sie haben eine [Erstattung](https://pay.perly.io/docs/refunds.md) eröffnet. | `refund.requested` |
| Watch confirmed refunds | Ihre gesendete Erstattung ist im Netzwerk bestätigt. | `refund.confirmed` |
| Watch started subscriptions | Ein [Abo](https://pay.perly.io/docs/subscriptions.md) hat begonnen. | `subscription.created` |
| Watch renewed subscriptions | Ein Abonnent hat den nächsten Zeitraum bezahlt. | `subscription.renewed` |
| Watch ended subscriptions | Ein Abo ist beendet. Zeit, den Zugang zu entziehen. | `subscription.ended` |
| Watch new customers | Ein neuer Käufer. | `customer.created` |

Wenn Sie in Make den Webhook eines Triggers hinzufügen, erscheint unter Dashboard → Developers → Webhooks ein Webhook wie **Make: Paid invoices**; löschen Sie ihn in Make, verschwindet er. Bevor ein Szenario läuft, holt Make jede Zustellung mit Ihrem Schlüssel bei Perly Pay ab, und Perly Pay gibt jede nur einmal heraus: Eine Anfrage, die nicht von Perly Pay kommt oder erneut gesendet wird, löst nichts aus. Jeder Webhook ist einer der 16, die ein Modus haben kann.

Jeder Trigger liefert das Ereignis und das Objekt, um das es geht – Rechnung, Erstattung, Abo oder Kunde – so, wie die [API](https://pay.perly.io/docs/api.md) sie hat. Währungsbeträge sind in Cent (`total` 4900 sind 49.00): Teilen Sie in der Zuordnung durch 100. Coin-Beträge sind in der kleinsten Einheit der Coin, daneben ihre `decimals`.

## Module

| Modul | Was Sie angeben | Was Sie erhalten |
| --- | --- | --- |
| Create an invoice | Einen Betrag (etwa 49.00), eine Beschreibung; optional Währung, E-Mail des Kunden, Rückgabeadresse, Metadaten | Eine Rechnung mit Zahlungsseite (**Payment page URL**) für den Käufer |
| Create a payment link | Einen Preis oder Namen und Betrag eines neuen Produkts | Eine Seite, die es verkauft – teilen Sie sie überall |
| Get an invoice | Eine Rechnungs-ID | Ihren Status, was angekommen ist, die Zahlungsseite |
| Search customers | Eine E-Mail, oder nichts für alle | Kunden, die neuesten zuerst |
| Make an API call | Ein Pfad wie `/invoices`, eine Methode und, falls nötig, ein JSON-Body | Die Antwort der API, wie sie ist, für alles, was die anderen Module nicht tun |

## Rezepte

### Zahlung → Zeile in Google Sheets

1. **Trigger** — Perly Pay → **Watch paid invoices**. Fügen Sie den Webhook hinzu; lassen Sie das Szenario einmal laufen und bezahlen Sie eine Testrechnung, damit Make die Felder kennenlernt.
2. **Aktion** — Google Sheets → **Add a Row**, in einer Tabelle mit Spalten wie Datum, E-Mail, Betrag, Coin.
3. **Zuordnen** — Datum → Invoice: Paid at, E-Mail → Customer email, Betrag → `Total (cents) / 100`, Coin → Payment: Coin. Einschalten.

### Zahlung → Rolle in Discord

Discord muss wissen, wer bezahlt hat. Legen Sie die Discord-ID des Käufers beim Erstellen in die Rechnung und lesen Sie sie zurück, wenn die Rechnung bezahlt ist.

1. **Szenario 1: die Rechnung** — Trigger: Ihr Anmeldeformular mit E-Mail und Discord-ID. Perly Pay → **Create an invoice**, Metadaten-Schlüssel `discord_user_id`, Wert = die Antwort aus dem Formular. Dann senden Sie dem Käufer die **Payment page URL**.
2. **Szenario 2: die Rolle** — Perly Pay → **Watch paid invoices**. Discord → **Add a Role to a Member** (oder **Make an API call** an Discord): Ihr Server, die Rolle, und das Mitglied = Invoice: Metadata → `discord_user_id`.
3. **Rolle entziehen** — Für ein Abo nimmt **Watch ended subscriptions** die Rolle genauso wieder weg.

## Testen

Erstellen Sie auf der Testverbindung eine Rechnung (per Modul oder im Dashboard) und bezahlen Sie sie mit Test-Coins oder über die API anhand der Rechnungs-ID:

```bash
curl -X POST https://pay.perly.io/api/v1/invoices/inv_…/simulate \
  -H "Authorization: Bearer $PERLY_PAY_SECRET_KEY" -H "Content-Type: application/json" -d '{}'
```

Nach wenigen Sekunden läuft das Szenario. Seine History zeigt jeden Lauf und was angekommen ist.

## Echte Zahlungen

- Schalten Sie in Perly Pay den Live-Modus ein und verbinden Sie die öffentlichen Schlüssel Ihrer Wallet.
- Fügen Sie eine Verbindung mit einem Schlüssel `sk_live_…` hinzu. Legen Sie in jedem Szenario darauf einen neuen Webhook für den Trigger an und stellen Sie die anderen Perly-Pay-Module darauf um.
- Bezahlen Sie eine kleine echte Rechnung und sehen Sie zu, wie sie ankommt.
