> Portal Navigation:
> 
> - Append `.md` to any URL under `https://dev.wix.com/docs/` to get its markdown version.
> - Pages are either content pages (article or reference text) or menu pages (a list of links to child pages).
> - To get a menu page, truncate any URL to a parent path and append `.md` (e.g. `https://dev.wix.com/docs/sdk.md`, `https://dev.wix.com/docs/sdk/core-modules.md`).
> - Top-level index of all portals: https://dev.wix.com/docs/llms.txt
> - Full concatenated docs: https://dev.wix.com/docs/llms-full.txt

# BulkAssignExemptOverrides

# Package: tax

# Namespace: ManualTaxMappingService

# Method link: https://dev.wix.com/docs/api-reference/business-solutions/e-commerce/extensions/tax/manual-tax-mappings/bulk-assign-exempt-overrides.md

## Permission Scopes:
Manage Orders: SCOPE.DC-STORES.MANAGE-ORDERS

## Introduction

Assigns tax exempt overrides to multiple manual tax mappings in a single request.

---

## REST API

### Schema

```
 Method: bulkAssignExemptOverrides
 Description: Assigns tax exempt overrides to multiple manual tax mappings in a single request.
 URL: https://www.wixapis.com/billing/v1/manual-tax-mappings/bulk-assign-exempt-overrides
 Method: POST
 # Note: If the parameter `a.b` is listed under required parameters, `b` is only required if `a` is also present.
 Required parameters:  assignOverrides.manualTaxMappingId, assignOverrides.exemptGroupOverrides, assignOverrides.exemptGroupOverrides.exemptGroupId, assignOverrides.exemptGroupOverrides.rate
 Method parameters: 
   param name: assignOverrides | type: array<assignOverrides> | description: List of assign overrides.  | validation: maxItems 50
              - name: manualTaxMappingId | type: string | description: GUID of the manual tax mapping to which the exempt group override will be assigned. | required: true | validation: format GUID
              - name: exemptGroupOverrides | type: array<ExemptGroupIdOverride> | description: List of exempt group overrides to assign to the manual tax mapping. | required: true | validation: minItems 1, maxItems 50
                 - name: exemptGroupId | type: string | description: GUID of the tax exempt group.  | validation: format GUID
                 - name: rate | type: string | description: Override tax rate for the exempt group in the context of the manual tax mapping.  | validation: format DECIMAL_VALUE, decimalValue {"maxScale":3}
   param name: returnEntity | type: returnEntity | description: Whether to return the updated manual tax mapping entities in the response. Default: `false`  
 Return type: BulkAssignExemptOverridesResponse
  - name: results | type: array<BulkExemptOverrideResult> | description: List of updated manual tax mappings.  | validation: maxItems 50
     - name: itemMetadata | type: ItemMetadata | description: Metadata for the individual assign operation.  
        - name: id | type: string | description: Item GUID. Provided only whenever possible. For example, `itemId` can't be provided when item creation has failed.  | validation: format GUID
        - name: originalIndex | type: integer | description: Index of the item within the request array. Allows for correlation between request and response items.  | validation: minimum 0
        - name: success | type: boolean | description: Whether the requested action for this item was successful. When `false`, the `error` field is returned.  
        - name: error | type: ApplicationError | description: Details about the error in case of failure.  
           - name: code | type: string | description: Error code.  
           - name: description | type: string | description: Description of the error.  
           - name: data | type: object | description: Data related to the error.  
     - name: item | type: ManualTaxMapping | description: Updated manual tax mapping. Only present if `returnEntity` was set to `true` in the request.  
        - name: id | type: string | description: Manual tax mapping GUID.  | validation: format GUID
        - name: revision | type: string | description: Revision number, which increments by 1 each time the manual tax mapping is updated. To prevent conflicting changes, the current revision must be passed when updating the manual tax mapping.  Ignored when creating a manual tax mapping.  | validation: format int64
        - name: createdDate | type: string | description: Date and time the manual tax mapping was created.  | validation: format date-time
        - name: updatedDate | type: string | description: Date and time the manual tax mapping was last updated.  | validation: format date-time
        - name: taxGroupId | type: string | description: Tax group GUID. Tax groups define collections of items or services that share the same tax treatment.  | validation: format GUID
        - name: taxRegionId | type: string | description: Tax region GUID. Tax regions represent geographical areas where specific tax rules apply.  | validation: format GUID
        - name: taxRate | type: string | description: Tax rate to apply for this tax group and region combination.  Specified as a decimal string representing a fraction, not a percentage. For example, `"0.05"` is 5%, `"0.1"` is 10%, and `"0.08"` is 8%. Don't pass a number (`0.05`), an integer (`5`), or a percentage string (`"5%"`). Up to 6 decimal places are supported.  | validation: decimalValue {"maxScale":6,"gte":"0"}
        - name: description | type: string | description: Description of the manual tax mapping. Use this field to add context or notes about the tax rate.  | validation: maxLength 1000
        - name: taxType | type: string | description: Type of tax being applied, such as `VAT`, `GST`, or `Sales Tax`. This depends on the jurisdiction's tax laws.  | validation: maxLength 200
        - name: taxName | type: string | description: Customer-facing name of the tax, shown at checkout. For example, `STATE TAX`, `GST`, or `VAT`.  Cosmetic only. It doesn't affect the calculated amount. Can be left empty, in which case checkout shows a default label such as `Sales Tax`.  | validation: maxLength 200
        - name: jurisdiction | type: string | description: Name of the jurisdiction where this tax rate applies. For example, `California` or `United Kingdom`.  | validation: maxLength 200
        - name: jurisdictionType | type: JurisdictionType | description: Type of jurisdiction where this tax rate applies, such as country, state, county, city, or special district.  
             - enum: UNDEFINED, COUNTRY, STATE, COUNTY, CITY, SPECIAL
        - name: exemptRates | type: array<ExemptDetails> | description: Tax exemption details for user-defined exempt groups.  | validation: maxItems 50
           - name: taxExemptGroupId | type: string | description: Tax exempt group GUID.  | validation: format GUID
           - name: taxRate | type: string | description: Tax override rate for given tax mapping.  | validation: decimalValue {"maxScale":6,"gte":"0"}
        - name: extendedFields | type: ExtendedFields | description: Extended fields for storing additional custom data.  
           - name: namespaces | type: object | description: Extended field data. Each key corresponds to the namespace of the app that created the extended fields. The value of each key is structured according to the schema defined when the extended fields were configured.  You can only access fields for which you have the appropriate permissions.  Learn more about [extended fields](https://dev.wix.com/docs/rest/articles/getting-started/extended-fields.md).  | validation: format map
  - name: bulkActionMetadata | type: BulkActionMetadata | description: Metadata for the bulk assign operation.  
     - name: totalSuccesses | type: integer | description: Number of items that were successfully processed.  | validation: minimum 0
     - name: totalFailures | type: integer | description: Number of items that couldn't be processed.  | validation: minimum 0
     - name: undetailedFailures | type: integer | description: Number of failures without details because detailed failure threshold was exceeded.  | validation: minimum 0


```

### Examples

### Bulk Assign Exempt Overrides
Assigns tax exempt group rate overrides to multiple manual tax mappings in a single request

```curl
curl -X POST \
  'https://www.wixapis.com/billing/v1/manual-tax-mappings/bulk-assign-exempt-overrides' \
  -H 'Content-type: application/json' \
  -H 'Authorization: <AUTH>' \
  -d '{
        "assignOverrides": [
          {
            "manualTaxMappingId": "5db67330-5991-40b0-983f-e7c8dafb5e69",
            "exemptGroupOverrides": [
              {
                "exemptGroupId": "e5f6a7b8-c9d0-1e2f-3a4b-c5d6e7f8a9b0",
                "rate": "0"
              }
            ]
          }
        ],
        "returnEntity": true
      }'
```

---

## JavaScript SDK

### Schema

```
 Method: wixClientAdmin.billing.manualTaxMappings.bulkAssignExemptOverrides(options)
 Description: Assigns tax exempt overrides to multiple manual tax mappings in a single request.
 # Note: If the parameter `a.b` is listed under required parameters, `b` is only required if `a` is also present.
 Required parameters:  options.assignOverrides.manualTaxMappingId, options.assignOverrides.exemptGroupOverrides, options.assignOverrides.exemptGroupOverrides.exemptGroupId, options.assignOverrides.exemptGroupOverrides.rate
 Method parameters: 
   param name: options | type: BulkAssignExemptOverridesOptions  none  
        - name: assignOverrides | type: array<AssignOverride> | description: List of assign overrides.  | validation: maxItems 50
           - name: manualTaxMappingId | type: string | description: GUID of the manual tax mapping to which the exempt group override will be assigned.  | validation: format GUID
           - name: exemptGroupOverrides | type: array<ExemptGroupIdOverride> | description: List of exempt group overrides to assign to the manual tax mapping.  | validation: minItems 1, maxItems 50
              - name: exemptGroupId | type: string | description: GUID of the tax exempt group.  | validation: format GUID
              - name: rate | type: string | description: Override tax rate for the exempt group in the context of the manual tax mapping.  | validation: format DECIMAL_VALUE, decimalValue {"maxScale":3}
        - name: returnEntity | type: boolean | description: Whether to return the updated manual tax mapping entities in the response. Default: `false`  
 Return type: PROMISE<BulkAssignExemptOverridesResponse>
  - name: results | type: array<BulkExemptOverrideResult> | description: List of updated manual tax mappings.  | validation: maxItems 50
     - name: itemMetadata | type: ItemMetadata | description: Metadata for the individual assign operation.  
        - name: _id | type: string | description: Item GUID. Provided only whenever possible. For example, `itemId` can't be provided when item creation has failed.  | validation: format GUID
        - name: originalIndex | type: integer | description: Index of the item within the request array. Allows for correlation between request and response items.  | validation: minimum 0
        - name: success | type: boolean | description: Whether the requested action for this item was successful. When `false`, the `error` field is returned.  
        - name: error | type: ApplicationError | description: Details about the error in case of failure.  
           - name: code | type: string | description: Error code.  
           - name: description | type: string | description: Description of the error.  
           - name: data | type: object | description: Data related to the error.  
     - name: item | type: ManualTaxMapping | description: Updated manual tax mapping. Only present if `returnEntity` was set to `true` in the request.  
        - name: _id | type: string | description: Manual tax mapping GUID.  | validation: format GUID
        - name: revision | type: string | description: Revision number, which increments by 1 each time the manual tax mapping is updated. To prevent conflicting changes, the current revision must be passed when updating the manual tax mapping.  Ignored when creating a manual tax mapping.  | validation: format int64
        - name: _createdDate | type: Date | description: Date and time the manual tax mapping was created.  
        - name: _updatedDate | type: Date | description: Date and time the manual tax mapping was last updated.  
        - name: taxGroupId | type: string | description: Tax group GUID. Tax groups define collections of items or services that share the same tax treatment.  | validation: format GUID
        - name: taxRegionId | type: string | description: Tax region GUID. Tax regions represent geographical areas where specific tax rules apply.  | validation: format GUID
        - name: taxRate | type: string | description: Tax rate to apply for this tax group and region combination.  Specified as a decimal string representing a fraction, not a percentage. For example, `"0.05"` is 5%, `"0.1"` is 10%, and `"0.08"` is 8%. Don't pass a number (`0.05`), an integer (`5`), or a percentage string (`"5%"`). Up to 6 decimal places are supported.  | validation: decimalValue {"maxScale":6,"gte":"0"}
        - name: description | type: string | description: Description of the manual tax mapping. Use this field to add context or notes about the tax rate.  | validation: maxLength 1000
        - name: taxType | type: string | description: Type of tax being applied, such as `VAT`, `GST`, or `Sales Tax`. This depends on the jurisdiction's tax laws.  | validation: maxLength 200
        - name: taxName | type: string | description: Customer-facing name of the tax, shown at checkout. For example, `STATE TAX`, `GST`, or `VAT`.  Cosmetic only. It doesn't affect the calculated amount. Can be left empty, in which case checkout shows a default label such as `Sales Tax`.  | validation: maxLength 200
        - name: jurisdiction | type: string | description: Name of the jurisdiction where this tax rate applies. For example, `California` or `United Kingdom`.  | validation: maxLength 200
        - name: jurisdictionType | type: JurisdictionType | description: Type of jurisdiction where this tax rate applies, such as country, state, county, city, or special district.  
             - enum: UNDEFINED, COUNTRY, STATE, COUNTY, CITY, SPECIAL
        - name: exemptRates | type: array<ExemptDetails> | description: Tax exemption details for user-defined exempt groups.  | validation: maxItems 50
           - name: taxExemptGroupId | type: string | description: Tax exempt group GUID.  | validation: format GUID
           - name: taxRate | type: string | description: Tax override rate for given tax mapping.  | validation: decimalValue {"maxScale":6,"gte":"0"}
        - name: extendedFields | type: ExtendedFields | description: Extended fields for storing additional custom data.  
           - name: namespaces | type: object | description: Extended field data. Each key corresponds to the namespace of the app that created the extended fields. The value of each key is structured according to the schema defined when the extended fields were configured.  You can only access fields for which you have the appropriate permissions.  Learn more about [extended fields](https://dev.wix.com/docs/rest/articles/getting-started/extended-fields.md).  | validation: format map
  - name: bulkActionMetadata | type: BulkActionMetadata | description: Metadata for the bulk assign operation.  
     - name: totalSuccesses | type: integer | description: Number of items that were successfully processed.  | validation: minimum 0
     - name: totalFailures | type: integer | description: Number of items that couldn't be processed.  | validation: minimum 0
     - name: undetailedFailures | type: integer | description: Number of failures without details because detailed failure threshold was exceeded.  | validation: minimum 0


```

### Examples

### Bulk Assign Exempt Overrides
Assign tax exempt group rate overrides to manual tax mappings in a single request.

```javascript
import { manualTaxMappings } from "@wix/billing";

async function bulkAssignExemptOverrides() {
  const response = await manualTaxMappings.bulkAssignExemptOverrides({
    assignOverrides: [
      {
        manualTaxMappingId: "5db67330-5991-40b0-983f-e7c8dafb5e69",
        exemptGroupOverrides: [
          {
            exemptGroupId: "e5f6a7b8-c9d0-1e2f-3a4b-c5d6e7f8a9b0",
            rate: "0",
          },
        ],
      },
    ],
    returnEntity: true,
  });
  return response;
}

/* Promise resolves to:
 * {
 *   "results": [
 *     {
 *       "itemMetadata": {
 *         "originalIndex": 0,
 *         "success": true,
 *         "_id": "5db67330-5991-40b0-983f-e7c8dafb5e69"
 *       },
 *       "item": {
 *         "taxGroupId": "1d14e4a0-8a8f-4d21-813c-b743eef41bfd",
 *         "taxRegionId": "c9a4e2db-201d-440e-af58-bebad1423716",
 *         "taxRate": "0.08",
 *         "taxType": "Sales Tax",
 *         "taxName": "STATE TAX",
 *         "jurisdiction": "New York",
 *         "jurisdictionType": "STATE",
 *         "exemptRates": [
 *           { "taxExemptGroupId": "e5f6a7b8-c9d0-1e2f-3a4b-c5d6e7f8a9b0", "taxRate": "0" }
 *         ],
 *         "_id": "5db67330-5991-40b0-983f-e7c8dafb5e69",
 *         "revision": "5",
 *         "_createdDate": "2026-07-20T12:36:19.665Z",
 *         "_updatedDate": "2026-07-20T12:39:07.772Z"
 *       }
 *     }
 *   ]
 * }
 */

```

### bulkAssignExemptOverrides (self-hosted)
Self-hosted SDK calls require you to [create a client](https://dev.wix.com/docs/sdk/articles/work-with-the-sdk/about-the-wix-client.md).

```javascript
import { createClient } from '@wix/sdk';
import { manualTaxMappings } from '@wix/billing';
// Import the auth strategy for the relevant access type
// Import the relevant host module if needed

const myWixClient = createClient ({
  modules: { manualTaxMappings },
  // Include the auth strategy and host as relevant
});


async function bulkAssignExemptOverrides(options) {
  const response = await myWixClient.manualTaxMappings.bulkAssignExemptOverrides(options);
};
```

---