Base URL: https://api.bankcaymanislands.com/v1
Use a bearer token. Include it in every request:
Authorization: Bearer <YOUR_API_KEY>
curl -X GET "https://api.bankcaymanislands.com/v1/wallets" \ -H "Authorization: Bearer $API_KEY" \ -H "Content-Type: application/json"
Requests are rate-limited per API key. Default limits:
When you exceed the limit, the API returns 429 with a Retry-After header.
For POST requests that create objects, send Idempotency-Key. Repeated requests with the same key return the same result.
Idempotency-Key: 6d2e7a9b-2e2b-4a62-9a51-0c83d8b5bd7c
All error responses follow this shape:
{
"error": {
"code": "validation_error",
"message": "Invalid amount",
"request_id": "req_01J9ZQK9Y2S2M0..."
}
}validation_error — invalid inputunauthorized — missing/invalid tokeninsufficient_funds — balance too lowrate_limited — too many requestsList endpoints use cursor pagination:
GET https://api.bankcaymanislands.com/v1/transfers?limit=25&cursor=tr_01J...
{
"data": [...],
"next_cursor": "tr_01J...",
"has_more": true
}/walletsList wallets for the authenticated account.
curl -X GET "https://api.bankcaymanislands.com/v1/wallets" \ -H "Authorization: Bearer $API_KEY"
{
"data": [
{
"id": "wal_01J9Z...",
"currency": "USD",
"available_balance": "12450.32",
"hold_balance": "120.00"
},
{
"id": "wal_01J9Z...",
"currency": "BTC",
"available_balance": "0.42350000",
"hold_balance": "0.00000000"
}
],
"has_more": false,
"next_cursor": null
}/wallets/{wallet_id}Get wallet details.
curl -X GET "https://api.bankcaymanislands.com/v1/wallets/wal_01J9Z..." \ -H "Authorization: Bearer $API_KEY"
{
"id": "wal_01J9Z...",
"currency": "EUR",
"available_balance": "832.12",
"hold_balance": "0.00",
"updated_at": "2026-03-02T00:00:00Z"
}/transfersCreate a new transfer (crypto or fiat).
curl -X POST "https://api.bankcaymanislands.com/v1/transfers" \
-H "Authorization: Bearer $API_KEY" \
-H "Idempotency-Key: 7e8b..." \
-H "Content-Type: application/json" \
-d '{
"amount": "250.00",
"currency": "EUR",
"destination": {
"type": "iban",
"iban": "DE89370400440532013000",
"system": "SEPA"
},
"reference": "Invoice #1024"
}'{
"id": "tr_01JA...",
"status": "PENDING",
"amount": "250.00",
"currency": "EUR",
"created_at": "2026-03-02T00:00:00Z"
}/transfersList transfers.
curl -X GET "https://api.bankcaymanislands.com/v1/transfers?limit=25" \ -H "Authorization: Bearer $API_KEY"
{
"data": [
{
"id": "tr_01JA...",
"status": "COMPLETED",
"amount": "0.0100",
"currency": "BTC",
"created_at": "2026-03-01T12:00:00Z"
}
],
"has_more": false,
"next_cursor": null
}/payments/intentsCreate a payment intent.
curl -X POST "https://api.bankcaymanislands.com/v1/payments/intents" \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"amount": "99.00",
"currency": "USD",
"description": "Subscription",
"metadata": { "plan": "pro" }
}'{
"id": "pi_01J...",
"status": "REQUIRES_PAYMENT_METHOD",
"amount": "99.00",
"currency": "USD",
"client_secret": "pi_01J..._secret_..."
}Webhooks deliver events to your endpoint. Verify signatures using X-Signature.
POST https://yourapp.com/webhooks/boci X-Signature: t=...,v1=...
/webhooks/endpointsRegister a webhook endpoint.
curl -X POST "https://api.bankcaymanislands.com/v1/webhooks/endpoints" \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"url": "https://yourapp.com/webhooks/boci",
"events": ["transfer.completed", "payment.failed"]
}'{
"id": "wh_01J...",
"url": "https://yourapp.com/webhooks/boci",
"events": ["transfer.completed", "payment.failed"],
"created_at": "2026-03-02T00:00:00Z"
}