<script> tag adds a smart top-3 cards widget to your checkout that surfaces the 3 best cards by reward rate for this purchase as stacked, individually-tappable rows — best first.
SuperPay sits in the decision layer between the cart and the card. When shoppers see real reward amounts at checkout — "$12.90 cash back with Chase Sapphire" — they buy with more confidence, reach for higher-value carts, and come back more often.
SuperPay is the AI-powered payment intelligence layer for the modern wallet. On the consumer side we tell shoppers which card to use at every merchant, surface unused perks, and forecast their best path to maximum rewards. On the merchant side, our Checkout API adds a smart card-recommendation widget to your checkout — surfacing the top 3 cards by reward rate for this purchase as stacked, individually-tappable rows (best first). No integration with your payment processor required.
<script> tag) that renders the top 3 cards as stacked, tappable rows on your existing checkout.Shoppers with multiple credit cards face decision fatigue at checkout. Which card should I use? Am I missing rewards? That hesitation costs you conversions. SuperPay removes the question entirely.
Shopper hesitates, second-guesses their card choice, maybe abandons the cart to "think about it." You lose the sale — not because of price, but because of friction.
Shopper sees their top 3 cards stacked best-first — "Chase Sapphire — earn $12.90", "Amex Gold — earn $10.75", "Citi Custom Cash — earn $8.60". They tap the one in their wallet, feel smart, and buy with confidence.
/v1/recommend — server-side or directly from the widget.<script> tag), or your own UI built on the JSON response.| Stage | Who | What happens |
|---|---|---|
| Recommend | SuperPay | We rank our full ~320-card public catalog for the amount + category (or MCC) you send and return the top 3 by effective reward rate (popularity + lower-AF as tie-breakers). |
| Render | SuperPay widget on your checkout | Shopper sees the top 3 cards as stacked rows, best first — each row "[Card] — earn ~$X back" and tappable to apply. |
| Pay | Shopper | Picks up the recommended card and completes purchase on your existing checkout (Shopify, Stripe, custom — we don't care). |
| Earn | Card issuer → Shopper | The shopper's card issuer awards the reward directly, on the issuer's normal cycle. SuperPay is not in this loop. |
Visit /for-merchants, fill in your business name, contact email, and store origins (the domains where the widget will be embedded). You'll receive a verification email — click it and your sandbox key is provisioned immediately.
Call POST /v1/recommend with the cart amount and either an MCC or a category. You can call this server-to-server, or skip it entirely and let the widget call it for you (Step 3).
curl -X POST https://superpayrewards.com/v1/recommend \
-H "Authorization: Bearer sp_test_..." \
-H "Content-Type: application/json" \
-d '{
"amount": 87.45,
"mcc": "5411",
"merchant_name": "Whole Foods Market"
}'
Response (abridged):
{
"recommendation_id": "9f8...",
"top_cards": [
{
"rank": 1,
"name": "Blue Cash Preferred® Card from American Express",
"reward_rate": 6,
"estimated_reward_cents": 524,
"estimated_reward_display": "$5.24",
"reason": "6% on groceries",
"apply_url": "https://..."
},
{ "rank": 2, "name": "Citi Custom Cash", "reward_rate": 5, ... },
{ "rank": 3, "name": "Amex Gold", "reward_rate": 4, ... }
],
"top_card": { /* DEPRECATED — same as top_cards[0]. Removed one release after this one. */ },
"alternates": [ /* DEPRECATED — top_cards[1..] in lighter shape. */ ],
"display": {
"headline": "Top 3 cards for this purchase",
"subline": "Top pick: Blue Cash Preferred · 6% back"
}
}
Migrating? Read top_cards[] instead of top_card + alternates — every entry has the same shape and includes rank, image_url, and apply_url. The deprecated fields will be removed one release after this one ships.
Drop a mount <div> with the cart context, then load /v1/widget.js once anywhere on the page. The widget calls /v1/recommend for you and renders the top-3 cards (stacked rows, best first, each row tappable to apply).
<div data-superpay-recommend
data-amount="87.45"
data-mcc="5411"
data-merchant="Whole Foods Market"
data-superpay-effective-cost-target="#sp-effective-cost"></div>
<!-- Optional: empty target the widget fills with
"Effective cost with SuperPay: $X.XX — after $Y.YY rewards".
Place it directly under your Pay / Place Order button. -->
<div id="sp-effective-cost"></div>
<script src="https://superpayrewards.com/v1/widget.js"
data-key="sp_test_..." async></script>
Effective-cost line. The data-superpay-effective-cost-target attribute is opt-in — leave it off and nothing extra renders. When set, the widget fills the referenced element with a single muted line showing the cart total minus the top pick's estimated rewards. The line is gated so it never lies to a shopper: it only renders when the top pick is a cashback card with a positive estimated reward, a known cart total, and the resulting effective cost is non-negative (rewards never shown as exceeding the order total). Points/miles cards, $0 reward estimates, missing amounts, or a negative effective cost all suppress the line silently.
The shopper picks up the recommended card and pays through your existing processor. Their card issuer awards the reward directly under their cardholder agreement — there's no SuperPay-side confirmation, no webhook, no payout to wire up. SuperPay never holds funds or settles rewards.
Email hello@superpayrewards.com with your sandbox merchant ID and the production domain(s). We'll issue a live sp_live_ key and walk through your first 100 live transactions together.
The SuperPay widget renders as a non-intrusive badge or button on your checkout. It's framework-agnostic — works inside Shopify themes, custom React/Vue checkouts, BigCommerce, WooCommerce, and bare HTML.
| Attribute | Default | Purpose |
|---|---|---|
data-key | — | Your merchant API key (sp_live_ for production, sp_test_ for sandbox). |
data-amount | — | Cart total in USD (e.g. 87.45). |
data-mcc | — | ISO 18245 4-digit MCC. Preferred over data-category. |
data-category | — | Fallback category (e.g. groceries) when MCC is unknown. |
data-merchant | — | Display name (e.g. "Whole Foods Market"). |
data-theme | auto | light · dark · auto |
data-superpay-effective-cost-target | — | Optional CSS selector for an empty element the widget will fill with "Effective cost with SuperPay: $X.XX — after $Y.YY rewards". Renders only when top pick is cashback, reward > 0, cart amount known, and effective cost ≥ 0; otherwise silent. |
superpayrewards.com, no inline scripts, no third-party trackers. Add the host to script-src and connect-src.import express from "express";
const app = express();
app.post("/cart/recommendation", async (req, res) => {
const rec = await fetch("https://superpayrewards.com/v1/recommend", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.SUPERPAY_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
amount: req.body.subtotal,
mcc: req.body.mcc, // preferred
category: req.body.category, // fallback
merchant_name: req.body.merchantName,
}),
}).then(r => r.json());
res.render("checkout", { recommendation: rec });
});
import os, requests
def get_recommendation(subtotal, mcc, merchant_name):
r = requests.post(
"https://superpayrewards.com/v1/recommend",
headers={
"Authorization": f"Bearer {os.environ['SUPERPAY_KEY']}",
},
json={
"amount": subtotal,
"mcc": mcc,
"merchant_name": merchant_name,
},
timeout=5,
)
r.raise_for_status()
return r.json()
<!-- in your cart.liquid or checkout.liquid -->
<div data-superpay-recommend
data-amount="{{ cart.total_price | divided_by: 100.0 }}"
data-merchant="{{ shop.name }}"
data-category="shopping"></div>
<script
src="https://superpayrewards.com/v1/widget.js"
data-key="{{ settings.superpay_api_key }}"
async></script>
The Card-Recommendation Widget is 100% free for merchants. No fees, no rev share, no contract minimums. SuperPay treats the widget as a value-add at checkout and a shopper-acquisition channel.
One script tag, one div. No SDK, no build step, no processor change. Works on Shopify, Magento, and custom carts.
No monthly fees, no per-call charges, no usage caps. Unlimited recommendation calls (300/min per key).
No contract, no rev share, no commitments. Use the widget as long as it's helping your checkout — cancel any time.
Questions about the API or want to discuss a custom integration? Email hello@superpayrewards.com.
sp_live_ API keys per merchant; sandbox keys use the sp_test_ prefix.Need our security policy or to start a vendor review? View our security policy or email security@superpayrewards.com.
No. SuperPay sits alongside it. The widget surfaces the top 3 cards for the purchase; your loyalty program continues to handle deeper LTV mechanics.
Yes — the recommendation is informational. The shopper still pays through your existing checkout and applies whatever promo codes you allow.
The widget silently no-ops and never blocks the buy button. The endpoint returns HTTP 404 NO_RECOMMENDATION for server callers.
No. SuperPay only recommends a card the shopper already has (or could apply for separately at their issuer). The shopper's card issuer awards the reward directly under their existing cardholder agreement. SuperPay never holds funds, mints rewards, or pays out shoppers — see our Terms of Service.
Sandbox in 15 minutes. Production keys typically issued within 1 business day after a quick review of your domain and use case.
Yes — once you're live, ask about featured placement in the SuperPay consumer app, push notification slots, and category sponsorships.
Instantly, from your merchant dashboard or by emailing us. New keys are provisioned in seconds.
sp_live_ key issued and rotated into your env