Quickstart tutorial¶
This walks the spine of the platform from the API: get a token, open a customer, open an account, move money, and read the resulting journal entry. It mirrors the first flow an operator walks in the console.
Payloads are illustrative
The request bodies below show the shape of each call. The exact fields for every operation are in the API reference. Treat it as the source of truth and adjust field names to match your version.
0. Set up¶
export BASE=https://api.cortexbanking.com/api/v1
export AUTH=https://auth.cortexbanking.com
Your service client needs the permissions for each step below: at least customer:write,
account:open and transfer:outbound (or the equivalent for the flow you run). See
Authentication.
1. Get a token¶
TOKEN=$(curl -su "$CLIENT_ID:$CLIENT_SECRET" \
-d grant_type=client_credentials \
"$AUTH/oauth2/token" | jq -r .access_token)
Every call from here sends Authorization: Bearer $TOKEN.
2. Open a customer¶
curl -sX POST "$BASE/parties" \
-H "Authorization: Bearer $TOKEN" -H 'Content-Type: application/json' \
-d '{
"type": "PERSON",
"givenName": "Ada", "familyName": "Lovelace",
"cddTier": "STANDARD"
}'
# → { "partyId": "...", "customerNo": "C0001234", ... }
Capture the customerNo (or partyId). You will refer to the customer by it.
3. Open a deposit account¶
curl -sX POST "$BASE/accounts" \
-H "Authorization: Bearer $TOKEN" -H 'Content-Type: application/json' \
-d '{
"customerNo": "C0001234",
"productCode": "SAV-STD",
"currency": "USD",
"branchCode": "0001"
}'
# → { "accountNo": "1000200030", "status": "ACTIVE", ... }
4. Move money, idempotently¶
Send an idempotencyKey on the write, and money as a {amount, currency} object
(see Conventions and Idempotency):
curl -sX POST "$BASE/transfers" \
-H "Authorization: Bearer $TOKEN" -H 'Content-Type: application/json' \
-d '{
"idempotencyKey": "quickstart-transfer-1",
"fromAccount": "1000200030",
"toAccount": "1000200048",
"amount": { "amount": 250.00, "currency": "USD" }
}'
Two outcomes are both normal:
200/201: the transfer executed. You get the transfer and its ledger legs.202+approvalId: the amount was over the auto-limit, so it is parked for a checker. PollGET /approvalsuntil it is approved; your command is then replayed. See Maker-checker over the API.
Retry the exact same call with the same idempotencyKey any time. It will not move the money twice.
5. Read the journal¶
Every movement ends as a balanced entry in the one ledger. Read it back:
curl -s "$BASE/ledger/entries?from=2026-07-27&to=2026-07-27" \
-H "Authorization: Bearer $TOKEN" | jq '.[0]'
# → a journal entry: balanced debit and credit lines, a day-book category,
# business/value/posted dates.
That entry is the same one an operator sees in the console's day book.
Where to go next¶
- Read the Conventions, Idempotency and Errors pages before you build for real. They cover the edges this happy path skips.
- Browse the API reference for the exact schema of every operation.
- Building an AI agent instead of a classic integration? See AI & agent access.