Skip to main content

Overview

Banks, microfinance institutions, neobanks, and remittance platforms can embed StableStack to offer their end-customers stablecoin accounts, cross-border payouts, and real-time transaction visibility — without building blockchain infrastructure from scratch. StableStack handles custody, rails, and compliance tooling so you can focus on your product.

Core Flow

1

KYC your customers and register them

Register each end-customer in StableStack with the appropriate customer type. Upload KYC documents to satisfy compliance requirements.Create a customer:
POST /individual-customers
{
  "first_name": "Amara",
  "last_name": "Osei",
  "email": "amara.osei@example.com",
  "country": "Ghana",
  "phone": "+233244000000"
}
Upload KYC documents:
POST /customers/{customer_id}/kyc
Upload identity documents (passport, national ID, utility bill) as multipart form data.
2

Provision stablecoin wallets per customer

Issue a dedicated stablecoin wallet to each customer on your platform. The wallet address is unique to the customer and can be used to receive inbound deposits.
POST /wallets
{
  "customer_id": "CUSTOMER_ID",
  "currency": "USDC",
  "network": "erc20",
  "description": "Customer USDC account"
}
3

Manage customer payout beneficiaries

Let customers save their preferred bank accounts or external wallets for fast repeat payouts.Add a bank beneficiary:
POST /payout/methods/banks
{
  "customer_id": "CUSTOMER_ID",
  "account_number": "0987654321",
  "bank_code": "000013",
  "bank_name": "GTBank",
  "currency": "NGN",
  "country": "Nigeria",
  "recipient_name": "Amara Osei"
}
Add a wallet beneficiary:
POST /payout/methods/wallets
{
  "customer_id": "CUSTOMER_ID",
  "address": "RecipientWalletAddressHere",
  "network": "erc20",
  "currency": "USDC",
  "recipient_name": "Amara Osei"
}
4

Process customer payouts

Execute withdrawals on behalf of customers — to local bank accounts (remittance) or external stablecoin wallets.Bank payout (remittance):
POST /payouts/banks
{
  "customer_id": "CUSTOMER_ID",
  "currency": "USDC",
  "account_number": "0987654321",
  "bank_name": "GTBank",
  "bank_code": "000013",
  "amount": "500",
  "recipient_name": "Amara Osei",
  "recipient_currency": "NGN",
  "recipient_country": "Nigeria"
}
Stablecoin wallet payout:
POST /payouts/wallets
{
  "customer_id": "CUSTOMER_ID",
  "currency": "USDC",
  "address": "RecipientWalletAddressHere",
  "amount": 200,
  "network": "erc20",
  "recipient_name": "Amara Osei"
}
5

Fetch customer transaction history

Provide customers with a full transaction history or pull records for compliance reporting.
GET /customers/transactions/by_customer_id/{customer_id}
For a specific transaction:
GET /customers/transactions/by_txid/{transaction_id}
GET /customers/transactions/by_ref_id/{reference_id}
6

Monitor all activity with webhooks

Configure webhooks to keep your core banking system in sync with every wallet event and payout status change.Key events to subscribe to:
  • wallet.transaction.inbound — Credit a customer’s account when funds arrive
  • wallet.transaction.outbound — Debit a customer’s account when funds leave
  • payout.completed — Confirm successful remittance delivery
  • payout.failed — Trigger retry logic or customer notification

Customer Account Architecture

A typical financial institution account structure on StableStack:
Institution (Merchant)
├── Merchant Wallets     → Liquidity pools (USDC / ERC20, USDC / Polygon)
└── Customers
    ├── Customer A
    │   ├── Wallet: USDC / ERC20
    │   ├── Payout Method: GTBank NGN
    │   └── Transactions: history
    └── Customer B
        ├── Wallet: USDC / Polygon
        └── Payout Method: External USDC wallet

Compliance Touchpoints

RequirementStableStack Capability
Customer identityPOST /individual-customers or POST /business-customers + KYC upload
Transaction auditGET /transactions with full history
Payout traceabilityReference IDs on every payout
Real-time monitoringWebhook events for every state change

Key APIs Used

EndpointPurpose
POST /individual-customersRegister an individual customer
POST /business-customersRegister a business customer
POST /customers/{customer_id}/kycUpload KYC documents
GET /customersList all customers
POST /walletsIssue a wallet to a customer
GET /wallets/{customer_id}/customerView all wallets for a customer
POST /payout/methods/banksSave a customer’s bank beneficiary
POST /payout/methods/walletsSave a customer’s wallet beneficiary
GET /payout/methods/{payout_method_id}Retrieve a beneficiary
POST /payouts/banksExecute a bank payout for a customer
POST /payouts/walletsExecute a wallet payout for a customer
GET /payouts/feesPre-check payout fees
GET /customers/transactions/by_customer_id/{id}Full transaction history per customer

Next Steps