Careem Captain icon

Careem Captain data API: wallet, earnings and jobs

Careem · Transport

Careem Captain is the driver app from Careem, the Dubai-founded ride-hailing platform Uber has owned since 2020, and it is how Careem's drivers, known as Captains, run their shifts across the United Arab Emirates. Captains go online, accept incoming ride and delivery offers, follow the in-trip map through arrived, picked-up and dropped-off steps, confirm cash paid by riders at dropoff and see the fare receipt when each trip ends. An earnings home shows period totals split into trip earnings, tips, bonuses, guarantees, fines and behaviour penalties, a bookings tab lists trip-by-trip history for each payout cycle, and the payment-methods and cash-out screens send settled earnings to a bank account or Careem Pay wallet, or move them into the in-app wallet to clear outstanding cash before new offers freeze. A performance home tracks the acceptance-rate KPI that can block a Captain who drops below the threshold, alongside rating, completed trips, cancellation rate and time online; zone and shift Captains work booked scheduled shifts, a where-to-work view points to high-demand zones near the driver, and My Profile holds the Captain's city and vehicle. In the UAE it competes for the same drivers as Uber's own driver app, Bolt, Yango and inDrive.

Cash collected at dropoff anchors this record: the wallet position carries walletBalance next to cashBalanceAmount, the rider cash a Captain is still holding, measured against warningCashLimit and blockingCashLimit and summarised as cashStatus; every confirmed cash collection updates that balance against the job's jobUid. Earnings roll up into totalEarnings with a breakdown of tripEarnings, tips, matchedTips, bonuses, guarantees, fines, finesRefunds and behaviorPenalties, while payout-cycle line items tie jobId and tripId to amount, vertical and status, and unverifiedTransactions hold the cash trips still waiting for settlement.

Every trip closes on a fare record of tripPrice, discount, promotionalDiscount, userCreditUsed and the driver's captainEarning, and money leaves through payout destinations holding bankName, accountIBAN, walletNumber and nationalId, each cash-out logged under a disbursementId. Around the money sit the operating signals: offer acceptance as acceptanceRate against acceptanceThreshold; performance as rating, completedTrips, cancellationRate and onlineMinutes; scheduled shifts as attendedMinutes inside each booked startTime–endTime window; where-to-work zones scored by demandScore and etaMinutes; pickup and dropoff steps stamped with lat and lng; and a profile that links each captainId to a cityId and carId.

Fleet operators and payout tools working with UAE Captains use this record to close each payout cycle by matching disbursements and wallet top-ups to the IBAN on file, to alert before cash on hand reaches the limit that freezes new offers, to map which zones convert offers into completed trips and where Captains should reposition, and to flag trips whose receipt earning does not match the cycle ledger. openData Studio turns this wallet, earnings, payout and performance record into callable open data for those integrations.

Screenshots

  • Careem Captain screenshot 1
  • Careem Captain screenshot 2
  • Careem Captain screenshot 3
  • Careem Captain screenshot 4
  • Careem Captain screenshot 5
  • Careem Captain screenshot 6

API surface

The endpoints and request/response examples below are reconstructed from the app's interface — illustrative, not a live capture.

  • Captain wallet and cash status

    GET /v1/wallet/cash-status/{captainId} openbanking

    Reads the signed-in Captain's wallet balance and cash-on-hand position, including warning/blocking cash limits that freeze new offers when unremitted cash is too high.

    Auth: Bearer access token issued at Captain sign-in (Authorization: Bearer)

    • captainId
    • walletBalance
    • cashBalanceAmount
    • warningCashLimit
    • blockingCashLimit
    • balance
    • currency
    • cashStatus
    GET /v1/wallet/cash-status/18422109 HTTP/1.1
    Authorization: Bearer eyJhbGciOi...
    {
      "captainId": 18422109,
      "walletBalance": 1260.5,
      "cashBalanceAmount": -85.0,
      "warningCashLimit": 150,
      "blockingCashLimit": 300,
      "balance": -85.0,
      "currency": "AED",
      "cashStatus": "WARNING"
    }
  • Earnings aggregation by type

    GET /v1/drivers/{captain_id}/earnings/aggregate/{window} openfinance

    Powers the earnings landing screen: period totals plus a breakdown of trip earnings, tips, bonuses, guarantees, fines and behaviour penalties for a Captain.

    Auth: Bearer access token issued at Captain sign-in (Authorization: Bearer)

    • currencyCode
    • overview
    • totalEarnings
    • aggregationByTime
    • earnings
    • startDate
    • endDate
    • breakdown
    • tripEarnings
    • tips
    • matchedTips
    • bonuses
    • guarantees
    • fines
    • finesRefunds
    • behaviorPenalties
    • other
    GET /v1/drivers/18422109/earnings/aggregate/WEEKLY?from=1727049600000&to=1727654400000 HTTP/1.1
    Authorization: Bearer eyJhbGciOi...
    {
      "currencyCode": "AED",
      "overview": {
        "totalEarnings": 2140.75,
        "aggregationByTime": [
          {"earnings": 380.5, "startDate": "2026-09-21", "endDate": "2026-09-21"},
          {"earnings": 412.0, "startDate": "2026-09-22", "endDate": "2026-09-22"}
        ]
      },
      "breakdown": {
        "tripEarnings": 1680.0,
        "tips": 210.5,
        "matchedTips": 40.0,
        "bonuses": 180.0,
        "guarantees": 50.0,
        "fines": 15.0,
        "finesRefunds": 0.0,
        "behaviorPenalties": 4.75,
        "other": 0.0
      }
    }
  • Earnings transactions by cycle

    GET /v1/earnings/transactions/{captainId}/cycle/{cycle} openfinance

    Lists per-trip earning line items for a payout cycle — job, trip, location, amount and vertical — shown on the bookings / trip-history earnings tab.

    Auth: Bearer access token issued at Captain sign-in (Authorization: Bearer)

    • bookings
    • jobId
    • tripId
    • location
    • dateTimeIso
    • currency
    • amount
    • vertical
    • status
    GET /v1/earnings/transactions/18422109/cycle/38?page=0 HTTP/1.1
    Authorization: Bearer eyJhbGciOi...
    {
      "bookings": [
        {
          "jobId": 99218411,
          "tripId": "TRP-88A21",
          "location": "Downtown Dubai",
          "dateTimeIso": "2026-09-24T18:41:00Z",
          "currency": "AED",
          "amount": 42.5,
          "vertical": "RIDE",
          "status": "COMPLETED"
        }
      ]
    }
  • Unverified earnings transactions

    GET /v1/earnings/transactions/{captainId}/pending openfinance

    Returns earnings still pending verification — typically cash trips waiting for settlement — that block or delay a payout cycle.

    Auth: Bearer access token issued at Captain sign-in (Authorization: Bearer)

    • unverifiedTransactions
    • jobId
    • tripId
    • amount
    • currency
    • status
    • dateTimeIso
    GET /v1/earnings/transactions/18422109/pending?limit=20 HTTP/1.1
    Authorization: Bearer eyJhbGciOi...
    {
      "unverifiedTransactions": [
        {
          "jobId": 99219002,
          "tripId": "TRP-88B04",
          "amount": 18.0,
          "currency": "AED",
          "status": "UNVERIFIED",
          "dateTimeIso": "2026-09-24T21:05:11Z"
        }
      ]
    }
  • Payout payment methods

    GET /v1/payouts/methods/{captainId} openbanking

    Lists the Captain's payout destinations (bank IBAN, wallet, national ID) used on the payment-methods and cash-out screens.

    Auth: Bearer access token issued at Captain sign-in (Authorization: Bearer)

    • paymentMethods
    • id
    • optionType
    • optionName
    • status
    • primary
    • detail
    • bankName
    • accountIBAN
    • careemCustomerId
    • walletNumber
    • nationalId
    GET /v1/payouts/methods/18422109 HTTP/1.1
    Authorization: Bearer eyJhbGciOi...
    {
      "paymentMethods": [
        {
          "id": 44102881,
          "optionType": "BANK_ACCOUNT",
          "optionName": "Emirates NBD",
          "status": "VERIFIED",
          "primary": true,
          "detail": {
            "bankName": "Emirates NBD",
            "accountIBAN": "AE070331234567890123456",
            "careemCustomerId": "c_9b0e12f4",
            "walletNumber": null,
            "nationalId": "784-1988-1234567-1"
          }
        }
      ]
    }
  • Disburse earnings

    POST /v1/payouts/disburse openfinance

    Cashes out a Captain's settled earnings to the primary payout method (bank account or wallet).

    Auth: Bearer access token issued at Captain sign-in (Authorization: Bearer)

    • disbursementId
    • captainId
    • amount
    • currency
    • paymentMethodId
    • status
    POST /v1/payouts/disburse HTTP/1.1
    Authorization: Bearer eyJhbGciOi...
    Content-Type: application/json
    
    {
      "captainId": 18422109,
      "amount": 800.0,
      "currency": "AED",
      "paymentMethodId": 44102881
    }
    {
      "disbursementId": "dsb_77a1c0",
      "captainId": 18422109,
      "amount": 800.0,
      "currency": "AED",
      "paymentMethodId": 44102881,
      "status": "PROCESSING"
    }
  • Top up wallet from earnings

    POST /v1/wallet/topup openfinance

    Moves settled trip earnings into the Captain's wallet so they can pay the outstanding cash balance or spend in-app.

    Auth: Bearer access token issued at Captain sign-in (Authorization: Bearer)

    • captainId
    • amount
    • currency
    • walletBalance
    • status
    POST /v1/wallet/topup HTTP/1.1
    Authorization: Bearer eyJhbGciOi...
    Content-Type: application/json
    
    {
      "captainId": 18422109,
      "amount": 150.0,
      "currency": "AED"
    }
    {
      "captainId": 18422109,
      "amount": 150.0,
      "currency": "AED",
      "walletBalance": 1410.5,
      "status": "SUCCEEDED"
    }
  • Acknowledge job offer

    POST /v1/dispatch/offers/acknowledge opendata

    Accepts or acknowledges an incoming ride/delivery offer so the job is assigned to the Captain and appears on the live trip screen.

    Auth: Bearer access token issued at Captain sign-in (Authorization: Bearer)

    • jobUid
    • id
    • uid
    • viewUid
    • status
    • forcedSyncKey
    • accepted
    • captainId
    POST /v1/dispatch/offers/acknowledge HTTP/1.1
    Authorization: Bearer eyJhbGciOi...
    Content-Type: application/json
    
    {
      "jobUid": "job_8f21c0a4-9b11-4e02-a1c3-77d4e8b01234",
      "captainId": 18422109,
      "accepted": true
    }
    {
      "jobUid": "job_8f21c0a4-9b11-4e02-a1c3-77d4e8b01234",
      "id": 99218411,
      "uid": "job_8f21c0a4-9b11-4e02-a1c3-77d4e8b01234",
      "viewUid": "vw_99218411",
      "status": "ASSIGNED",
      "forcedSyncKey": "sync_4410"
    }
  • Mark job step done

    POST /v1/dispatch/jobs/{jobUid}/steps/{stepUid}/complete opendata

    Advances a job through pickup / dropoff steps (arrived, picked up, dropped off) that drive the in-trip map and next-stop UI.

    Auth: Bearer access token issued at Captain sign-in (Authorization: Bearer)

    • jobUid
    • stepUid
    • status
    • id
    • schedule
    • lat
    • lng
    POST /v1/dispatch/jobs/job_8f21c0a4-9b11-4e02-a1c3-77d4e8b01234/steps/stp_pickup/complete HTTP/1.1
    Authorization: Bearer eyJhbGciOi...
    Content-Type: application/json
    
    {
      "lat": 25.1972,
      "lng": 55.2744,
      "status": "ARRIVED_PICKUP"
    }
    {
      "jobUid": "job_8f21c0a4-9b11-4e02-a1c3-77d4e8b01234",
      "stepUid": "stp_pickup",
      "status": "ARRIVED_PICKUP",
      "id": 99218411,
      "schedule": {"etaSeconds": 420}
    }
  • Confirm cash collected

    POST /v1/dispatch/jobs/{jobUid}/cash-confirm openfinance

    Records that the rider paid cash at dropoff, updating the Captain's outstanding cash-on-hand balance.

    Auth: Bearer access token issued at Captain sign-in (Authorization: Bearer)

    • jobUid
    • amount
    • currency
    • status
    • cashBalanceAmount
    POST /v1/dispatch/jobs/job_8f21c0a4-9b11-4e02-a1c3-77d4e8b01234/cash-confirm HTTP/1.1
    Authorization: Bearer eyJhbGciOi...
    Content-Type: application/json
    
    {
      "amount": 42.5,
      "currency": "AED"
    }
    {
      "jobUid": "job_8f21c0a4-9b11-4e02-a1c3-77d4e8b01234",
      "amount": 42.5,
      "currency": "AED",
      "status": "CASH_PAID",
      "cashBalanceAmount": -127.5
    }
  • Booking fare summary

    GET /v1/trips/{bookingId}/fare-breakdown openfinance

    Returns the post-trip fare receipt — rider price, discounts, and captainEarning — shown on the trip-end / trip-receipt screen.

    Auth: Bearer access token issued at Captain sign-in (Authorization: Bearer)

    • tripId
    • tripPrice
    • discount
    • promotionalDiscount
    • captainEarning
    • baseAmount
    • userCredit
    • userCreditUsed
    • creditCardsOnFile
    • isOffline
    • currency
    • basePriceType
    GET /v1/trips/99218411/fare-breakdown HTTP/1.1
    Authorization: Bearer eyJhbGciOi...
    {
      "tripId": 99218411,
      "tripPrice": 48.0,
      "discount": 5.5,
      "promotionalDiscount": 2.0,
      "captainEarning": 36.4,
      "baseAmount": 32.0,
      "userCredit": 0.0,
      "userCreditUsed": 0.0,
      "creditCardsOnFile": 1,
      "isOffline": false,
      "currency": {"code": "AED", "name": "United Arab Emirates dirham"},
      "basePriceType": "METERED"
    }
  • Captain acceptance rate

    GET /v1/metrics/acceptance-rate opendata

    Reads the Captain's offer-acceptance KPI used by auto-match and the performance card; dropping below the threshold can block the Captain.

    Auth: Bearer access token issued at Captain sign-in (Authorization: Bearer)

    • acceptanceRate
    • acceptanceFlag
    • acceptanceThreshold
    • captainId
    GET /v1/metrics/acceptance-rate?captainId=18422109&from=1727049600000 HTTP/1.1
    Authorization: Bearer eyJhbGciOi...
    {
      "acceptanceRate": 0.86,
      "acceptanceFlag": "HEALTHY",
      "acceptanceThreshold": 0.7,
      "captainId": 18422109
    }
  • Performance report overview

    GET /v1/performance/overview/{captainId} opendata

    Loads the Captain performance-report overview — rating, completed trips, cancellation and online time — shown on the engagement / performance home.

    Auth: Bearer access token issued at Captain sign-in (Authorization: Bearer)

    • captainId
    • acceptanceRate
    • rating
    • completedTrips
    • cancellationRate
    • onlineMinutes
    GET /v1/performance/overview/18422109 HTTP/1.1
    Authorization: Bearer eyJhbGciOi...
    {
      "captainId": 18422109,
      "acceptanceRate": 0.86,
      "rating": 4.92,
      "completedTrips": 1842,
      "cancellationRate": 0.04,
      "onlineMinutes": 2460
    }
  • Shift attendance

    GET /v1/shifts/attendance/{captainId} opendata

    Returns scheduled-shift attendance used by zone/shift Captains — booked window versus minutes actually online.

    Auth: Bearer access token issued at Captain sign-in (Authorization: Bearer)

    • captainId
    • shifts
    • shiftId
    • startTime
    • endTime
    • attendedMinutes
    • status
    GET /v1/shifts/attendance/18422109?from=1727049600000&to=1727654400000 HTTP/1.1
    Authorization: Bearer eyJhbGciOi...
    {
      "captainId": 18422109,
      "shifts": [
        {
          "shiftId": "sh_44102",
          "startTime": "2026-09-24T06:00:00Z",
          "endTime": "2026-09-24T14:00:00Z",
          "attendedMinutes": 455,
          "status": "COMPLETED"
        }
      ]
    }
  • Where-to-work recommendations

    GET /v1/demand/recommendations opendata

    Suggests high-demand zones from the Captain's current location so they can reposition toward better trip density.

    Auth: Bearer access token issued at Captain sign-in (Authorization: Bearer)

    • recommendations
    • zoneId
    • name
    • demandScore
    • etaMinutes
    • lat
    • lng
    GET /v1/demand/recommendations?lat=25.2048&lng=55.2708 HTTP/1.1
    Authorization: Bearer eyJhbGciOi...
    {
      "recommendations": [
        {
          "zoneId": "dxb_downtown",
          "name": "Downtown Dubai",
          "demandScore": 0.82,
          "etaMinutes": 8,
          "lat": 25.1972,
          "lng": 55.2744
        }
      ]
    }
  • Captain profile

    GET /v1/drivers/profile osint

    Reads the signed-in Captain's identity, city and vehicle used by My Profile and the sliding-menu header.

    Auth: Bearer access token issued at Captain sign-in (Authorization: Bearer)

    • captainId
    • firstName
    • lastName
    • phone
    • cityId
    • carId
    • status
    GET /v1/drivers/profile HTTP/1.1
    Authorization: Bearer eyJhbGciOi...
    {
      "captainId": 18422109,
      "firstName": "Ahmed",
      "lastName": "Hassan",
      "phone": "+971501234567",
      "cityId": 1,
      "carId": 55201,
      "status": "ACTIVE"
    }

Data categories

  • balances
  • transactions
  • payouts
  • trips
  • identity
  • performance

Where teams use this data

  • Captain payout reconciliation

    Pull weekly earnings aggregation (tripEarnings, tips, bonuses, fines) and cycle transactions, then match disbursements and wallet top-ups against the bank IBAN on file so a fleet operator can close each payout cycle.

  • Cash-on-hand risk monitor

    Poll the wallet cash-status call plus cash-collection job events. Alert when cashBalanceAmount approaches warningCashLimit or blockingCashLimit so Captains can top up the wallet before new offers freeze.

  • Offer-quality and supply heatmap

    Combine acceptanceRate, shift-attendance minutes and where-to-work demandScore to see which zones convert offers into completed trips and where Captains should reposition.

  • Trip-level fare audit

    Join the fare-receipt captainEarning with per-trip amount, vertical and status line items to flag trips whose receipt earning does not match the cycle ledger.

Frequently asked questions

What earnings fields does Careem Captain expose?

The earnings aggregation call returns currencyCode, totalEarnings and a breakdown of tripEarnings, tips, matchedTips, bonuses, guarantees, fines, finesRefunds, behaviorPenalties and other. Cycle transactions add jobId, tripId, location, amount and vertical.

How does the Captain wallet and cash limit work?

The wallet cash-status call returns walletBalance plus cash-on-hand (cashBalanceAmount) with warningCashLimit and blockingCashLimit. Captains can top up the wallet from earnings or disburse to a verified bank IBAN.

Which job endpoints drive an active trip?

Offers are acknowledged at POST /v1/dispatch/offers/acknowledge, steps (arrived, pickup, dropoff) at POST /v1/dispatch/jobs/{jobUid}/steps/{stepUid}/complete, and cash collection at POST /v1/dispatch/jobs/{jobUid}/cash-confirm. The fare receipt loads from GET /v1/trips/{bookingId}/fare-breakdown.

Is Careem Captain a banking app?

No — it is a ride-hailing driver app. It still carries wallet, cash-balance and payout-method data because Captains collect cash and cash out trip earnings through the same product.

Apps similar to Careem Captain

  • Uber Driver — Uber runs its own branded driver and rider apps in the UAE in parallel with Careem, which Uber has owned since 2020.
  • Bolt — Bolt launched ride-hailing in the UAE in December 2024 and quotes upfront dynamic fares aimed at cost-conscious riders.
  • Yango — Yango, backed by Yandex, entered Dubai in September 2022 as its first Gulf market and uses fixed upfront fares with its own mapping.
  • inDrive — inDrive lets the rider propose a fare for the route while drivers accept, decline or counter, a model used in Dubai unlike meter or surge apps.
  • Jeeny — Jeeny is an on-demand mobility platform in Saudi Arabia, with a driver app for accepting rides and deliveries as a local alternative to Careem.
  • Kaiian — Kaiian is a Saudi-founded ride platform established in 2016 and listed among Careem alternatives for ride-hailing in the Kingdom.

Topics

  • Careem Captain API
  • Careem driver earnings
  • captain wallet cash status
  • Careem payout IBAN
  • Careem job offer ack
  • captain acceptance rate
  • Careem fare summary

Need this app's data API integrated?

We deliver scoped integrations for any named app — from USD 500 with source-code handoff, or hosted access billed per call. Tell us the data you need.

  • NDA + SOW on every engagement
  • Delivery in 3–7 days
  • Payment only after acceptance
  • Work scoped to authorized use

Get a quote