Zuora Mass Updater API

Use mass updater to perform mass actions more easily. For more information about mass updater, see Mass Updater.

Operations 3

POST /v1/bulk Perform a mass action #
GET /v1/bulk/{bulk-key} List all results of a mass action #
PUT /v1/bulk/{bulk-key}/stop Stop a mass action #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/zuora-mass-updater-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

zuora-mass-updater-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  version: '2023-12-15'
  title: Reference Mass Updater API
  description: '# Introduction


    Welcome to the REST API reference for the Zuora Billing, Payments, and Central Platform!'
  contact:
    email: docs@zuora.com
servers:
- url: https://rest.zuora.com/
tags:
- name: Mass Updater
  description: 'Use mass updater to perform mass actions more easily.


    For more information about mass updater, see Mass Updater.'
paths:
  /v1/bulk:
    post:
      summary: Perform a mass action
      operationId: POST_MassUpdater
      description: 'Describes how to perform a mass action through the REST API.


        Using this API method, you send a multipart/form-data request containing a `.csv` file with data about the mass action you want to perform. Zuora returns a key and then asynchronously processes the mass action. You can use the key to get details about the result of the mass action.


        If you want to use this operation to perform the Mass Payment Upload (MPU) mass action, see Mass Payment Upload for more information.'
      tags:
      - Mass Updater
      parameters:
      - $ref: '#/components/parameters/GLOBAL_HEADER_Idempotency_Key'
      - $ref: '#/components/parameters/GLOBAL_HEADER_Accept_Encoding'
      - $ref: '#/components/parameters/GLOBAL_HEADER_Content_Encoding'
      - $ref: '#/components/parameters/GLOBAL_HEADER_Authorization_OAuth_optional'
      - $ref: '#/components/parameters/GLOBAL_HEADER_Zuora_Track_Id'
      - $ref: '#/components/parameters/GLOBAL_HEADER_Zuora_Entity_Ids_Single'
      - $ref: '#/components/parameters/GLOBAL_HEADER_Zuora_Org_Ids'
      responses:
        '200':
          headers:
            Content-Encoding:
              description: "This header is returned if you specify the `Accept-Encoding: gzip` request header and the response contains over 1000 bytes of data.\n\nNote that only the following MIME types support gzipped responses:\n  - `application/json`\n  - `application/xml`\n  - `text/html`\n  - `text/csv`\n  - `text/plain`\n"
              schema:
                type: string
            RateLimit-Limit:
              description: 'The request limit quota for the time window closest to exhaustion. See [rate limits](https://knowledgecenter.zuora.com/BB_Introducing_Z_Business/Policies/Concurrent_Request_Limits#Rate_limits) for more information.

                '
              schema:
                type: string
            RateLimit-Remaining:
              description: 'The number of requests remaining in the time window closest to quota exhaustion. See [rate limits](https://knowledgecenter.zuora.com/BB_Introducing_Z_Business/Policies/Concurrent_Request_Limits#Rate_limits) for more information.

                '
              schema:
                type: number
            RateLimit-Reset:
              description: 'The number of seconds until the quota resets for the time window closest to quota exhaustion. See [rate limits](https://knowledgecenter.zuora.com/BB_Introducing_Z_Business/Policies/Concurrent_Request_Limits#Rate_limits) for more information.

                '
              schema:
                type: number
            Zuora-Request-Id:
              description: 'The Zuora internal identifier of the API call. You cannot control the value of this header.

                '
              schema:
                type: string
                maxLength: 36
                minLength: 36
            Zuora-Track-Id:
              description: '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.

                '
              schema:
                type: string
                maxLength: 64
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/POSTMassUpdateResponseType'
              example:
                success: true
                bulkKey: 402892f04c97b89a014c97bb30a50003
      x-code-samples:
      - lang: curl
        label: cURL
        source: 'curl -X POST -H "Authorization: Bearer f21f017e4724445d8647b1f0de7ed6f1" -F "file=@CreateRevenueSchedules.csv" -F "params="{\"actionType\": \"CreateRevenueSchedule\"}" "https://rest.zuora.com/v1/bulk"

          '
      requestBody:
        content:
          multipart/form-data:
            schema:
              type: object
              properties:
                file:
                  type: string
                  description: 'File containing data about the mass action you want to perform. The file requirements are the same as when uploading a file through the Mass Updater in the Zuora UI. The file must be a `.csv` file or a zipped `.csv` file.


                    The maximum file size is 4 MB.


                    The data in the file must be formatted according to the mass action type you want to perform.

                    '
                  format: binary
                params:
                  type: string
                  description: "Container for the following fields. You must format this parameter as a JSON object.\n\n* `actionType` (string, **Required**) - Type of mass action you want to perform. The following mass actions are supported: `UpdateAccountingCode`, `CreateRevenueSchedule`, `UpdateRevenueSchedule`, `DeleteRevenueSchedule`, `ImportFXRate`, and `MPU`.\n\n* `checksum` (string) - An MD5 checksum that is used to validate the integrity of\n  the uploaded file. The checksum is a 32-character string.\n"
              required:
              - file
              - params
  /v1/bulk/{bulk-key}:
    get:
      summary: List all results of a mass action
      operationId: GET_MassUpdater
      description: Describes how to get information about the result of a mass action through the REST API.
      tags:
      - Mass Updater
      parameters:
      - $ref: '#/components/parameters/GLOBAL_HEADER_Accept_Encoding'
      - $ref: '#/components/parameters/GLOBAL_HEADER_Content_Encoding'
      - $ref: '#/components/parameters/GLOBAL_HEADER_Authorization_OAuth_optional'
      - $ref: '#/components/parameters/GLOBAL_HEADER_Zuora_Track_Id'
      - $ref: '#/components/parameters/GLOBAL_HEADER_Zuora_Entity_Ids_Single'
      - $ref: '#/components/parameters/GLOBAL_HEADER_Zuora_Org_Ids'
      - name: bulk-key
        in: path
        description: 'String of 32 characters that identifies a mass action. You get the bulk-key after performing a mass action through the REST API.

          '
        required: true
        schema:
          type: string
      responses:
        '200':
          headers:
            Content-Encoding:
              description: "This header is returned if you specify the `Accept-Encoding: gzip` request header and the response contains over 1000 bytes of data.\n\nNote that only the following MIME types support gzipped responses:\n  - `application/json`\n  - `application/xml`\n  - `text/html`\n  - `text/csv`\n  - `text/plain`\n"
              schema:
                type: string
            RateLimit-Limit:
              description: 'The request limit quota for the time window closest to exhaustion. See [rate limits](https://knowledgecenter.zuora.com/BB_Introducing_Z_Business/Policies/Concurrent_Request_Limits#Rate_limits) for more information.

                '
              schema:
                type: string
            RateLimit-Remaining:
              description: 'The number of requests remaining in the time window closest to quota exhaustion. See [rate limits](https://knowledgecenter.zuora.com/BB_Introducing_Z_Business/Policies/Concurrent_Request_Limits#Rate_limits) for more information.

                '
              schema:
                type: number
            RateLimit-Reset:
              description: 'The number of seconds until the quota resets for the time window closest to quota exhaustion. See [rate limits](https://knowledgecenter.zuora.com/BB_Introducing_Z_Business/Policies/Concurrent_Request_Limits#Rate_limits) for more information.

                '
              schema:
                type: number
            Zuora-Request-Id:
              description: 'The Zuora internal identifier of the API call. You cannot control the value of this header.

                '
              schema:
                type: string
                maxLength: 36
                minLength: 36
            Zuora-Track-Id:
              description: '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.

                '
              schema:
                type: string
                maxLength: 64
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GETMassUpdateType'
              example:
                actionType: UpdateAccountingCode
                inputSize: 354
                uploadedBy: smith@example.com
                uploadedOn: '2015-04-07 14:22:09'
                status: Completed
                startedOn: '2015-04-07 14:22:11'
                endedOn: '2015-04-07 14:32:01'
                outputSize: 350
                outputURL: https://rest.zuora.com/v1/files/402892c84c9285b1014c9293f5320007
                outputType: (url:.csv.zip)
                totalCount: 3
                processedCount: 3
                errorCount: 1
                successCount: 2
                success: true
  /v1/bulk/{bulk-key}/stop:
    put:
      summary: Stop a mass action
      operationId: PUT_MassUpdater
      description: 'Describes how to stop a mass action through the REST API. You can stop a mass action when its status is Pending or Processing. After you have stopped a mass action, you can get the mass action result to see details of the mass action.


        - If you stop a mass action when its status is Pending, no response file is generated because no records have been processed.


        - If you stop a mass action when its status is Processing, a response file is generated. You can check the response file to see which records have been processed and which have not. In the response file, the **Success** column has the value `Y` (successful) or `N` (failed) for processed records, and a blank value for unprocessed records.


        Records that have already been processed when a mass action is stopped are not rolled back.'
      tags:
      - Mass Updater
      parameters:
      - $ref: '#/components/parameters/GLOBAL_HEADER_Accept_Encoding'
      - $ref: '#/components/parameters/GLOBAL_HEADER_Content_Encoding'
      - $ref: '#/components/parameters/GLOBAL_HEADER_Authorization_OAuth_optional'
      - $ref: '#/components/parameters/GLOBAL_HEADER_Zuora_Track_Id'
      - $ref: '#/components/parameters/GLOBAL_HEADER_Zuora_Entity_Ids_Single'
      - $ref: '#/components/parameters/GLOBAL_HEADER_Zuora_Org_Ids'
      - name: bulk-key
        in: path
        required: true
        description: 'String of 32 characters that identifies a mass action. You get the bulk-key after performing a mass action through the REST API.

          '
        schema:
          type: string
      responses:
        '200':
          headers:
            Content-Encoding:
              description: "This header is returned if you specify the `Accept-Encoding: gzip` request header and the response contains over 1000 bytes of data.\n\nNote that only the following MIME types support gzipped responses:\n  - `application/json`\n  - `application/xml`\n  - `text/html`\n  - `text/csv`\n  - `text/plain`\n"
              schema:
                type: string
            RateLimit-Limit:
              description: 'The request limit quota for the time window closest to exhaustion. See [rate limits](https://knowledgecenter.zuora.com/BB_Introducing_Z_Business/Policies/Concurrent_Request_Limits#Rate_limits) for more information.

                '
              schema:
                type: string
            RateLimit-Remaining:
              description: 'The number of requests remaining in the time window closest to quota exhaustion. See [rate limits](https://knowledgecenter.zuora.com/BB_Introducing_Z_Business/Policies/Concurrent_Request_Limits#Rate_limits) for more information.

                '
              schema:
                type: number
            RateLimit-Reset:
              description: 'The number of seconds until the quota resets for the time window closest to quota exhaustion. See [rate limits](https://knowledgecenter.zuora.com/BB_Introducing_Z_Business/Policies/Concurrent_Request_Limits#Rate_limits) for more information.

                '
              schema:
                type: number
            Zuora-Request-Id:
              description: 'The Zuora internal identifier of the API call. You cannot control the value of this header.

                '
              schema:
                type: string
                maxLength: 36
                minLength: 36
            Zuora-Track-Id:
              description: '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.

                '
              schema:
                type: string
                maxLength: 64
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CommonResponseType'
              example:
                success: true
components:
  parameters:
    GLOBAL_HEADER_Idempotency_Key:
      name: Idempotency-Key
      in: header
      required: false
      description: "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. \n\nWith 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. \n"
      schema:
        type: string
        maxLength: 255
    GLOBAL_HEADER_Authorization_OAuth_optional:
      name: Authorization
      in: header
      required: false
      description: 'The value is in the `Bearer {token}` format where {token} is a valid OAuth token generated by calling [Create an OAuth token](/api-references/api/operation/createToken).

        '
      schema:
        type: string
    GLOBAL_HEADER_Accept_Encoding:
      name: Accept-Encoding
      in: header
      required: false
      description: "Include the `Accept-Encoding: gzip` header to compress responses as a gzipped file. It can significantly reduce the bandwidth required for a response. \n\nIf 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.\n"
      schema:
        type: string
    GLOBAL_HEADER_Content_Encoding:
      name: Content-Encoding
      in: header
      required: false
      description: '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.

        '
      schema:
        type: string
    GLOBAL_HEADER_Zuora_Track_Id:
      name: Zuora-Track-Id
      in: header
      required: false
      description: '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 (`''`).

        '
      schema:
        type: string
        maxLength: 64
    GLOBAL_HEADER_Zuora_Entity_Ids_Single:
      name: Zuora-Entity-Ids
      in: header
      required: false
      description: 'An entity ID. If you have [Zuora Multi-entity](https://knowledgecenter.zuora.com/BB_Introducing_Z_Business/Multi-entity) 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.

        '
      schema:
        type: string
    GLOBAL_HEADER_Zuora_Org_Ids:
      name: Zuora-Org-Ids
      in: header
      required: false
      description: "Comma separated IDs. If you have <a href=\"https://knowledgecenter.zuora.com/Zuora_Central_Platform/Multi-Org\" target=\"_blank\">Zuora Multi-Org</a> enabled, \nyou can use this header to specify which orgs to perform the operation in. If you do not have Zuora Multi-Org enabled, you should not set this header.\n\nThe IDs must be a sub-set of the user's accessible orgs. If you specify an org that the user does not have access to, the operation fails.\n\nIf the header is not set, the operation is performed in scope of the user's accessible orgs.\n"
      schema:
        type: string
  schemas:
    GETMassUpdateType:
      properties:
        actionType:
          description: 'Type of mass action.

            '
          type: string
        endedOn:
          description: 'Date and time that the mass action was completed. The format is `yyyy-MM-dd hh:mm:ss`.

            '
          format: date-time
          type: string
        errorCount:
          description: 'Total number of failed records.


            This field is updated in real time. When the mass action **status** is Processing, this field returns the number of records that have failed so far. When the mass action **status** is Pending, this field is null.

            '
          type: string
        inputSize:
          description: 'Size of the input file in bytes.

            '
          format: int64
          type: integer
        outputSize:
          description: 'Size of the response file in bytes.

            '
          format: int64
          type: integer
        outputType:
          description: 'Type of output for the response file. The following table describes the output type.


            | Output Type    | Description                         |

            |----------------|-------------------------------------|

            | (url:.csv.zip) | URL pointing to a zipped .csv file. |

            '
          type: string
        outputURL:
          description: "URL to download the response file. The response file is a zipped .csv file. \nThe response file is identical to the file you uploaded to perform the mass action, with additional columns providing information about the outcome of each record. \nThis field only returns a value when the mass action **status** is Completed or Stopped. Otherwise, this field is null.\n"
          type: string
        processedCount:
          description: 'Total number of processed records. This field is equal to the sum of `errorCount` and `successCount`.


            This field is updated in real time. When the mass action **status** is Processing, this field returns the number of records that have been processed so far. When the mass action **status** is Pending, this field is null.

            '
          type: string
        startedOn:
          description: 'Date and time that Zuora started processing the mass action. The format is `yyyy-MM-dd hh:mm:ss`.

            '
          format: date-time
          type: string
        status:
          description: 'Status of the mass action. The following table describes the mass action statuses.


            | Status     | Description                                                                |

            |------------|----------------------------------------------------------------------------|

            | Pending    | Mass action has not yet started being processed.                           |

            | Processing | Mass action is in progress.                                                |

            | Stopping   | Mass action is in the process of stopping, but has not yet stopped.        |

            | Stopped    | Mass action has stopped.                                                   |

            | Completed  | Mass action was successfully completed. There may still be failed records. |

            | Failed     | Mass action failed. No records are processed. No response file is created. |

            '
          type: string
        success:
          description: 'Returns `true` if the request was processed successfully.

            '
          type: boolean
        successCount:
          description: 'Total number of successful records.

            This field is updated in real time. When the mass action **status** is Processing, this field returns the number of records that have succeeded so far. When the mass action **status** is Pending, this field is null.

            '
          type: string
        totalCount:
          description: 'Total number of records in the uploaded mass action file.

            When the mass action **status** is Pending, this field is null.

            '
          type: string
        uploadedBy:
          description: 'Email of the person who uploaded the mass action file.

            '
          type: string
        uploadedOn:
          description: 'Date and time that the mass action file was uploaded. The format is `yyyy-MM-dd hh:mm:ss`.

            '
          format: date-time
          type: string
      type: object
    CommonResponseType:
      properties:
        processId:
          description: 'The Id of the process that handle the operation.

            '
          type: string
        reasons:
          items:
            properties:
              code:
                description: 'The error code of response.

                  '
                type: string
              message:
                description: 'The detail information of the error response

                  '
                type: string
            type: object
          type: array
        success:
          description: 'Indicates whether the call succeeded.

            '
          type: boolean
      type: object
    POSTMassUpdateResponseType:
      properties:
        bulkKey:
          description: 'String of 32 characters that identifies the mass action. The bulkKey is generated before the mass action is processed. You can use the bulkKey to Get the Mass Action Result.

            '
          type: string
        success:
          description: 'Returns `true` if the request was processed successfully.

            '
          type: boolean
      type: object
x-tagGroups:
- name: Authentication
  tags:
  - OAuth
- name: Products
  tags:
  - Products
  - Catalog
  - Catalog Groups
  - Offers
  - Price Book Items
  - Product Rate Plans
  - Product Rate Plan Definitions
  - Product Rate Plan Charges
  - Product Charge Definitions
  - Product Rate Plan Charge Tiers
  - Zuora Revenue Integration
- name: Customer Accounts
  tags:
  - Accounts
  - Contacts
  - Contact Snapshots
- name: Orders and Subscriptions
  tags:
  - Sign Up
  - Orders
  - Order Actions
  - Order Line Items
  - Fulfillments
  - Ramps
  - Subscriptions
  - Rate Plans
- name: Advanced Consumption Billing
  tags:
  - Prepaid with Drawdown
- name: Usage
  tags:
  - Usage
- name: Billing Documents
  tags:
  - Delivery Adjustments
  - Billing Documents
  - Invoices
  - Credit Memos
  - Debit Memos
  - E-Invoicing
  - Invoice Schedules
  - Taxation Items
  - Sequence Sets
  - Operations
- name: Bill Runs
  tags:
  - Bill Run
  - Billing Preview Run
- name: Payment Methods
  tags:
  - Payment Methods
  - Custom Payment Method Types
  - Payment Method Updater
  - Payment Method Snapshots
  - Payment Method Transaction Logs
  - Hosted Pages
  - RSA Signatures
- name: Payments
  tags:
  - Payment Authorization
  - Payment Gateways
  - Payment Gateway Reconciliation
  - Payments
  - Payment Transaction Logs
  - Payment Runs
  - Payment Schedules
  - Refunds
- name: Finance
  tags:
  - Accounting Codes
  - Accounting Periods
  - Summary Journal Entries
  - Journal Runs
  - Mass Updater
- name: Events and Notifications
  tags:
  - Notifications
  - Custom Event Triggers
  - Custom Scheduled Events
- name: Custom Objects
  tags:
  - Custom Object Definitions
  - Custom Object Records
  - Custom Object Jobs
- name: System Health
  tags:
  - API Health
  - Bill Run Health
  - Electronic Payments Health
- name: Workflow
  tags:
  - Workflows
- name: Data Query
  tags:
  - Data Queries
- name: AQuA
  tags:
  - Aggregate Queries
- name: Deployment Manager
  tags:
  - Configuration Templates
- name: Multiple Organizations
  tags:
  - Data Labeling
- name: Order to Revenue
  tags:
  - Regenerate
- name: General-Purpose Operations
  tags:
  - Actions
  - Settings
  - Files
  - Imports
  - Custom Exchange Rates
  - Attachments
  - Describe