# Create a revenue schedule for an invoice item adjustment (distribute by date range)

Creates a revenue schedule for an Invoice Item Adjustment and distribute the revenue by specifying the recognition start and end dates.

Endpoint: POST /v1/revenue-schedules/invoice-item-adjustments/{invoice-item-adj-key}/distribute-revenue-with-date-range
Version: 2026-09-11

## Path parameters:

  - `invoice-item-adj-key` (string, required)
    ID or number of the Invoice Item Adjustment, for example, e20b07fd416dcfcf0141c81164fd0a72.
If the specified Invoice Item Adjustment is already associated with a revenue schedule, the call will fail.

## Header parameters:

  - `Idempotency-Key` (string)
    Specify a unique idempotency key if you want to perform an idempotent POST or PATCH request. Do not use this header in other request types. 

With this header specified, the Zuora server can identify subsequent retries of the same request using this value, which prevents the same operation from being performed multiple times by accident.

  - `Accept-Encoding` (string)
    Include the `Accept-Encoding: gzip` header to compress responses as a gzipped file. It can significantly reduce the bandwidth required for a response. 

If specified, Zuora automatically compresses responses that contain over 1000 bytes of data, and the response contains a `Content-Encoding` header with the compression algorithm so that your client can decompress it.

  - `Content-Encoding` (string)
    Include the `Content-Encoding: gzip` header to compress a request. With this header specified, you should upload a gzipped file for the request payload instead of sending the JSON payload.

  - `Authorization` (string)
    The value is in the `Bearer {token}` format where {token} is a valid OAuth token generated by calling [Create an OAuth token](https://developer.zuora.com/api-references/api/operation/createToken).

  - `Zuora-Track-Id` (string)
    A custom identifier for tracing the API call. If you set a value for this header, Zuora returns the same value in the response headers. This header enables you to associate your system process identifiers with Zuora API calls, to assist with troubleshooting in the event of an issue.

The value of this field must use the US-ASCII character set and must not include any of the following characters: colon (`:`), semicolon (`;`), double quote (`"`), and quote (`'`).

  - `Zuora-Entity-Ids` (string)
    An entity ID. If you have [Zuora Multi-entity](https://docs.zuora.com?resourceId=platform-multi-entity-overview) enabled and the OAuth token is valid for more than one entity, you must use this header to specify which entity to perform the operation in. If the OAuth token is only valid for a single entity, or you do not have Zuora Multi-entity enabled, you do not need to set this header.

## Request fields (application/json):

  - `distributionType` (string)
    How you want to distribute the revenue.
* Daily Distribution: Distributes revenue evenly across each day between the recognitionStart and recognitionEnd dates.
* Monthly Distribution (Back Load): Back loads the revenue so you distribute the monthly amount in the partial month in the end only.
* Monthly Distribution (Front Load): Front loads the revenue so you distribute the monthly amount in the partial month in the beginning only.
* Monthly Distribution (Proration by Days): Splits the revenue amount between the two partial months.

**Note:** To use any of the Monthly Distribution options, you must have the "Monthly recognition over time" model enabled in **Settings > Finance > Manage Revenue Recognition Models** in the Zuora UI.
    Enum: "Daily Distribution", "Monthly Distribution (Back Load)", "Monthly Distribution (Front Load)", "Monthly Distribution (Proration by Days)"

  - `notes` (string)
    Additional information about this record.

  - `recognitionEnd` (string, required)
    The end date of a recognition period in `yyyy-mm-dd` format.
The maximum difference between the `recognitionStart` and `recognitionEnd` date fields is equal to 250 multiplied by the length of an accounting period.

  - `recognitionStart` (string, required)
    The start date of a recognition period in `yyyy-mm-dd` format.
If there is a closed accounting period between the `recognitionStart` and `recognitionEnd` dates, the revenue that would be placed in the closed accounting period is instead placed in the next open accounting period.

  - `revenueEvent` (object, required)
    Must specify at least one of `eventType` or `eventTypeSystemId`.

  - `revenueEvent.eventType` (string)
    Label of the revenue event type. Revenue event type labels can be duplicated. You can configure your revenue event type labels by navigating to **Settings > Finance > Configure Revenue Event Types** in the Zuora UI.
Note that `Credit Memo Posted` and `Debit Memo Posted` are only available if you enable the Invoice Settlement feature.
    Enum: "Invoice Posted", "Invoice Item Adjustment Created", "Invoice Canceled", "Invoice Item Adjustment Canceled", "Revenue Distributed", "Credit Memo Posted", "Debit Memo Posted"

  - `revenueEvent.eventTypeSystemId` (string)
    System ID of the revenue event type. Each eventType has a unique system ID. You can configure your revenue event type system IDs by navigating to **Settings > Finance > Configure Revenue Event Types** in the Zuora UI.
Required only if there is more than one revenue event type with the same label.

  - `revenueEvent.notes` (string)

## Response 200 fields (application/json):

  - `revenueScheduleNumber` (string)
    Revenue schedule number. The revenue schedule number is always prefixed with "RS", for example, "RS-00000001".

  - `success` (boolean)
    Returns `true` if the request was processed successfully.

## Response 200 headers (application/json):

  - `Content-Encoding` (string)
    This header is returned if you specify the `Accept-Encoding: gzip` request header and the response contains over 1000 bytes of data.

Note that only the following MIME types support gzipped responses:
  - `application/json`
  - `application/xml`
  - `text/html`
  - `text/csv`
  - `text/plain`

  - `RateLimit-Limit` (string)
    The request limit quota for the time window closest to exhaustion. See [rate limits](https://developer.zuora.com/docs/guides/rate-limits/) for more information.

  - `RateLimit-Remaining` (number)
    The number of requests remaining in the time window closest to quota exhaustion. See [rate limits](https://developer.zuora.com/docs/guides/rate-limits/) for more information.

  - `RateLimit-Reset` (number)
    The number of seconds until the quota resets for the time window closest to quota exhaustion. See [rate limits](https://developer.zuora.com/docs/guides/rate-limits/) for more information.

  - `Zuora-Request-Id` (string)
    The Zuora internal identifier of the API call. You cannot control the value of this header.

  - `Zuora-Track-Id` (string)
    A custom identifier for tracing the API call. If you specified a tracing identifier in the request headers, Zuora returns the same tracing identifier. Otherwise, Zuora does not set this header.

## Response 200 examples:

  - `response` (unknown)

