Two-call REST API · No API key

Wire it in 5 minutes.

Drop a plugin onto your store or call our compact API directly. Everything is JSON, nothing is rate-limited at the door, and no API key is required.

Quickstart

Five minutes from snippet to first settlement.

  1. 1
    Pick your integration path. Use a plugin if you run WooCommerce, PrestaShop or WHMCS — otherwise call the REST API directly.
  2. 2
    Configure your wallet. Address, chain, and settlement asset (USDC recommended). Stored only in your plugin / your server — never on ours.
  3. 3
    Create a checkout. POST /api/checkout with the order amount & reference. Receive a checkout_url.
  4. 4
    Redirect the buyer. Send them to checkout_url. They pick any rail; the page handles the rest.
  5. 5
    Reconcile on settlement. We POST a webhook to your webhook_url. Or poll GET /api/transaction from your thank-you page.

Drop-in plugins

Click the platform you use. Install, paste your wallet, done.

🛒

WooCommerce

Adds a payment method to WooCommerce checkout. Supports classic checkout and Block-based checkout.

Download .zip →

🧱

PrestaShop

Native module. Drag-and-drop install through the back office.

Download .zip →

🧾

WHMCS

Standard gateway module. Drop into /modules/gateways and activate from the admin panel.

Download .zip →

API endpoints

Base URL: https://flexpay.to/api. All responses are JSON with a status envelope.

GET /api/payment_options

Price-check available rails for a given amount and currency.

curl "https://flexpay.to/api/payment_options?fiat_amount=50&fiat_currency=USD"
POST /api/checkout

Create a pending order. Returns a transaction_code and a checkout_url you can redirect your customer to.

curl -X POST "https://flexpay.to/api/checkout" \
  -H "Content-Type: application/json" \
  -d '{
    "fiat_amount":        49.99,
    "fiat_currency":      "USD",
    "external_reference": "ORDER-1011",
    "webhook_url":        "https://yourshop.com/wp-json/wc/v3/...",
    "success_url":        "https://yourshop.com/checkout/thanks?o=1011",
    "cancel_url":         "https://yourshop.com/checkout/cancel?o=1011",
    "customer": {
      "wallet_address":          "0xYourMerchantWallet",
      "crypto_currency":         "USDC",
      "crypto_currency_network": "POLYGON"
    }
  }'

Response:

{
  "status": "success",
  "data": {
    "transaction_code": "a1b2c3d4-e5f6-4789-9abc-deadbeefcafe",
    "amount_in_usd":    49.99,
    "checkout_url":     "https://flexpay.to/pay/a1b2c3d4-…",
    "payment_options":  [ ... ]
  }
}
GET /api/transaction

Look up the live status of an order. Use this to reconcile from your thank-you page when polling.

curl "https://flexpay.to/api/transaction?transaction_code=a1b2c3d4-…"
💡 The hosted checkout page lives at https://flexpay.to/pay/<transaction_code> and is branded with your domain. Redirect your customers there after creating an order.

Webhooks

If you set webhook_url on a checkout call, we POST a JSON body when the payment lands. Reply 2xx within 8 seconds.

{
  "event":              "transaction.settled",
  "transaction_code":   "a1b2c3d4-…",
  "external_reference": "ORDER-1011",
  "fiat_amount":        49.99,
  "fiat_currency":      "USD",
  "received_usd":       49.99,
  "wallet_address":     "0xYourMerchantWallet",
  "wallet_currency":    "USDC",
  "wallet_network":     "POLYGON",
  "payout_dispatched":  true,
  "timestamp":          1736000000
}

Webhooks are fire-and-forget — there is no retry. If your endpoint is offline, poll /api/transaction from your thank-you page to reconcile.