Skip to main content
This is the fast path: token → list products → make money move. Every command is copy-paste. Target time: under 5 minutes.
1

Get your keys

Sign up in the Dashboard and create an API key under Settings → Developer. You get a keyId and a secret, scoped to a sandbox environment by default.
export BRIDGE_URL="https://services.finance.reli.co.tz/api"
export KEY_ID="your-key-id"
export SECRET="your-api-secret"
2

Exchange them for a token

export TOKEN=$(curl -s -X POST $BRIDGE_URL/generate-token \
  -H "Content-Type: application/json" \
  -d "{\"keyId\":\"$KEY_ID\",\"secret\":\"$SECRET\"}" | jq -r .token)
echo $TOKEN
The token is a Bearer JWT valid for ~1 hour. On any 401, just run this again. See Authentication.
3

Make your first call

curl -s $BRIDGE_URL/v1/lms/products \
  -H "Authorization: Bearer $TOKEN" | jq
You should see your configured loan products. That confirms auth works.
4

Make money move (the fun part)

Create a customer, give them a wallet, originate a loan that auto-provisions the wallet, and disburse into it.
# 1. Create + activate a customer
CUSTOMER=$(curl -s -X POST $BRIDGE_URL/v1/kyc/customers \
  -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
  -d '{"legalName":"Jane Doe","type":"PERSON","mobile":"+255700000111"}')
CUSTOMER_ID=$(echo $CUSTOMER | jq -r '.customerId // .id')

curl -s -X PATCH $BRIDGE_URL/v1/kyc/customers/$CUSTOMER_ID/activate \
  -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
  -d "{\"customerId\":\"$CUSTOMER_ID\",\"status\":\"ACTIVE\",\"activatedOn\":\"$(date +%F)\"}" >/dev/null

# 2. Pick a published loan product
PRODUCT=$(curl -s $BRIDGE_URL/v1/lms/products -H "Authorization: Bearer $TOKEN" \
  | jq -r '[.[] | select(.status=="published")][0].productCode')

LOAN=$(curl -s -X POST $BRIDGE_URL/v1/lms/loans \
  -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
  -d "{\"customerId\":\"$CUSTOMER_ID\",\"productCode\":\"$PRODUCT\",\"principal\":100000}")
LOAN_ID=$(echo $LOAN | jq -r '.loanId')

# 3. Approve + disburse
curl -s -X POST $BRIDGE_URL/v1/lms/loans/$LOAN_ID/approve \
  -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
  -d "{\"approvedOnDate\":\"$(date +%F)\"}" >/dev/null

curl -s -X POST $BRIDGE_URL/v1/lms/loans/$LOAN_ID/disburse \
  -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
  -d "{\"disbursedOnDate\":\"$(date +%F)\"}" | jq
You just onboarded a customer and disbursed a real loan — actual ledger entries on the partner bank. That is the platform working end to end. To disburse into a wallet instead, see the BNPL recipe.

Next

KYC onboarding recipe

The robust version: dedup by phone, submit documents, handle activation review.

API reference

Every endpoint, with a live “Send” playground.