GroundedPay Documentation

Everything you need to accept crypto payments on your website. From one-click Shopify installs to full API access, we have you covered.

Getting Started

GroundedPay is a non-custodial crypto payment gateway. Funds go directly to your wallet -- we never hold your money. Here is how to get up and running:

1

Create your account

Head to the sign-up page and register with your business name, email, and an EVM-compatible wallet address (MetaMask, Coinbase Wallet, etc.). This is the address where you will receive payments.

2

Complete onboarding

After registration, the setup wizard will walk you through configuring your store, choosing a plan, and copying your embed code. Save your Merchant ID and API Key -- you will need them for integration.

3

Add the checkout widget

Paste the embed code into your site (see the Installation Guide below). The widget adds a "Pay with Crypto" button at checkout.

4

Go live

Test a payment from your storefront. Once confirmed, you are live. Monitor transactions from your dashboard.

Tip: The entire setup process takes under 5 minutes. No KYC or approval process is required to start accepting payments.

Installation Guide

Choose your platform below. All integrations use a lightweight JavaScript snippet that loads the GroundedPay checkout widget.

Shopify Integration

There are two ways to add GroundedPay to your Shopify store:

Option A: One-Click App Install

Search for GroundedPay in the Shopify App Store and click Install. The app will automatically configure itself with your merchant credentials. No code required.

Option B: Manual Script Tag

If you prefer manual installation, add this script to your Shopify theme:

  1. Go to Online Store → Themes → Edit Code
  2. Open theme.liquid
  3. Paste the following code just before the closing </body> tag:
<!-- GroundedPay Checkout Widget -->
<script
  src="https://cdn.groundedpay.com/checkout.js"
  data-merchant="YOUR_MERCHANT_ID"
  data-key="YOUR_API_KEY"
  defer>
</script>
Note: Replace YOUR_MERCHANT_ID and YOUR_API_KEY with the credentials from your dashboard.

WooCommerce Integration

Add the GroundedPay widget to your WooCommerce store by inserting the script tag into your theme:

  1. Go to Appearance → Theme Editor in your WordPress admin
  2. Open your theme's footer.php file
  3. Paste the following code before <?php wp_footer(); ?>:
<!-- GroundedPay Checkout Widget -->
<script
  src="https://cdn.groundedpay.com/checkout.js"
  data-merchant="YOUR_MERCHANT_ID"
  data-key="YOUR_API_KEY"
  data-platform="woocommerce"
  defer>
</script>

The widget will automatically detect WooCommerce cart data and display the "Pay with Crypto" button on your checkout page.

Custom Website

For any website, add the GroundedPay script and trigger checkout programmatically:

1. Include the Script

<script src="https://cdn.groundedpay.com/checkout.js" defer></script>

2. Initialize and Launch Checkout

const gp = new GroundedPay({
  merchantId: 'YOUR_MERCHANT_ID',
  apiKey: 'YOUR_API_KEY',
});

// When the user clicks "Pay with Crypto"
document.getElementById('pay-btn').addEventListener('click', () => {
  gp.open({
    amount: '49.99',         // USD amount
    label: 'Order #1234',     // Description shown in widget
    onSuccess: (tx) => {
      console.log('Payment confirmed:', tx.hash);
    },
    onCancel: () => {
      console.log('Payment cancelled');
    }
  });
});

Widget Customization

Customize the checkout widget appearance using data attributes on the script tag or through the JavaScript API.

Available Options

Attribute / Option Type Default Description
data-color string #6366f1 Primary accent color for buttons and highlights
data-button-text string "Pay with Crypto" Text displayed on the checkout button
data-logo URL none URL to your business logo, displayed in the checkout modal
data-coins string "ETH,USDC,USDT,BTC" Comma-separated list of accepted cryptocurrencies
data-theme string "dark" Widget theme: dark or light
data-position string "inline" Button position: inline, fixed-bottom, or floating

Example: Custom Colors and Coins

<script
  src="https://cdn.groundedpay.com/checkout.js"
  data-merchant="YOUR_MERCHANT_ID"
  data-key="YOUR_API_KEY"
  data-color="#22c55e"
  data-button-text="Checkout with Crypto"
  data-coins="ETH,USDC"
  data-logo="https://yoursite.com/logo.png"
  defer>
</script>

Supported Cryptocurrencies

  • ETH -- Ethereum (mainnet & Base L2)
  • USDC -- USD Coin (ERC-20 & Base)
  • USDT -- Tether (ERC-20)
  • BTC -- Bitcoin (on-chain)

API Reference

All API requests require your API key in the x-api-key header. The base URL is https://api.groundedpay.com.

Authentication: Include your API key in every request as x-api-key: YOUR_API_KEY. You can find your key in the merchant dashboard.

Create a Payment

POST /api/checkout/create

Create a new payment session. Returns a checkout URL and payment ID.

Request Body
ParameterTypeRequiredDescription
amount number required Payment amount in USD (e.g., 49.99)
label string optional Description shown to the customer (e.g., "Order #1234")
metadata object optional Arbitrary key-value data attached to the payment
redirect_url string optional URL to redirect after successful payment
webhook_url string optional Override the default webhook URL for this payment
Example Request
curl -X POST https://api.groundedpay.com/api/checkout/create \
  -H "Content-Type: application/json" \
  -H "x-api-key: YOUR_API_KEY" \
  -d '{
    "amount": 49.99,
    "label": "Order #1234",
    "metadata": { "order_id": "1234", "customer": "jane@example.com" },
    "redirect_url": "https://yoursite.com/thanks"
  }'
Example Response
{
  "id": "pay_abc123def456",
  "checkout_url": "https://pay.groundedpay.com/c/pay_abc123def456",
  "amount_usd": "49.99",
  "status": "pending",
  "created_at": "2026-04-14T12:00:00Z",
  "expires_at": "2026-04-14T12:30:00Z"
}

Check Payment Status

GET /api/checkout/status/:id

Retrieve the current status of a payment.

Path Parameters
ParameterTypeRequiredDescription
id string required The payment ID returned from the create endpoint
Example Request
curl https://api.groundedpay.com/api/checkout/status/pay_abc123def456 \
  -H "x-api-key: YOUR_API_KEY"
Example Response
{
  "id": "pay_abc123def456",
  "status": "confirmed",
  "amount_usd": "49.99",
  "amount_crypto": "0.02841",
  "coin": "ETH",
  "tx_hash": "0x8a3f...b7e2",
  "confirmed_at": "2026-04-14T12:05:23Z"
}
Status Values
StatusDescription
pendingWaiting for customer to send payment
detectedTransaction seen on-chain, awaiting confirmations
confirmedPayment confirmed and settled to your wallet
expiredPayment window expired (30 minutes)
failedTransaction failed or insufficient amount sent

Webhooks

GroundedPay sends webhook notifications to your server when payment status changes. Configure your webhook URL in the dashboard settings.

Webhook Payload

Webhooks are sent as POST requests with a JSON body:

{
  "event": "payment.confirmed",
  "payment": {
    "id": "pay_abc123def456",
    "status": "confirmed",
    "amount_usd": "49.99",
    "amount_crypto": "0.02841",
    "coin": "ETH",
    "tx_hash": "0x8a3f...b7e2",
    "metadata": { "order_id": "1234" }
  },
  "timestamp": "2026-04-14T12:05:23Z"
}

Webhook Events

EventDescription
payment.detectedTransaction seen on-chain
payment.confirmedPayment fully confirmed and settled
payment.expiredPayment window expired without completion
payment.failedPayment failed (wrong amount, reverted, etc.)

Verifying Webhooks

Each webhook includes a x-groundedpay-signature header containing an HMAC-SHA256 signature. Verify it using your API key:

const crypto = require('crypto');

function verifyWebhook(body, signature, apiKey) {
  const expected = crypto
    .createHmac('sha256', apiKey)
    .update(body)
    .digest('hex');
  return crypto.timingSafeEqual(
    Buffer.from(signature),
    Buffer.from(expected)
  );
}
Important: Always verify the webhook signature before processing. Return a 200 status code to acknowledge receipt. Failed deliveries are retried up to 5 times with exponential backoff.

Pricing

GroundedPay offers simple, transparent pricing. Lower per-transaction rates as you grow -- no hidden fees, no surprises.

Plan Monthly Fee Transaction Fee Volume Limit Key Features
Free $0 1.5% Unlimited Basic widget, 1 store, email support
Starter $99 1.2% $10K/mo Shopify integration, analytics dashboard
Growth $299 0.9% $50K/mo Multi-store, custom branding, priority support
Pro $749 0.5% $100K/mo White-label checkout, custom integrations, phone support
Enterprise Custom Custom Unlimited Dedicated account manager, SLA guarantees

Need higher volume or custom rates? Contact Sales for Enterprise pricing.

Frequently Asked Questions

Payment processing time depends on the cryptocurrency used. ETH and ERC-20 tokens (USDC, USDT) on Ethereum mainnet typically confirm within 1-3 minutes. Payments on Base L2 confirm in seconds. Bitcoin transactions require 1 confirmation, which usually takes 10-30 minutes. Once confirmed, funds are immediately available in your wallet.
GroundedPay currently supports ETH (Ethereum), USDC (USD Coin), USDT (Tether), and BTC (Bitcoin). ETH and stablecoins are available on both Ethereum mainnet and Base L2. We are actively adding support for additional chains and tokens.
Since GroundedPay is non-custodial, funds go directly to your wallet. To issue a refund, send crypto back to the customer's wallet address (available in the payment details on your dashboard). There are no chargebacks with crypto payments -- refunds are always initiated by you, giving you full control.
Yes. GroundedPay is non-custodial, meaning we never hold or have access to your funds. Payments are sent directly from the customer's wallet to yours on-chain. All API communication is encrypted via HTTPS. Webhook signatures use HMAC-SHA256 to prevent tampering. Your API keys are hashed and never stored in plaintext.
Yes. You can generate payment links directly from your dashboard and share them via email, social media, or messaging apps. Each link opens a hosted checkout page where your customer can complete the payment.
If a customer underpays, the payment will be marked as "failed" and you will be notified. You can then contact the customer to arrange a top-up or refund. Overpayments are settled to your wallet as-is -- you can refund the difference at your discretion.

Support

We are here to help you get set up and answer any questions.

Email Support

For general questions, integration help, and account issues.

support@groundedpay.com

Priority Support

Available on Growth, Pro, and Enterprise plans. Faster response times.

Upgrade your plan

Status Page

Check if our systems are operational.

View system status