WooCommerce
The WordPress plugin adds card, wallet and crypto checkout to an existing store. Install it, paste your payout wallet, choose which methods to show.
Accept cards, wallets and crypto at checkout. Every payment settles to your own wallet in USDC on Polygon.
Three moves from an empty wallet to a paid order. Nothing to sign up for before your first test payment.
Paste a USDC address on Polygon. That is where every payout lands. There is no merchant account to open.
Install a store plugin, send a payment link, or make two API calls. Each order gets its own encrypted receiving address.
When the customer pays, the funds are forwarded to your wallet and your store receives a callback that marks the order paid.
Cards, wallets and local bank rails from licensed providers. The checkout shows the options that fit the customer's country, currency and order amount.
Live provider status, refreshed hourlyMinimums are set by each provider. Names are trademarks of their owners.
Accept BTC, ETH, SOL, TRX, USDC, USDT and more. Card payouts arrive in USDC on Polygon; crypto payments are forwarded to the wallet you choose.
Networks: Bitcoin, Ethereum, Ethereum tokens (ERC20), TRON, TRON tokens (TRC20), Solana, Polygon, BNB Smart Chain (BEP20), Base, Arbitrum, Optimism, Avalanche C-Chain, Linea, Monad.
The WordPress plugin adds card, wallet and crypto checkout to an existing store. Install it, paste your payout wallet, choose which methods to show.
A gateway module for hosting and recurring service billing.
Payment module for PrestaShop stores.
Payment extension for OpenCart stores.
No website yet? Create a link with Apple Pay, Google Pay or cards and send it in a chat or an email.
Two GET requests. No SDK to install.
https://api.payster.net/v1/card/wallet3%
platform fee per successful payment
plus the payment provider's fee, shown at checkout. No setup fee to start.
Processing serious volume? Talk to support about a custom rate for your Payster account.
White-label and partners
Agencies, platforms and payment consultants can run Payster on their own domain, with their own checkout branding, and add their own fee per merchant. Your share is split out of each payment and sent to your wallet with the merchant's payout.
Plain HTTPS GET calls that work from any language. No SDK to keep updated; an API key is optional and only raises rate limits.
# 1. Create a receiving address for this order (server side)
curl -G "https://api.payster.net/v1/card/wallet" \
-H "Authorization: Bearer $API_KEY" \
--data-urlencode "address=0xYOUR_EVM_PAYOUT_WALLET" \
--data-urlencode "callback=https://shop.example/paid?order=10482"
# Response
# { "address_in": "<encrypted, already URL-encoded>",
# "polygon_address_in": "0x...", "callback_url": "https://shop.example/paid?order=10482",
# "ipn_token": "...", "checkout_token": "v1....", "checkout_expires_at": 1792607263 }
# (without an API key the response also carries "callback_secret")
# 2. Redirect the customer (full redirect, never an iframe)
https://pay.payster.net/v1/checkout?address=<address_in>&checkout_token=<checkout_token>&amount=25¤cy=USD&provider=auto&email=buyer%40shop.example
# 3. Your callback receives a signed GET:
# GET https://shop.example/paid?order=10482&value_coin=...&coin=...&txid_in=...&txid_out=...
# X-Payster-Signature: t=1792000000,v1=<hex HMAC-SHA256>
const API = "https://api.payster.net";
const CHECKOUT = "https://pay.payster.net";
export async function createCheckoutUrl(order) {
// 1. one receiving address per order
const q = new URLSearchParams({
address: process.env.PAYOUT_WALLET, // your self-custodial EVM wallet
callback: `https://shop.example/paid?order=${order.id}`,
});
const res = await fetch(`${API}/v1/card/wallet?${q}`, {
headers: { Authorization: `Bearer ${process.env.PAYSTER_API_KEY}` },
});
const data = await res.json();
if (!res.ok) throw new Error(`${data.code}: ${data.error}`);
await saveOrder(order.id, { ipn_token: data.ipn_token }); // keep for status checks
// 2. send the customer here with a full redirect (address_in is already URL-encoded)
return (
`${CHECKOUT}/v1/checkout?address=${data.address_in}` +
`&checkout_token=${encodeURIComponent(data.checkout_token)}` +
`&amount=${order.total}¤cy=USD&provider=auto` +
`&email=${encodeURIComponent(order.email)}`
);
}
<?php
$api = "https://api.payster.net";
$checkout = "https://pay.payster.net";
// 1. one receiving address per order
$query = http_build_query([
"address" => getenv("PAYOUT_WALLET"), // your self-custodial EVM wallet
"callback" => "https://shop.example/paid?order=" . $order["id"],
]);
$ctx = stream_context_create(["http" => [
"header" => "Authorization: Bearer " . getenv("PAYSTER_API_KEY"),
"ignore_errors" => true,
]]);
$res = json_decode(file_get_contents("$api/v1/card/wallet?$query", false, $ctx), true);
if (empty($res["address_in"])) { throw new Exception($res["code"] ?? "wallet_not_created"); }
save_order($order["id"], ["ipn_token" => $res["ipn_token"]]);
// 2. full redirect to checkout (address_in is already URL-encoded)
header("Location: $checkout/v1/checkout?address={$res['address_in']}"
. "&checkout_token=" . urlencode($res["checkout_token"])
. "&amount={$order['total']}¤cy=USD&provider=auto"
. "&email=" . urlencode($order["email"]));
import os, requests
from urllib.parse import quote
API = "https://api.payster.net"
CHECKOUT = "https://pay.payster.net"
def create_checkout_url(order):
# 1. one receiving address per order
r = requests.get(f"{API}/v1/card/wallet", params={
"address": os.environ["PAYOUT_WALLET"], # your self-custodial EVM wallet
"callback": f"https://shop.example/paid?order={order['id']}",
}, headers={"Authorization": f"Bearer {os.environ['PAYSTER_API_KEY']}"}, timeout=20)
data = r.json()
if not r.ok:
raise RuntimeError(f"{data['code']}: {data['error']}")
save_order(order["id"], ipn_token=data["ipn_token"])
# 2. full redirect (address_in is already URL-encoded)
return (f"{CHECKOUT}/v1/checkout?address={data['address_in']}"
f"&checkout_token={quote(data['checkout_token'], safe='')}"
f"&amount={order['total']}¤cy=USD&provider=auto"
f"&email={quote(order['email'], safe='')}")
Set up Payster on a test order today and see the payout land in your own wallet.