Docs/Widget-Integration

Widget-Integration

Der schnellste Weg, Zahlungen zu akzeptieren. Kein Backend erforderlich.

Schnellstart

Fügen Sie zwei Zeilen zu Ihrem HTML hinzu. Das Widget übernimmt Wallet-Verbindung, Chain-Auswahl, Transaktionssignierung und kettenübergreifendes Bridging automatisch.

Minimal Setup
<script async src="https://checkout.fivo.finance/v1/fivo.js"></script>

<fivo-button
  merchant-id="YOUR_MERCHANT_ID"
  amount="29.99"
  currency="USDC">
</fivo-button>
i

Merchant ID

Ihre Merchant ID wird auf der -Seite Ihres Dashboards angezeigt.Integration Format: fivo_live_xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx

Zahlungsmodi

Fester Betrag

Für Produkte, Rechnungen, Abonnements. Setzen Sie das -Attribut und der Kunde kann nur den exakten Preis bezahlen.amount

Variabler Betrag

Für Spenden, Trinkgelder, Zahle-was-du-willst. Lassen Sie das -Attribut weg und der Kunde gibt ein, wie viel er zahlen möchte.amount

Fester Betrag

Legen Sie den Preis fest und das System überprüft den genauen Betrag auf der Blockchain. Beträge müssen zwischen 0,01 und 1.000.000 liegen.

Product Checkout
<script async src="https://checkout.fivo.finance/v1/fivo.js"></script>

<!-- Product: $49.99 USDC -->
<fivo-button
  merchant-id="YOUR_MERCHANT_ID"
  amount="49.99"
  currency="USDC">
</fivo-button>

Anwendungsfälle

  • E-Commerce-Produktkauf
  • SaaS-Abonnementzahlungen
  • Dienstleistungsrechnungen
  • Veranstaltungstickets

Variabler Betrag

Lassen Sie das -Attribut weg. Das Widget zeigt ein Eingabefeld an, in dem der Kunde den gewünschten Betrag eingibt.amount

Donation / Tip
<script async src="https://checkout.fivo.finance/v1/fivo.js"></script>

<!-- Donation: customer chooses amount -->
<fivo-button
  merchant-id="YOUR_MERCHANT_ID"
  currency="USDC">
</fivo-button>
!

Betragsgrenzen

Variable Beträge werden zwischen 0,01 und 1.000.000 validiert. Beträge außerhalb dieses Bereichs zeigen eine Fehlermeldung an.

Anwendungsfälle

  • Spenden und Fundraising
  • Trinkgelder für Content-Ersteller
  • Zahle-was-du-willst-Preise
  • Crowdfunding-Beiträge

Attribute

Das -Element akzeptiert die folgenden Attribute:<fivo-button>

fivo-button Attributes

merchant-idstringRequired

Ihre Merchant ID (Format: fivo_live_UUID)

amountstringOptional

Fester Zahlungsbetrag (0,01 - 1.000.000). Weglassen für variablen Modus.

currencystringOptional

"USDC" oder "EURC". Standard ist "USDC".

wallet-idstringOptional

Spezifische Wallet-UUID für Händler mit mehreren Wallets. Weglassen, um Ihr Standard-Wallet zu verwenden.

data-amount-fromstringOptional

CSS-Selektor des Elements, das den Warenkorb-Gesamtbetrag enthält. Der Betrag wird beim Klicken gelesen.

data-referencestringOptional

Ihre interne Referenz (Bestellnummer, Rechnungsnummer usw.). Max. 255 Zeichen.

data-descriptionstringOptional

Zahlungsbeschreibung, die im Dashboard angezeigt wird. Max. 500 Zeichen.

data-metadatastringOptional

JSON-String mit benutzerdefinierten Schlüssel-Wert-Paaren. Max. 10 KB.

i

Dynamische Attribute

Attribute sind reaktiv. Sie können sie mit JavaScript aktualisieren (z.B. ) und die Schaltflächenbeschriftung aktualisiert sich automatisch.el.setAttribute('amount', '59.99')

Events

Die Schaltfläche löst benutzerdefinierte DOM-Events aus, die Sie abfangen können. Alle Event-Daten sind in verfügbar.e.detail

fivo:payment-success

Data: txHash, amount, token, chainId

Zahlung auf der Blockchain bestätigt

fivo:payment-error

Data: error

Zahlung fehlgeschlagen oder abgelehnt

fivo:payment-tracking

Data: paymentId, status, step

Fortschrittsaktualisierung bei kettenübergreifender Übertragung

Listening for Events
<fivo-button
  id="pay-btn"
  merchant-id="YOUR_MERCHANT_ID"
  amount="25.00"
  currency="USDC">
</fivo-button>

<script>
  const btn = document.getElementById('pay-btn');

  btn.addEventListener('fivo:payment-success', (e) => {
    console.log('TX hash:', e.detail.txHash);
    console.log('Amount:', e.detail.amount, e.detail.token);
    console.log('Chain ID:', e.detail.chainId);
    window.location.href = '/thank-you?tx=' + e.detail.txHash;
  });

  btn.addEventListener('fivo:payment-error', (e) => {
    console.error('Payment failed:', e.detail.error);
  });

  btn.addEventListener('fivo:payment-tracking', (e) => {
    // Only fires for cross-chain (CCTP) payments
    console.log('Step:', e.detail.step, 'Status:', e.detail.status);
  });
</script>

Dynamischer Warenkorb

Fügen Sie diese Schaltfläche in Ihren Warenkorb ein. Sie liest automatisch den Gesamtbetrag von Ihrer Seite, wenn der Kunde klickt. Wenn der Betrag nicht erkannt wird, ändern Sie so, dass es zur ID Ihres Warenkorb-Gesamtbetrags-Elements passt.#cartTotal

Cart Integration (Recommended)
<script async src="https://checkout.fivo.finance/v1/fivo.js"></script>

<!-- Replace #cartTotal with YOUR cart total element's ID -->
<fivo-button
  merchant-id="YOUR_MERCHANT_ID"
  data-amount-from="#cartTotal"
  currency="USDC">
</fivo-button>
i

Gesamtbetrag wird nicht erkannt?

Klicken Sie mit der rechten Maustaste auf Ihren Warenkorb-Gesamtbetrag, klicken Sie auf Untersuchen. Der hervorgehobene Code zeigt . Verwenden Sie in . Dollarzeichen und Kommas werden automatisch entfernt.id="something"#somethingdata-amount-from

Erweitert: manuelle Steuerung

Wenn Sie volle programmatische Kontrolle benötigen (z.B. der Gesamtbetrag ist nicht auf der Seite sichtbar), können Sie das Amount-Attribut direkt mit JavaScript aktualisieren:

Manual setAttribute
<fivo-button
  id="checkout-btn"
  merchant-id="YOUR_MERCHANT_ID"
  currency="USDC">
</fivo-button>

<script>
  // Update when cart changes
  function updateCheckout(total) {
    document.getElementById('checkout-btn')
      .setAttribute('amount', total.toFixed(2));
  }

  // Redirect after payment
  document.getElementById('checkout-btn')
    .addEventListener('fivo:payment-success', (e) => {
      window.location.href = '/thank-you?tx=' + e.detail.txHash;
    });
</script>
!

E-Commerce mit Auftragsverwaltung?

Für Shops, die serverseitiges Auftrags-Tracking benötigen, siehe weiter unten.Checkout Sessions

Mehrere Produkte

Laden Sie das Skript einmal, dann fügen Sie so viele Schaltflächen hinzu, wie Sie benötigen. Jede funktioniert unabhängig.

Multiple Buttons
<script async src="https://checkout.fivo.finance/v1/fivo.js"></script>

<!-- Product A -->
<fivo-button merchant-id="YOUR_MERCHANT_ID" amount="19.99" currency="USDC"></fivo-button>

<!-- Product B -->
<fivo-button merchant-id="YOUR_MERCHANT_ID" amount="49.99" currency="USDC"></fivo-button>

<!-- Donation (variable) -->
<fivo-button merchant-id="YOUR_MERCHANT_ID" currency="EURC"></fivo-button>

Direkter Checkout-Link

Sie können auch direkt auf die Zahlungsseite verlinken, ohne das Widget einzubetten. Nützlich für E-Mail-Rechnungen, Social-Media-Links oder QR-Codes.

Checkout URL Format
https://checkout.fivo.finance?merchant=YOUR_MERCHANT_ID&amount=49.99&currency=USDC

URL-Parameter

merchantstringRequired

Ihre Merchant ID

amountstringOptional

Fester Betrag. Weglassen für variablen Modus.

currencystringOptional

"USDC" oder "EURC". Standard ist "USDC".

walletIdstringOptional

Spezifische Wallet-UUID für Händler mit mehreren Wallets.

referencestringOptional

Ihre interne Referenz (Bestellnummer usw.).

descriptionstringOptional

Zahlungsbeschreibung.

metadatastringOptional

URL-kodierter JSON-String mit benutzerdefinierten Daten.

Example: Invoice Link
<a href="https://checkout.fivo.finance?merchant=YOUR_MERCHANT_ID&amount=150.00&currency=USDC">
  Pay Invoice #1234, $150.00 USDC
</a>

Checkout Sessions (Weiterleitungsmodus)

Für serverseitige Integrationen können Sie eine Checkout Session über die API erstellen und Ihren Kunden auf eine von Fivo gehostete Zahlungsseite weiterleiten. Nach der Zahlung wird der Kunde zurück auf Ihre Seite geleitet. Dies ist vergleichbar mit Stripe Checkout.

i

Serverseitige Integration

Checkout Sessions erfordern einen API Key. Erstellen Sie einen in Ihrem . Geben Sie Ihren API Key niemals in clientseitigem Code preis.Dashboard

So funktioniert es

1

Ihr Server erstellt eine Sitzung

Rufen Sie POST /checkout/sessions mit dem Betrag, der Währung und einer Rückgabe-URL auf.

2

Kunde wird weitergeleitet

Verwenden Sie die zurückgegebene URL, um Ihren Kunden auf die Fivo-Zahlungsseite weiterzuleiten.

3

Kunde bezahlt

Der Kunde verbindet sein Wallet und schließt die Zahlung auf der gehosteten Seite ab.

4

Kunde kehrt zu Ihrer Seite zurück

Nach der Zahlung wird der Kunde mit der Sitzungs-ID zu Ihrer return_url weitergeleitet.

5

Zahlung auf Ihrem Server verifizieren

Rufen Sie GET /checkout/sessions/:id auf, um den Zahlungsstatus zu bestätigen, bevor Sie die Bestellung ausführen.

1. Sitzung erstellen (serverseitig)

Create Checkout Session
const response = await fetch(`https://api.fivo.finance/checkout/sessions`, {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'X-API-Key': process.env.FIVO_API_KEY,
  },
  body: JSON.stringify({
    amount: '49.99',
    currency: 'USDC',
    return_url: 'https://yoursite.com/success',
    cancel_url: 'https://yoursite.com/cancel',
    metadata: { order_id: 'order_123' },
    expires_in: 1800,   // 30 minutes (default)
  }),
});

const { data } = await response.json();
// data.id  → "cs_live_xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
// data.url → "https://checkout.fivo.finance?session=cs_live_..."
// data.expires_at → "2026-02-18T11:00:00.000Z"
// After payment, the customer is redirected to:
// https://yoursite.com/success?session_id=cs_live_...

2. Kunde weiterleiten

Redirect
// Express.js example
app.post('/create-checkout', async (req, res) => {
  const session = await createCheckoutSession(req.body);
  res.redirect(303, session.url);
});

3. Zahlung bei Rückkehr verifizieren

Verify Session
// When the customer lands on your return_url
app.get('/success', async (req, res) => {
  const sessionId = req.query.session_id;

  const response = await fetch(
    `https://api.fivo.finance/checkout/sessions/${sessionId}`,
    { headers: { 'X-API-Key': process.env.FIVO_API_KEY } }
  );
  const { data } = await response.json();

  if (data.status === 'complete' && data.payment) {
    // Payment confirmed: fulfill the order
    console.log('Payment ID:', data.payment.id);
    console.log('TX Hash:', data.payment.tx_hash);
    console.log('Amount:', data.payment.amount, data.currency);
  } else {
    // Payment not yet confirmed: show a waiting state
    console.log('Session status:', data.status);
  }
});

POST /checkout/sessions: Parameter

amountstring | numberOptional

Zahlungsbetrag (0,01 - 1.000.000). Weglassen für variablen Betrag.

currencystringOptional

"USDC" oder "EURC". Standard ist "USDC".

return_urlstringRequired

URL zur Weiterleitung des Kunden nach der Zahlung. Muss in der Produktion HTTPS sein.

cancel_urlstringOptional

URL zur Weiterleitung, wenn der Kunde abbricht. Muss in der Produktion HTTPS sein.

metadataobjectOptional

Bis zu 5 Schlüssel-Wert-Paare für Ihre interne Referenz (z.B. Bestellnummer).

expires_innumberOptional

Sitzungsdauer in Sekunden (60 - 86.400). Standard ist 1.800 (30 Min.).

Unterstützte Währungen & Chains

WährungCodeChains
USD CoinUSDCAlle 9 Chains
Euro CoinEURCEthereum, Avalanche, Base
BlockchainToken
EthereumUSDC, EURC
PolygonUSDC
AvalancheUSDC, EURC
ArbitrumUSDC
BaseUSDC, EURC
OptimismUSDC
LineaUSDC
UnichainUSDC
SonicUSDC

Kunden können von jeder Chain aus bezahlen. Wenn ihre Chain von der Chain Ihres Wallets abweicht, werden USDC-Zahlungen automatisch über Circle CCTP gebridged (in der Regel 1-2 Minuten). EURC ist nur auf der gleichen Chain möglich und unterstützt keine kettenübergreifenden Transfers.

So funktioniert es

1

Kunde klickt die Schaltfläche

Ein Zahlungs-Overlay öffnet sich über Ihrer Seite. Ihre Seite bleibt darunter geladen.

2

Kunde verbindet Wallet

Unterstützt MetaMask, Coinbase Wallet, WalletConnect und andere beliebte Wallets.

3

Kunde wählt Chain und bezahlt

Das Widget scannt unterstützte Chains nach USDC- (9 Chains) oder EURC-Guthaben (3 Chains) und zeigt verfügbare Optionen an.

4

Sie erhalten die Mittel

Zahlungen auf der gleichen Chain sind sofort. Kettenübergreifende USDC-Zahlungen kommen in 1-2 Minuten über CCTP an. EURC ist nur auf der gleichen Chain möglich.

Kunden-E-Mail & Belege

Jede Zahlung erfordert, dass der Kunde seine E-Mail-Adresse eingibt, bevor er bezahlt. Das Widget übernimmt dies automatisch. Ein Pflichtfeld für die E-Mail wird vor dem Wallet-Verbindungsschritt angezeigt.

Für Kunden

Nach der Zahlung erhält der Kunde eine Beleg-E-Mail mit seiner Zahlungs-ID, dem Betrag, dem Händlernamen und dem Blockchain-Transaktionslink.

Für Händler

Sie können Kunden-E-Mails auf Ihrer Transaktionsseite einsehen und Rückerstattungen nach E-Mail anstatt nach Zahlungs-ID suchen.

Auftragsverfolgung

Verwenden Sie optionale Attribute, um Zahlungen mit Ihren internen Systemen zu verknüpfen. Diese werden an Webhooks weitergegeben und sind in Ihrem Dashboard sichtbar.

E-commerce Integration
<fivo-button
  merchant-id="YOUR_MERCHANT_ID"
  amount="49.99"
  currency="USDC"
  data-reference="ORD-2024-001"
  data-description="Pro Plan - Monthly"
  data-metadata='{"product_id": "plan_pro", "customer_name": "John"}'>
</fivo-button>

Order Tracking Attributes

data-referencestringOptional

Ihre Bestell-/Rechnungs-ID. Sichtbar im Dashboard und in Webhooks. Max. 255 Zeichen.

data-descriptionstringOptional

Zahlungsbeschreibung. Sichtbar im Dashboard. Max. 500 Zeichen.

data-metadatastringOptional

JSON-String mit benutzerdefinierten Daten. In Webhooks enthalten. Max. 10 KB.

i

Diese sind optional

Die Kunden-E-Mail ist immer erforderlich (wird automatisch vom Widget abgefragt). Referenz, Beschreibung und Metadaten sind optional. Verwenden Sie sie, wenn Sie Zahlungen mit Ihrem Bestellsystem verknüpfen möchten.

Gut zu wissen

Leichtgewichtig

~7 KB Skript, lädt asynchron. Verlangsamt Ihre Seite nicht.

Isolierte Styles

Verwendet Shadow DOM. Ihr CSS beeinflusst es nicht.

Betrugsschutz

Feste Beträge werden auf der Blockchain verifiziert.

9 Blockchains

USDC auf allen 9 Chains mit automatischem Bridging über CCTP. EURC auf 3 Chains (nur gleiche Chain).

Mehr Kontrolle gewünscht?

Verwenden Sie für serverseitige Weiterleitungsabläufe oder sehen Sie sich den API-Integrationsleitfaden für Webhooks und programmatische Zahlungsabfragen an.Checkout Sessions