Integration guide

Peptide-Pay has two integration paths: a 3-line drop-in Widget, and a Stripe-compatible REST API. Pick one.

Option 1 — Widget (easiest)

Load the script, add a button with data attributes, done.

<script src="https://peptide-pay.com/widget.js"></script>

<button
  data-peptidepay
  data-wallet="0xYOUR_USDC_POLYGON_WALLET"
  data-amount="94"
  data-currency="EUR"
>
  Pay €94
</button>

Supported attributes:

Option 2 — REST API

Create a checkout session from your backend (Stripe-compatible shape):

POST https://peptide-pay.com/api/v1/checkout/init
Content-Type: application/json

{
  "wallet":       "0xYOUR_POLYGON_WALLET",
  "amount":       9400,         // cents
  "currency":     "EUR",
  "email":        "customer@example.com",
  "success_url":  "https://yoursite.com/thanks",
  "cancel_url":   "https://yoursite.com/cart",
  "metadata":     { "order_id": "xyz-001" }
}

// Response
{
  "id":         "cs_abc123...",
  "url":        "https://buy.moonpay.com/?...",   // redirect customer here
  "status":     "pending",
  "amount":     9400,
  "currency":   "EUR",
  "expires_at": "2026-04-19T22:00:00Z"
}

Then redirect the customer:

const res = await fetch('https://peptide-pay.com/api/v1/checkout/init', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({
    wallet: process.env.MERCHANT_WALLET,
    amount: 9400,
    currency: 'EUR',
  }),
});
const session = await res.json();
window.location.href = session.url;

Session status

Poll the session to check payment status:

GET https://peptide-pay.com/api/v1/sessions/{session_id}

// Response
{
  "id":        "cs_abc123...",
  "status":    "paid",              // pending | paid | expired | failed
  "amount":    9400,
  "currency":  "EUR",
  "paid_at":   "2026-04-19T21:34:12Z",
  "txid":      "0xe4f2..."           // Polygon TX hash
}

Settlement flow

What happens under the hood when a customer pays €94:

  1. Customer clicks your button → redirects to Moonpay
  2. Moonpay charges their card for €94 (takes ~4.5% on-ramp fee)
  3. Moonpay sends 89.77 USDC to our split wallet on Polygon
  4. Our split contract automatically fires:
    • → 1.79 USDC to Peptide-Pay (2% fee)
    • → 87.98 USDC to your wallet
  5. Webhook fires, session marked paid, dashboard updated
  6. Total time: 30–120 seconds

Pricing

8% all-in typical for card payments (≈4.5% Moonpay + 1.5% PayGate + 2% Peptide-Pay).
Merchant nets ~92% of the customer's charge.

No monthly fees. No setup costs. No minimums. Pay only when you get paid.

Supported countries

Customer side: wherever Moonpay operates (90+ countries, most of EU, US, CA, UK, AU).
Merchant side: anyone with a USDC Polygon wallet. No restrictions.

Help?

Open an issue on GitHub or DM us on Telegram.