Skip to main content
This guide takes you from zero to a funded-ready USDC wallet: authenticate, create a customer, and create a wallet for them. Every call uses the base URL https://api.paystack.com.

Prerequisites

  • A GlobalStack account — request access from the dashboard.
  • Your secret API key, issued during onboarding. Keep it server-side. See Authentication.

Steps

1

Verify your key

Make an authenticated call to a read-only endpoint to confirm your key works. Listing supported currencies needs no request body:
curl https://api.paystack.com/v1/currencies \
  -H "Authorization: Bearer YOUR_SECRET_KEY"
A 200 with a "status": true envelope means you’re authenticated. A 401 with authentication_failed means the key is missing or wrong.
2

Create a customer

Wallets belong to a customer. Create one with their type, name, email, and ISO 3166-1 alpha-2 country_code:
curl https://api.paystack.com/v1/customers \
  -X POST \
  -H "Authorization: Bearer YOUR_SECRET_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "type": "individual",
    "name": "Ada Lovelace",
    "email": "ada@example.com",
    "country_code": "NG"
  }'
The response returns the new customer’s id (prefixed cus_). Save it for the next step.
3

Create a wallet

Create a USDC wallet for that customer. Only currency is required:
curl https://api.paystack.com/v1/wallets \
  -X POST \
  -H "Authorization: Bearer YOUR_SECRET_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "currency": "USDC",
    "customer_id": "cus_...",
    "label": "Ada — USDC"
  }'
You now have a wallet (id prefixed wal_) ready to hold and move funds.

Next steps

Get a quote

Lock an FX rate before you move money.

Run an onramp

Turn stablecoins into local currency, settled to a beneficiary.

Stay idempotent

Safely retry write requests without creating duplicates.

Handle errors

The response envelope and the error codes to branch on.
Pass an Idempotency-Key header on every POST so a retry never creates a second customer or wallet.