Skip to main content

Quickstart

Create a customer account, post a double-entry journal, and execute an internal transfer — all in under 5 minutes.

Prerequisites

  • A Kora CBA tenant (e.g. demo_bank)
  • A valid JWT token with at least officer role
  • Base URL: https://api.korastratum.com/api/v1/cba

Step 1: Create an Account

curl -X POST https://api.korastratum.com/api/v1/cba/accounts \
-H "Authorization: Bearer $TOKEN" \
-H "X-Tenant-ID: demo_bank" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: acct-$(uuidgen)" \
-d '{
"customer_id": "cust-uuid",
"account_type": "SAVINGS",
"currency": "NGN",
"product_code": "SAV001",
"branch_code": "001",
"alias": "My Savings",
"initial_deposit": 50000.00,
"created_by": "user-uuid"
}'

Response:

{
"id": "acct-uuid",
"account_number": "1001234567",
"account_type": "SAVINGS",
"status": "ACTIVE",
"currency": "NGN",
"available_balance": 50000.00,
"ledger_balance": 50000.00,
"created_at": "2026-02-28T10:00:00Z"
}

Step 2: Post a Journal Entry

Create a balanced double-entry journal to record a fee:

curl -X POST https://api.korastratum.com/api/v1/cba/journals \
-H "Authorization: Bearer $TOKEN" \
-H "X-Tenant-ID: demo_bank" \
-H "Content-Type: application/json" \
-H "X-Idempotency-Key: jnl-$(uuidgen)" \
-d '{
"journal_type": "REVENUE",
"description": "Monthly account fee",
"fiscal_period_id": "period-uuid",
"transaction_date": "2026-02-28",
"effective_date": "2026-02-28",
"source_system": "ACCOUNT_SERVICE",
"source_reference": "FEE20260228001",
"entries": [
{
"account_id": "fee-receivable-uuid",
"amount": 500.00,
"entry_type": "debit",
"currency_code": "NGN",
"description": "Fee collected"
},
{
"account_id": "fee-income-uuid",
"amount": 500.00,
"entry_type": "credit",
"currency_code": "NGN",
"description": "Fee income"
}
]
}'

The journal is created with status PENDING. Approve and post it:

# Approve
curl -X POST https://api.korastratum.com/api/v1/cba/journals/$JOURNAL_ID/approve \
-H "Authorization: Bearer $TOKEN" \
-H "X-Tenant-ID: demo_bank"

# Post
curl -X POST https://api.korastratum.com/api/v1/cba/journals/$JOURNAL_ID/post \
-H "Authorization: Bearer $TOKEN" \
-H "X-Tenant-ID: demo_bank"

Step 3: Make an Internal Transfer

curl -X POST https://api.korastratum.com/api/v1/cba/transfers/internal \
-H "Authorization: Bearer $TOKEN" \
-H "X-Tenant-ID: demo_bank" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: txn-$(uuidgen)" \
-d '{
"source_account_id": "acct-uuid-1",
"destination_account_id": "acct-uuid-2",
"destination_account_name": "John Doe",
"amount": 25000.00,
"currency": "NGN",
"channel": "API",
"narration": "Test transfer",
"initiated_by": "user-uuid"
}'

Response:

{
"id": "txn-uuid",
"transaction_ref": "TRN20260228001234",
"transaction_type": "TRANSFER",
"status": "COMPLETED",
"amount": 25000.00,
"fee": 0.00,
"total_amount": 25000.00,
"transfer_type": "INTERNAL",
"channel": "API",
"completed_at": "2026-02-28T10:05:00Z"
}

What's Next

  • General Ledger — Chart of accounts, journal lifecycle, and standing instructions.
  • Accounts — Account types, virtual accounts, holds, and limits.
  • Transactions — Interbank transfers, cross-currency, deposits, and withdrawals.
  • Sandbox Testing — Test environment and simulated data.