Core card operations available to all partners:
Rate Limit: 100 requests/minute (default)
Enhanced features with granular access control:
balanceAccess feature)transactionAccess feature)cardManagement feature)advancedReporting feature)Rate Limit: 500 requests/minute (default)
Security: Card numbers are masked - only last 4 digits returned
You'll receive your API key and secret via email after successful partnership registration. Your API key will be assigned to either v1 or v2 product tier based on your agreement.
All API requests must be signed using HMAC-SHA256 authentication.
| Header | Description | Example |
|---|---|---|
x-api-key |
Your unique API key | ak_1234567890abcdef |
x-timestamp |
Current Unix timestamp (seconds) | 1704067200 |
x-nonce |
MANDATORY - Unique request identifier | 550e8400-e29b-41d4-a716-446655440000 |
x-signature |
HMAC-SHA256 signature | a1b2c3d4... |
Create the signature by following these steps:
{METHOD}{PATH}{TIMESTAMP}{API_KEY}{BODY}const crypto = require('crypto');
function createHmacSignature(method, path, apiKey, secretKey, body = '') {
const timestamp = Math.floor(Date.now() / 1000); // Unix timestamp in seconds
const stringToSign = [
method.toUpperCase(),
path,
timestamp,
apiKey,
body ? JSON.stringify(body) : '',
].join('');
const signature = crypto
.createHmac('sha256', secretKey)
.update(stringToSign)
.digest('hex');
return {
'x-api-key': apiKey,
'x-signature': signature,
'x-timestamp': timestamp.toString(),
'x-nonce': crypto.randomUUID(),
'Content-Type': 'application/json'
};
}
GET /ping - Infrastructure Health CheckFor load balancers and basic service monitoring. No authentication required.
GET /ping HTTP/1.1
Host: api.zebec.io
Response: "Hello World!"
GET /orders/programs?country={countryCode}
Query Parameters:
country (required): ISO 3166-1 alpha-3 country code (e.g., "USA", "GBR", "CAN")Example Response:
[
{
"id": "silver-regional-na",
"type": "REGIONAL",
"name": "Silver Card - Regional",
"description": "Regional card for North America",
"isRegional": true,
"isInternational": false,
"availableCurrencies": ["USD", "CAD"],
"region": "NA",
"country": "USA"
}
]
POST /orders/validate-address
Request Body:
{
"address1": "1600 Pennsylvania Avenue NW",
"city": "Washington",
"state": "DC",
"postalCode": "20500",
"countryCode": "USA"
}
POST /orders/create
Request Body:
{
"amount": {
"amount": 100,
"currencyCode": "USD"
},
"programId": "silver-regional-na",
"recipient": {
"participantId": "USER123",
"firstName": "John",
"lastName": "Doe",
"address1": "123 Main St",
"address2": "Apt 4B",
"city": "San Francisco",
"state": "CA",
"postalCode": "94105",
"countryCode": "USA",
"emailAddress": "john.doe@example.com",
"mobilePhone": "4155551234",
"language": "en-US"
},
"receipt": {
"deposit": {
"tokenName": "USDC",
"tokenAmount": 100000000,
"txHash": "0xabc123...",
"buyerAddress": "0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb"
}
}
}
GET /orders/lookup?email={email}
GET /orders/lookup?orderId={orderId}
GET /orders/lookup?txHash={txHash}
Provide exactly one query parameter.
GET /v2/cards/{orderId}
Returns: Complete card information including current balance
Security: Card number is masked - only last 4 digits shown
GET /v2/cards/{orderId}/balance
Requires: balanceAccess feature flag
Example Response:
{
"orderId": "804cfd34-a685-4baa-8861-15d79e2fe7e5",
"balance": {
"available": 95.50,
"pending": 0,
"currency": "USD"
},
"lastUpdated": "2026-01-06T10:30:00Z"
}
POST /v2/cards/{orderId}/transactions?page=1&limit=10
Requires: transactionAccess feature flag
Query Parameters:
page (optional): Page number (default: 1)limit (optional): Items per page (default: 10, max: 100)GET /v2/cards?page=1&limit=10
Returns: Paginated list of all cards for your client
{
"statusCode": 403,
"message": "This endpoint requires a v2 API key.",
"error": "Forbidden",
"upgradeInfo": {
"currentProduct": "v1",
"requiredProduct": "v2",
"benefits": [
"Real-time balance viewing",
"Transaction history access",
"Advanced card management",
"Higher rate limits (500 req/min)",
"Priority support"
],
"contactSales": "sales@zebec.io",
"documentation": "/docs/api-integration-guide.md"
}
}
{
"statusCode": 403,
"message": "Feature 'balanceAccess' is not enabled for your account.",
"featureInfo": {
"requiredFeature": "balanceAccess",
"currentProduct": "v2",
"enabledFeatures": ["transactionAccess"],
"message": "Please upgrade your plan or contact sales to enable this feature.",
"contactSales": "sales@zebec.io"
}
}