Three lines

Uber

Developers

[API] Get Contract

Privileged and Confidential This endpoint design has been confidentially shared with you. It is still under development and is subject to change without notice. Please do not share this document or API endpoint details with anyone who is not authorized to have access. For more information read about scopes.

The Get Contract API returns a contract’s terms, state and repayment progress.

Use case

Check whether the borrower has accepted a contract, confirm that an update, termination or adjustment took effect, and track how much of the loan is left to repay.

Supported supplier types

Financiers

Scopes

vehicle_suppliers.financing.contracts

Required permissions

The user that the access token represents needs supplier.contracts.read on the contract’s lender organization. See Access.

Resource

/v1/vehicle-supplier/financing/contracts/:contract_id

HTTP method

GET

Authorization

Client Credentials

Example request
curl -X GET "https://api.uber.com/v1/vehicle-supplier/financing/contracts/<contract_id>" \
-H "Authorization: Bearer <TOKEN>"
Request path parameters
Name Type Description
contract_id string Contract ID returned by Create Contract.
Example response

200 OK

{
  "contract": {
    "contractId": {
      "value": "<contract_id>"
    },
    "type": "CONTRACT_TYPE_B2B",
    "stateInfo": {
      "state": "CONTRACT_STATE_ACTIVE"
    },
    "lender": {
      "lenderId": {
        "value": "<lender_org_id>"
      }
    },
    "borrower": {
      "borrowerId": {
        "value": "<borrower_org_id>"
      }
    },
    "loanAmount": {
      "amountE5": "1500000000",
      "currencyCode": "USD"
    },
    "retentionConfig": {
      "cadence": "RETENTION_CADENCE_WEEKLY",
      "retentionStrategyType": "RETENTION_STRATEGY_TYPE_STATIC",
      "retentionAmount": {
        "percentRate": 10,
        "maxCadenceCap": {
          "amountE5": "50000000",
          "currencyCode": "USD"
        }
      }
    },
    "metadata": {
      "name": "Fleet expansion loan",
      "countryIso2": "US",
      "interestRate": 8.5,
      "acceptanceExpiryAt": {
        "value": "1792022400000"
      },
      "financierName": "Example Capital"
    },
    "retentionDetails": {
      "totalRetained": {
        "amountE5": "300000000",
        "currencyCode": "USD"
      },
      "totalAdjusted": {
        "amountE5": "20000000",
        "currencyCode": "USD"
      },
      "remainingBalance": {
        "amountE5": "1180000000",
        "currencyCode": "USD"
      },
      "lastRetentionAt": {
        "value": "1799028000000"
      }
    },
    "startsAt": {
      "value": "1793577600000"
    },
    "endsAt": {
      "value": "1825027200000"
    },
    "createdAt": {
      "value": "1790847000000"
    },
    "updatedAt": {
      "value": "1793577604000"
    },
    "version": 1
  }
}

In this example, 3,000.00 USD of the 15,000.00 USD loan has been retained and a 200.00 USD credit recorded, which leaves 11,800.00 USD to repay. stateInfo.reason is missing because active contracts have no state reason.

Response body parameters
Name Type Description
contract object Contract object
Contract
Name Type Description
contractId object UUID object. The contract’s ID.
type enum Contract type enum
stateInfo object State info object
lender object Lender object
borrower object Borrower object
loanAmount object Amount object. The loan amount set at creation. Adjustments don’t change it.
retentionConfig object Retention config object
metadata object Contract metadata object
retentionDetails object Retention details object. Repayment progress.
startsAt object Timestamp object. When retention starts.
endsAt object Timestamp object. When the contract ends if the loan isn’t repaid first.
createdAt object Timestamp object. When the contract was created.
updatedAt object Timestamp object. When the contract last changed.
version int Starts at 1 and goes up each time the retention amount is updated.
State info
Name Type Description
state enum Contract state enum
reason enum State reason enum. Why the contract entered its current state. Only present when the state is CONTRACT_STATE_ACCEPTED, CONTRACT_STATE_TERMINATING or CONTRACT_STATE_TERMINATED.
Contract state
Name Definition
CONTRACT_STATE_DRAFT Uber is setting up the contract. It moves to CONTRACT_STATE_PENDING_ACCEPTANCE on its own.
CONTRACT_STATE_PENDING_ACCEPTANCE Waiting for the borrower to accept.
CONTRACT_STATE_ACCEPTED Accepted. Retention starts at startsAt.
CONTRACT_STATE_ACTIVE Uber retains part of the borrower’s earnings in each retention period.
CONTRACT_STATE_TERMINATING Termination is in progress and Uber is stopping retention.
CONTRACT_STATE_TERMINATED Final state. Uber no longer retains anything for this contract.
State reason
Name Definition
CONTRACT_STATE_REASON_BORROWER_ACCEPTED The borrower accepted the contract.
CONTRACT_STATE_REASON_AUTO_ACCEPTED The contract was accepted automatically, without the borrower’s review.
CONTRACT_STATE_REASON_BORROWER_REJECTED The borrower rejected the contract.
CONTRACT_STATE_REASON_LENDER_TERMINATED The lender terminated the contract.
CONTRACT_STATE_REASON_ACCEPTANCE_WINDOW_EXPIRED The borrower didn’t accept the contract before acceptanceExpiryAt.
CONTRACT_STATE_REASON_CONTRACT_MATURED The loan was fully repaid.
CONTRACT_STATE_REASON_END_DATE_REACHED The contract reached endsAt.
CONTRACT_STATE_REASON_PROVISIONING_FAILED Uber couldn’t set up retention because none of the borrower’s organizations is in the contract’s country.
Contract type
Name Definition
CONTRACT_TYPE_B2B A contract between a lender organization and a borrower organization.
Lender
Name Type Description
lenderId object UUID object. Your organization’s ID.
Borrower
Name Type Description
borrowerId object UUID object. The ID of the supplier organization repaying the loan.
Retention config
Name Type Description
cadence enum Retention cadence enum. The length of a retention period.
retentionStrategyType enum Retention strategy type enum
retentionAmount object Retention amount object. How much Uber retains in each period.
Retention cadence
Name Definition
RETENTION_CADENCE_WEEKLY Each retention period is a week.
RETENTION_CADENCE_MONTHLY Each retention period is a month.
Retention strategy type
Name Definition
RETENTION_STRATEGY_TYPE_STATIC The retention amount stays the same for the life of the contract unless you lower it with Update Contract.
Retention amount

Contains percentRate, maxCadenceCap, or both. Retention explains how they combine.

Name Type Description
percentRate number Percentage of the borrower’s earnings to retain in each period, for example 10 for 10%. Greater than 0 and at most 100, with up to 2 decimal places.
maxCadenceCap object Amount object. The most Uber retains in one period. Greater than 0 and in the loan currency.
Contract metadata
Name Type Description
name string Your label for the contract. Not blank, and at most 128 characters.
countryIso2 string ISO 3166-1 alpha-2 country code, for example US. The loan must be in this country’s currency, and Uber retains only from earnings in this country.
interestRate number Optional. Annual interest rate in percent, for your records, for example 8.5. From 0 to 100, with up to 2 decimal places. Uber doesn’t use it to calculate retention.
acceptanceExpiryAt object Timestamp object. The borrower has to accept the contract before this time.
financierName string Your organization’s name. Uber fills it in on responses and ignores it on requests.
Retention details
Name Type Description
totalRetained object Amount object. Total retained from the borrower’s earnings so far.
totalAdjusted object Amount object. Total of the adjustments that took effect. Debits and credits both add to this total.
remainingBalance object Amount object. What the borrower still owes.
lastRetentionAt object Timestamp object. When Uber last retained earnings for this contract.
Amount
Name Type Description
amountE5 long Amount multiplied by 100,000. For example, 1500000000 means 15,000.00. Responses return it as a string, and leave it out when the amount is 0.
currencyCode string ISO 4217 currency code, for example USD.
UUID
Name Type Description
value string The ID in standard UUID format.
Timestamp
Name Type Description
value long Unix epoch time in milliseconds. Responses return it as a string.
Rate limit

10 requests per second for each developer application.

Endpoint-specific errors
HTTP status Code Cause
400 invalid-argument contract_id isn’t a valid UUID.
400 not-found No contract has this ID.
401 permission-denied The token’s user doesn’t have supplier.contracts.read on the contract’s lender organization.
500 internal-server-error Retry with exponential backoff.
Notes
  • retentionDetails is missing until there is repayment data, for example before retention starts. Its fields can also be missing if Uber can’t load them at that moment. Retry later.
  • loanAmount never changes. Use retentionDetails.remainingBalance for what the borrower owes now.

Uber

Developers
© 2026 Uber Technologies Inc.