IBBA Partner API v1

ILN / Versatec — Sandbox integration guide
Base URL: https://partner-api.ibba.group/api/partner/v1

Sandbox credentials

Sandbox only. Do not use in production. Rotate before go-live.

API Keypk_sandbox_iln_9c74a2dfb2da
Secretc1c46252638f0aa2dd972f9d3aa00fb76da52eefd1262fda
Modesandbox
Min amountUSD 50.00

Authentication (HMAC)

Every request must include:

HeaderDescription
X-Partner-KeyYour API key
X-Partner-TimestampUnix seconds (max skew 300s)
X-Partner-SignatureHMAC-SHA256( timestamp + "\n" + raw_body, secret ) hex lowercase

For GET requests the body is empty string.

signature = HMAC_SHA256( timestamp + "\n" + body, secret )

Fees (estimate)

FeeValue
Rail1.00% of gross
NetworkUSD 2.00 (USDT)
Conversion0.10% of gross

Example gross USD 100.00 → estimated net credit USD 96.90.

Endpoints

MethodPathDescription
GET/cardholders/{email}/cardsList cards for cardholder
POST/topupsCreate topup (idempotent by order_id)
GET/topups/{order_id}Get topup status
GET/topupsList topups (paginated)
GET/events?since=0Poll events (cursor = last id)
POST/sandbox/topups/{order_id}/simulateSandbox: simulate completed or expired
POST/sandbox/webhooks/replaySandbox: replay last webhook (needs webhook_url configured)

Create topup

POST /topups
Content-Type: application/json

{
  "order_id": "iln-test-001",
  "cardholder_email": "cardholder@example.com",
  "card_id": 12345,
  "amount": 100.00,
  "network": "ERC20"
}

network: ERC20 or TRC20. Sandbox returns dummy deposit addresses — do not send real funds.

Sandbox flow

  1. GET /cardholders/{email}/cards
  2. POST /topups with unique order_id
  3. POST /sandbox/topups/{order_id}/simulate body {"event":"completed"}
  4. GET /events?since=0 — receive topup.completed

Webhooks (optional)

Provide your HTTPS webhook URL to IBBA. We POST JSON with headers:

X-Partner-Event: topup.completed
X-Partner-Timestamp: <unix>
X-Partner-Signature: HMAC_SHA256( timestamp + "\n" + body, secret )

Event types: topup.completed, topup.expired.

Errors

HTTPmessage
401missing_partner_auth_headers, invalid_timestamp, timestamp_expired, invalid_api_key, invalid_signature
403ip_not_allowed, sandbox_only
404not_found, cardholder_not_found
422amount_below_minimum, card_not_found, invalid_network

Example (curl + bash)

BASE="https://partner-api.ibba.group/api/partner/v1"
KEY="pk_sandbox_iln_9c74a2dfb2da"
SECRET="c1c46252638f0aa2dd972f9d3aa00fb76da52eefd1262fda"
TS=$(date +%s)
BODY='{"order_id":"demo-1","cardholder_email":"...","card_id":123,"amount":100,"network":"ERC20"}'
SIG=$(printf '%s\n%s' "$TS" "$BODY" | openssl dgst -sha256 -hmac "$SECRET" | awk '{print $2}')
curl -sS "$BASE/topups" -H "Content-Type: application/json" \
  -H "X-Partner-Key: $KEY" -H "X-Partner-Timestamp: $TS" -H "X-Partner-Signature: $SIG" \
  -d "$BODY"

Contact IBBA for live credentials and webhook URL registration.
Doc generated 2026-08-10 — Partner API v1