# Account Range Registration
source: https://developer.mastercard.com/account-catalog-services/documentation/testing/negative-testing/are-enablement/index.md

The following negative test scenarios describe how the Account Catalog Services API responds when account range registration, update, and delete requests carry invalid product rule values, missing identifiers, or when a downstream domain times out.
Note: The body is shown as plain JSON for readability; it must be JWE-encrypted before sending (and `oauth_body_hash` computed over the encrypted body).

### 1. Range Registration --- multiple product rule validation rejects (HTTP 400) {#1-range-registration--multiple-product-rule-validation-rejects-http-400}

Registering an account range whose product rules carry invalid values, returns HTTP 400 with one error per failed validation.

**Endpoint:** `POST`
* Sandbox
* Production

```Sandbox
https://sandbox.api.mastercard.com/asc/acs-api/account-ranges
```

```Production
https://api.mastercard.com/asc/acs-api/account-ranges
```

#### Account Catalog Services API Request {#account-catalog-services-api-request}

* `requestId` (Universal-Spec-Api-Request-Id): `<request_id>`
* authorization: `<reqKey>`

* JSON

```JSON
{
  "accountRangeStart": "5XXXXXXXXXXXXXXXXXX",
  "accountRangeEnd": "5XXXXXXXXXXXXXXXXXX",
  "accountLevelManagement": {
    "productRules": [
      {
        "product": "P$$R",
        "productRuleStatus": "T",
        "productGraduationProductCode": "M$W",
        "acquiringInstitutionIDCode": "4531868698123456789",
        "mastercardAssignedID": "79299123456",
        "posCountryCode": "84012",
        "cardAcceptorIDCode": "C7MQDNWSXAGVQQQQQQQQQQQQQQQQQQQQQQQ",
        "subMerchantID": "sC7MQDNWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWSXAGV",
        "merchantType": "7435123",
        "cardholderTransactionTypeCode": "0112",
        "amountTransactionLow": "11111111111111111111111",
        "amountTransactionHigh": "11111111111111111111111",
        "currencyCodeTransaction": "84012"
      }
    ]
  }
}
```

#### Account Catalog Services API Response {#account-catalog-services-api-response}

* status: HTTP 400 Bad Request
* `requestId` (Universal-Spec-Api-Request-Id): `<request_id>`

* JSON

```JSON
{
  "Errors": {
    "Error": [
      {
        "Source": "accountLevelManagement.productRules[1].product",
        "ReasonCode": "R0009119",
        "Description": "Product, if present, must be alphanumeric.",
        "Recoverable": false
      },
      {
        "Source": "accountLevelManagement.productRules[1].productRuleStatus",
        "ReasonCode": "R0009112",
        "Description": "Product Rule Status, if present, must be A or I.",
        "Recoverable": false
      },
      {
        "Source": "accountLevelManagement.productRules[1].productGraduationProductCode",
        "ReasonCode": "R0000021",
        "Description": "Product Graduation Product Code, when present, must be alphanumeric",
        "Recoverable": false
      },
      {
        "Source": "accountLevelManagement.productRules[1].acquiringInstitutionCode",
        "ReasonCode": "R0009074",
        "Description": "Acquiring Institution ID Code, if present, must not exceed 11 positions",
        "Recoverable": false
      },
      {
        "Source": "accountLevelManagement.productRules[1].cardAcceptorId",
        "ReasonCode": "R0009070",
        "Description": "Card Acceptor ID Code, if present, must not exceed 15 positions",
        "Recoverable": false
      },
      {
        "Source": "accountLevelManagement.productRules[1].merchantId",
        "ReasonCode": "R0009056",
        "Description": "Mastercard Assigned ID, if present, must not exceed 8 positions",
        "Recoverable": false
      },
      {
        "Source": "accountLevelManagement.productRules[1].merchantPostalCode",
        "ReasonCode": "R0009058",
        "Description": "POS Country Code, if present, length must equal to 3",
        "Recoverable": false
      },
      {
        "Source": "accountLevelManagement.productRules[1].submerchantId",
        "ReasonCode": "R0009072",
        "Description": "Sub Merchant ID, if present, must not exceed 15 positions",
        "Recoverable": false
      },
      {
        "Source": "accountLevelManagement.productRules[1].merchantType",
        "ReasonCode": "R0009060",
        "Description": "Merchant Type, if present, must not exceed 4 positions",
        "Recoverable": false
      },
      {
        "Source": "accountLevelManagement.productRules[1].cardholderTransactionTypeCode",
        "ReasonCode": "R0009062",
        "Description": "Cardholder Transaction Type Code, if present, must not exceed 2 positions",
        "Recoverable": false
      },
      {
        "Source": "accountLevelManagement.productRules[1].amountMinimum",
        "ReasonCode": "R0009064",
        "Description": "Minimum Transaction Amount, if present, must not exceed 12 positions",
        "Recoverable": false
      },
      {
        "Source": "accountLevelManagement.productRules[1].amountMaximum",
        "ReasonCode": "R0009066",
        "Description": "Maximum Transaction Amount, if present, must not exceed 12 positions",
        "Recoverable": false
      },
      {
        "Source": "accountLevelManagement.productRules[1].accountIdentifierCurrency",
        "ReasonCode": "R0009068",
        "Description": "Transaction Currency Code, if present, must not exceed 3 positions",
        "Recoverable": false
      }
    ]
  }
}
```

### 2. Updating Range --- multiple product-rule validation rejects (HTTP 400) {#2-updating-range--multiple-product-rule-validation-rejects-http-400}

Updating an account range with several invalid product rules attributes, returns HTTP 400 listing every reject.

**Endpoint:** `PUT`
* Sandbox
* Production

```Sandbox
https://sandbox.api.mastercard.com/asc/acs-api/account-ranges
```

```Production
https://api.mastercard.com/asc/acs-api/account-ranges
```

#### Account Catalog Services API Request {#account-catalog-services-api-request-1}

* `requestId` (Universal-Spec-Api-Request-Id): `<request_id>`
* authorization: `<reqKey>`

* JSON

```JSON
{
  "accountRangeStart": "5XXXXXXXXXXXXXXXXXX",
  "accountRangeEnd": "5XXXXXXXXXXXXXXXXXX",
  "accountLevelManagement": {
    "productRules": [
      {
        "product": "PRGRASD",
        "productRuleStatus": "$",
        "productGraduationProductCode": "MCWAWSE",
        "acquiringInstitutionIDCode": "453$$686981",
        "mastercardAssignedID": "79$99",
        "posCountryCode": "8$0",
        "cardAcceptorIDCode": "C7MQDN$$XAGV",
        "subMerchantID": "sC7MQ$$WSXAGV",
        "merchantType": "743$",
        "cardholderTransactionTypeCode": "0$",
        "amountTransactionLow": "1$$",
        "amountTransactionHigh": "1$$",
        "currencyCodeTransaction": "84$"
      }
    ]
  }
}
```

#### Account Catalog Services API Response {#account-catalog-services-api-response-1}

* status: HTTP 400 Bad Request
* `requestId` (Universal-Spec-Api-Request-Id): `<request_id>`

* JSON

```JSON
{
  "Errors": {
    "Error": [
      {
        "Source": "accountLevelManagement.productRules[1].product",
        "ReasonCode": "R0009120",
        "Description": "Product, if present, must not exceed 4 positions.",
        "Recoverable": false
      },
      {
        "Source": "accountLevelManagement.productRules[1].productRuleStatus",
        "ReasonCode": "R0009113",
        "Description": "Product Rule Status, if present, must be alpha.",
        "Recoverable": false
      },
      {
        "Source": "accountLevelManagement.productRules[1].productGraduationProductCode",
        "ReasonCode": "R0000022",
        "Description": "Product Graduation Product Code must not exceed 3 positions or all 3 positions must contain \"X\" to remove.",
        "Recoverable": false
      },
      {
        "Source": "accountLevelManagement.productRules[1].acquiringInstitutionCode",
        "ReasonCode": "R0009055",
        "Description": "Acquiring Institution ID Code must be numeric",
        "Recoverable": false
      },
      {
        "Source": "accountLevelManagement.productRules[1].merchantId",
        "ReasonCode": "R0009057",
        "Description": "Mastercard Assigned ID must be alphanumeric",
        "Recoverable": false
      },
      {
        "Source": "accountLevelManagement.productRules[1].merchantPostalCode",
        "ReasonCode": "R0009059",
        "Description": "POS Country Code must be numeric",
        "Recoverable": false
      },
      {
        "Source": "accountLevelManagement.productRules[1].merchantType",
        "ReasonCode": "R0009061",
        "Description": "Merchant Type must be numeric",
        "Recoverable": false
      },
      {
        "Source": "accountLevelManagement.productRules[1].cardholderTransactionTypeCode",
        "ReasonCode": "R0009063",
        "Description": "Cardholder Transaction Type Code must be numeric",
        "Recoverable": false
      },
      {
        "Source": "accountLevelManagement.productRules[1].amountMinimum",
        "ReasonCode": "R0009065",
        "Description": "Minimum Transaction Amount must be numeric",
        "Recoverable": false
      },
      {
        "Source": "accountLevelManagement.productRules[1].amountMaximum",
        "ReasonCode": "R0009067",
        "Description": "Maximum Transaction Amount must be numeric",
        "Recoverable": false
      },
      {
        "Source": "accountLevelManagement.productRules[1].accountIdentifierCurrency",
        "ReasonCode": "R0009069",
        "Description": "Transaction Currency Code must be numeric",
        "Recoverable": false
      },
      {
        "Source": "accountLevelManagement.productRules[1].productRuleID",
        "ReasonCode": "R0009130",
        "Description": "Product Rule Id must be present.",
        "Recoverable": false
      }
    ]
  }
}
```

### 3. Deleting Range --- missing Product Rule ID (HTTP 400) {#3-deleting-range--missing-product-rule-id-http-400}

A delete request that does not carry a Product Rule ID (empty `accountLevelManagement`) is rejected with HTTP 400 and ReasonCode R0009130.

**Endpoint:** `POST`
* Sandbox
* Production

```Sandbox
https://sandbox.api.mastercard.com/asc/acs-api/account-ranges/delete-registrations
```

```Production
https://api.mastercard.com/asc/acs-api/account-ranges/delete-registrations
```

#### Account Catalog Services API Request {#account-catalog-services-api-request-2}

* `requestId` (Universal-Spec-Api-Request-Id): `<request_id>`
* authorization: `<reqKey>`

* JSON

```JSON
{
  "accountRangeStart": "5XXXXXXXXXXXXXXXXXX",
  "accountRangeEnd": "5XXXXXXXXXXXXXXXXXX",
  "accountLevelManagement": {}
}
```

#### Account Catalog Services API Response {#account-catalog-services-api-response-2}

* status: HTTP 400 Bad Request
* `requestId` (Universal-Spec-Api-Request-Id): `<request_id>`

* JSON

```JSON
{
  "Errors": {
    "Error": [
      {
        "Source": "productRules",
        "ReasonCode": "R0009130",
        "Description": "Product Rule Id must be present.",
        "Recoverable": false
      }
    ]
  }
}
```

### 4. Deleting Range --- API timeout (HTTP 408) {#4-deleting-range--api-timeout-http-408}

This scenario occurs when the downstream domain is unable to respond in time. The gateway returns HTTP 408 with ReasonCode R0009500. It is transient and the request can be retried.

**Endpoint:** `POST`
* Sandbox
* Production

```Sandbox
https://sandbox.api.mastercard.com/asc/acs-api/account-ranges/delete-registrations
```

```Production
https://api.mastercard.com/asc/acs-api/account-ranges/delete-registrations
```

#### Account Catalog Services API Request {#account-catalog-services-api-request-3}

* `requestId` (Universal-Spec-Api-Request-Id): `<request_id>`
* authorization: `<reqKey>`

* JSON

```JSON
{
  "accountRangeStart": "5XXXXXXXXXXXXXXXXXX",
  "accountRangeEnd": "5XXXXXXXXXXXXXXXXXX",
  "accountLevelManagement": {
    "productRuleId": "90ae001c-3945-4623-835d-582ad06e6575"
  }
}
```

#### Account Catalog Services API Response {#account-catalog-services-api-response-3}

* status: HTTP 408 Request Time-out
* `requestId` (Universal-Spec-Api-Request-Id): `<request_id>`

* JSON

```JSON
{
  "Errors": {
    "Error": [
      {
        "Source": "Account-Catalog-Services",
        "ReasonCode": "R0009500",
        "Description": "Unable to process the request because a response from the domain was not received.",
        "Recoverable": false
      }
    ]
  }
}
```

