Three lines

Uber

Developers

[API] Adjust 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 Adjust Contract API records a debit or a credit on an active contract for money that changed hands outside Uber.

Use case

Keep the contract’s remaining balance in line with your records. Record a credit when the borrower repays part of the loan to you directly, and a debit when you add a charge, such as a penalty, to what the borrower owes.

Supported supplier types

Financiers

Scopes

vehicle_suppliers.financing.contracts

Required permissions

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

Resource

/v1/vehicle-supplier/financing/contracts/adjust

HTTP method

PATCH

Authorization

Client Credentials

Example request
curl -X PATCH "https://api.uber.com/v1/vehicle-supplier/financing/contracts/adjust" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <TOKEN>" \
-d '{
  "idempotencyKey": {
    "value": "<uuid>"
  },
  "contractId": {
    "value": "<contract_id>"
  },
  "type": "ADJUSTMENT_TYPE_CREDIT",
  "amount": {
    "amountE5": 20000000,
    "currencyCode": "USD"
  },
  "reason": "ADJUSTMENT_REASON_OFFLINE_ADJUSTMENT",
  "description": "Cash repayment received on 10 December 2026",
  "executedAt": {
    "value": 1796860800000
  }
}'

This example records a 200.00 USD repayment that the borrower made to you directly on 10 December 2026.

Request body parameters
Name Type Required Description
idempotencyKey object Yes UUID object. A UUID you generate for this adjustment. Send the same value when you retry the request.
contractId object Yes UUID object. The contract to adjust.
type enum Yes Adjustment type enum
amount object Yes Amount object. Greater than 0, in the contract’s currency, and no more than 20% of the contract’s loanAmount.
reason enum Yes Adjustment reason enum
description string No A note about the adjustment. Plain text, up to 128 characters. Text with HTML, markup or control characters other than tabs and line breaks is rejected.
executedAt object Yes Timestamp object. When the payment or charge happened. Can be in the past, but not in the future.
Adjustment type
Name Definition
ADJUSTMENT_TYPE_DEBIT Increases the remaining balance.
ADJUSTMENT_TYPE_CREDIT Decreases the remaining balance.
Adjustment reason
Name Definition
ADJUSTMENT_REASON_OFFLINE_ADJUSTMENT A payment or charge settled outside Uber.
ADJUSTMENT_REASON_PENALTY A penalty charged to the borrower.

Adjustment rules:

  • The contract must be in CONTRACT_STATE_ACTIVE.
  • A single adjustment can’t be more than 20% of the contract’s loanAmount.
  • A debit can’t raise the remaining balance above loanAmount.
  • A contract can have at most 3 adjustments in any 7-day period. The period is measured from when Uber received each request, not from executedAt. Every request Uber accepts counts, including adjustments that later fail.
Example response

200 OK

{
  "adjustmentId": {
    "value": "<adjustment_id>"
  }
}
Response body parameters
Name Type Description
adjustmentId object UUID object. The adjustment’s ID. A retry with the same idempotencyKey returns the same ID.
Rate limit

1 request per hour for each developer application.

Endpoint-specific errors
HTTP status Code Cause
400 invalid-argument A required field is missing or invalid, executedAt is in the future, description is too long or isn’t plain text, the contract isn’t active, amount isn’t in the contract’s currency, or the contract already has 3 adjustments in the last 7 days.
400 invalid-amount amount is 0 or less or more than 20% of loanAmount, or a debit would raise the remaining balance above loanAmount.
400 not-found No contract has this ID.
401 permission-denied See Access.
500 internal-server-error Retry with the same idempotencyKey.
Notes
  • Uber applies the adjustment after responding. To confirm it took effect, check retentionDetails.remainingBalance and retentionDetails.totalAdjusted in Get Contract. No endpoint returns individual adjustments.
  • A retry with the same idempotencyKey never records the adjustment twice, even if the first attempt failed. If Get Contract shows that an adjustment didn’t take effect, send it again with a new idempotencyKey.

Uber

Developers
© 2026 Uber Technologies Inc.