put
https://{host}/v2/coupon/series/
Recent Requests
Log in to see full request history
| Time | Status | User Agent | |
|---|---|---|---|
Retrieving recent requests… | |||
Loading…
Example request
curl --location --request PUT 'https://eu.api.capillarytech.com/v2/coupon/series/923222?format=json' \
--header 'Content-Type: application/json' \
--header 'Authorization: Basic Z2VvcmdlLmRvY2RjVhMDGY1NTY5NDk1YmNkNzUxYmJiY2U=' \
--header 'Cookie: _cfuvid=mJsi4aQ3oxBBuYDlQxQdv_wDqIZBYmAonrNmnns-1765961752938-0.0.1.1-604800000' \
--data '{
"CouponSeriesV2": {
"id": 923222,
"seriesCode": "923222",
"orgId": 999,
"description": "promogold22",
"discountCode": "gold1234",
"validTillDate": "2026-06-12T00:00:00+05:30",
"anyUser": false,
"smsTemplate": "Hi {{first_name}} {{last_name}} your voucher code //////{{voucher}}is valid",
"discountValue": 1000,
"clientHandlingType": "DISC_CODE",
"expiryStrategyType": "SERIES_EXPIRY",
"discountType": "ABS",
"couponPrefix": "gold",
"isPrefixEnabled": false,
"orgPrefixOverride": false,
"couponSuffix": "NEWEND",
"isSuffixEnabled": true,
"orgSuffixOverride": false
}
}'Body Parameters
| Parameter | Data Type | Required | Description |
|---|---|---|---|
| CouponSeriesV2 | Object | Optional | Object containing the coupon series details. |
| customPropertyMap | Object | Optional | An object containing a collection of keys that represents unique property names and each value represents the corresponding property's value. |
| customPropertyMap.key1 | String | Optional | Custom field of the coupon series, providing additional information about the coupon. |
| customPropertyMap.key2 | String | Optional | Custom field of the coupon series, providing additional information about the coupon. |
| standard_terms_and_conditions | String | Optional | Custom field in the coupon series that provides information about the terms and conditions. |
| description | String | Yes | Brief description of the coupon series. |
| discountCode | String | Yes | The code given for the coupon as the POS identifier. |
| discountType | Enum | Yes | Specifies the type of discount provided by the coupon. Supported values: ABS (a fixed amount is discounted), PERC (a percentage of the total amount is discounted). |
| discountValue | Integer | Yes | Discount value of the coupon. |
| anyUser | Boolean | Yes | Indicates if any user can use the offer. |
| validTillDate | String | Optional | Validity of the card series in UTC timestamp. Format: YYYY-MM-DDTHH:MM:SS+/-(time-zone). |
| validTillDateTime | String | Optional | Specifies the exact expiry date and time of a coupon in ISO 8601 format (e.g., "2026-06-11T23:59:59Z"), indicating the precise moment until which the coupon can be redeemed. |
| expiryStrategyValue | Integer | Optional | Specifies the duration a coupon remains valid based on the expiryStrategyType. For expiryStrategyType: "SERIES_EXPIRY", expiryStrategyValue is always 1, which defines the coupon expires based on the rules defined for its series. For expiryStrategyType: "DAYS", and expiryStrategyValue: "5", specifies that coupon will be valid till 5 days of issuance. For expiryStrategyType: "MONTHS_END", and expiryStrategyValue: "10" specifies that the coupon will be valid for 10 months of issuance. |
| maxCreate | Integer | Optional | Maximum number of coupons that can be created. Constraint: The value must always be greater than the number of coupons already issued from the coupon series. |
| maxRedeem | Integer | Optional | Maximum number of coupons that can be redeemed. |
| redemptionPerCouponMaxLimit | Integer | Conditional | Specifies the maximum number of times a particular coupon code can be redeemed across all users. Note: • Applicable only when the anyUser parameter is set to true. • The value must be greater than 0. • To create a coupon series without a redemption limit, set the value as null or -1. • This parameter applies only to autogenerated coupon codes (DISC_CODE) and uploaded coupon codes (DISC_CODE_PIN). • Not applicable for GENERIC coupon codes or externally managed coupon series (EXTERNALLY_MANAGED = true). Refer to the Create Offer section to know more about coupon code types. |
| sameUserMultipleRedeem | Boolean | Optional | Indicates if the same user can redeem multiple times. |
| isReferralExistingUsersAllowed | Boolean | Optional | Indicates if the referral is allowed for existing users. |
| isMultipleUseAllowed | Boolean | Optional | Indicates if multiple uses of the offer are allowed. |
| isValidWithDiscountedItem | Boolean | Optional | Indicates if the offer is valid with discounted items. |
| smsTemplate | String | Yes | Template for the SMS that is sent to users. |
| isSMSDisabled | Boolean | Optional | Indicates if SMS is disabled. |
| info | String | Optional | Additional information about the coupon. |
| isMultipleVouchersPerUserAllowed | Boolean | Optional | Indicates if multiple vouchers per user are allowed. |
| doNotResendExistingVoucher | Boolean | Optional | Indicates not to resend existing vouchers. |
| mutualExclusiveSeriesIds | String | Optional | Allows you to specify a list of offer IDs that are mutually exclusive to the current offer. If a customer already has a coupon from any of the offer IDs in this list, they will not be eligible to receive a coupon from the current series. |
| maxVouchersPerUser | Integer | Optional | Maximum number of vouchers allowed per user. |
| minDaysBetweenVouchers | Integer | Optional | Minimum days between issuance of vouchers. |
| redemptionRange | String | Optional | Defines the specific days, weekdays, and hours during which the coupon can be redeemed. |
| minBillAmount | Integer | Optional | Minimum bill amount required to use the coupon. |
| maxBillAmount | Integer | Optional | Maximum bill amount allowed for coupon redemption. |
| maxRedemptionsInSeriesPerUser | Integer | Optional | Maximum redemptions in the series per user. |
| minDaysBetweenRedemption | Integer | Optional | Minimum days required between redemptions. |
| redemptionValidFrom | String | Optional | Date from which redemption is valid. |
| productInfo | Array | Optional | Information about the products on which the coupon can be applied. |
| .productType | Enum | Optional | Type of the product. Supported values: SKU, CATEGORY, BRAND, ATTRIBUTE. |
| .productIds | Array | Optional | IDs of the product. Note: When .productType is CATEGORY, a maximum of 1,000 category IDs are supported. Requests with more than 1,000 category IDs return a 400 Bad Request error. |
| redemptionOrgEntityDetails | Array | Optional | Details about the organization entities where the coupon can be redeemed. |
| redemptionOrgEntityType | Enum | Optional | Type of redemption organization entity. Supported values: CONCEPT, TILL, ZONE, STORE. |
| orgEntityId | Integer | Optional | ID of the organization entity. |
| targetUserDetails | Object | Optional | Details of the criteria that the customer must meet to redeem the coupon. |
| validMaxUserTransactionLimit | Integer | Optional | Number of transactions required by the customer to redeem the coupon. |
| validUserRegistrationStartTime | Integer | Optional | Customer can redeem the coupon only if their registration date is after the specified date. |
| validUserRegistrationEndTime | Integer | Optional | Customer can redeem the coupon only if their registration date is within the specified date. |
| redemptionValidAfterDays | Integer | Optional | Number of days after which the redemption becomes valid. |
| alphaNumeric | Boolean | Optional | Indicates if the code is alphanumeric. |
| randomCodeLength | Integer | Optional | Length of the random code for the coupon. |
| resendMessageEnabled | Boolean | Optional | Indicates if the resend message feature is enabled. |
| clientHandlingType | String | Yes | The method using which the coupons should be generated. Supported values: DISC_CODE : Generate coupon codes automatically.GENERIC: Provide a common coupon code. DISC_CODE_PIN : Upload existing coupon codes. |
| seriesCode | String | Yes | Code for the coupon series. |
| genericCode | String | Conditional | Generic code of the coupon. Note: Only required if the clientHandlingType is set to GENERIC. |
| expiryStrategyType | Enum | Yes | Defines the method for coupon expiry. Supported values: SERIES_EXPIRY : Defines the coupon expires based on the rules defined for its series), MONTHS_END : Defines the number of months from issuance until the coupon expires), DAYS : Defines the number of days from issuance until the coupon expires. |
| couponPrefix | String | Conditional | Specifies the custom value to be added before the coupon code. e.g., SUMMER-XYZ123.This prefix value is added to the coupon code only if:
|
| couponSuffix | String | Conditional | Specifies the custom value to be added after the coupon code. e.g., XYZ123-SUMMER.This suffix value is added to the coupon code only if:
|
| isPrefixEnabled | Boolean | Optional | Indicates if the custom prefix is enabled for the coupon code.Supported values:
false, no prefix value will be added to the coupon code, even if orgPrefixOverride is set to true. |
| isSuffixEnabled | Boolean | Optional | Indicates if the custom suffix is enabled for the coupon code.Supported values:
|
| orgPrefixOverride | Boolean | Optional | Specifies whether to add the custom prefix or the org-level default prefix for the coupon code.Supported values:
|
| orgSuffixOverride | Boolean | Optional | Specifies whether to add the custom suffix or the org-level default suffix for the coupon code.Supported values:
|
Example response
{
"id": 927443,
"orgId": 100737,
"description": "Test 1: P and S Enabled",
"discountCode": "gold1234",
"validTillDate": "2026-06-11T00:00:00Z",
"validTillDateTime": "2026-06-11T23:59:59Z",
"validDaysFromCreation": 30,
"expiryStrategyValue": -1,
"maxCreate": -1,
"maxRedeem": -1,
"isTransferrable": false,
"anyUser": false,
"sameUserMultipleRedeem": false,
"isReferralExistingUsersAllowed": false,
"isMultipleUseAllowed": false,
"isValidationRequired": false,
"isValidWithDiscountedItem": false,
"createdBy": 75197941,
"numIssued": 0,
"numRedeemed": 0,
"createdOn": "2025-12-17T11:05:57Z",
"lastUsed": "2025-12-17T11:06:15Z",
"seriesCode": "927443",
"smsTemplate": "Hi {{first_name}} {{last_name}} your voucher code //////{{voucher}}is valid",
"isSMSDisabled": false,
"info": "Test 1: P and S Enabled",
"isMultipleVouchersPerUserAllowed": false,
"doNotResendExistingVoucher": false,
"mutualExclusiveSeriesIds": "[-1]",
"storeIdsJson": "[-1]",
"isDvsEnabled": false,
"dvsExpiryDate": "2025-12-17T00:00:00Z",
"priority": 0,
"shortSMSTemplate": "Hello {{cust_name}}, your voucher code is {{voucher_code}}",
"maxVouchersPerUser": -1,
"minDaysBetweenVouchers": -1,
"maxReferralsPerReferee": -1,
"discountUpto": 0,
"discountValue": 1000,
"dvsItems": "items",
"redemptionRange": "{\"dom\" : [-1], \"dow\": [-1], \"hours\": [-1]}",
"minBillAmount": -1,
"maxBillAmount": -1,
"redeemAtStore": "[-1]",
"campaignId": -1,
"tag": "Test 1: P and S Enabled",
"maxRedemptionsInSeriesPerUser": -1,
"minDaysBetweenRedemption": -1,
"redemptionValidFrom": "2025-12-17T00:00:00Z",
"sourceOrgId": -1,
"issueToLoyalty": false,
"redeemStoreType": "redeemable_stores",
"offlineRedeemType": false,
"isOldFlowEnabled": false,
"isPreRedeemEventRequired": false,
"termsAndConditions": "T&C",
"signalRedemptionEvent": false,
"syncToClient": false,
"showPinCode": false,
"numUploadedNonIssued": 0,
"numUploadedTotal": 0,
"redemptionValidAfterDays": 0,
"ownedBy": "NONE",
"ownerId": -1,
"ownerValidity": 0,
"alphaNumeric": false,
"shortCodeLength": 0,
"randomCodeLength": 5,
"fixedExpiryDate": 1781136000000,
"numTotal": -1,
"latestIssualTime": 0,
"latestRedemptionTime": 0,
"resendMessageEnabled": true,
"redemptionPerCouponMaxLimit": -1,
"couponPrefix": "P-SUC",
"couponSuffix": "S-SUC",
"isPrefixEnabled": true,
"isSuffixEnabled": true,
"orgPrefixOverride": false,
"orgSuffixOverride": false,
"seriesType": "UNDEFINED",
"clientHandlingType": "DISC_CODE",
"expiryStrategyType": "SERIES_EXPIRY",
"discountOn": "BILL",
"discountType": "ABS",
"externalIssual": false,
"updateProductData": false,
"warnings": []
}Response parameter
| Parameter | Datatype | Description |
|---|---|---|
| customPropertyMap | Object | An object containing a collection of keys that represents unique property names and each value represents the corresponding property's value. |
| standard_terms_and_conditions | string | Custom field in the coupon series that provides information about the terms and conditions. |
| id | integer | Unique identifier of the coupon series |
| orgId | integer | Organization ID associated with the coupon series |
| description | string | Description of the coupon series |
| discountCode | string | The code given for the coupon as the POS identifier that was created during the creation of coupon series. |
| validTillDate | string | Validity of the card series in UTC timestamp. Format: YYYY-MM-DDTHH:MM:SS+/-(time-zone). |
| validDaysFromCreation | integer | Number of days the coupon is valid from creation |
| expiryStrategyValue | integer | Specifies the duration a coupon remains valid based on the expiryStrategyType. For expiryStrategyType: "SERIES_EXPIRY", expiryStrategyValue is always 1, which defines the coupon expires based on the rules defined for its series. For expiryStrategyType: "DAYS", and expiryStrategyValue: "5", specifies that coupon will be valid till 5 days of issuance For expiryStrategyType: "MONTHS_END", and expiryStrategyValue: "10" specifies that the coupon will be valid for 10 months of issuance. |
| maxCreate | integer | Maximum number of coupons that can be created |
| maxRedeem | integer | Maximum number of coupons that can be redeemed. |
| isTransferrable | boolean | Indicates if the coupon is transferable |
| anyUser | boolean | Indicates if any user can use the offer. |
| redemptionPerCouponMaxLimit | integer | Specifies the maximum number of times a particular coupon code can be redeemed across all users. |
| couponPrefix | String | Indicates the custom string added before the coupon code. |
| couponSuffix | String | Indicates the custom string added after the coupon code. |
| isPrefixEnabled | Boolean | Indicates if the prefix configuration is currently enabled. |
| isSuffixEnabled | Boolean | Indicates if the suffix configuration is currently enabled. |
| orgPrefixOverride | Boolean | Indicates if the organization-level default prefix overrides the custom prefix. |
| orgSuffixOverride | Boolean | Indicates if the organization-level default suffix overrides the custom suffix. |
| sameUserMultipleRedeem | boolean | Indicates if the same user can redeem multiple times. |
| isReferralExistingUsersAllowed | boolean | Indicates if the referral is allowed for existing users. |
| isMultipleUseAllowed | boolean | Indicates if multiple uses of the offer are allowed. |
| isValidationRequired | boolean | Indicates if validation is required for the coupon |
| isValidWithDiscountedItem | boolean | Indicates if the offer is valid with discounted items. |
| createdBy | integer | ID of the user who created the coupon series |
| numIssued | integer | Number of coupons issued from this series |
| numRedeemed | integer | Number of coupons redeemed from this series |
| createdOn | string | Date and time when the coupon series was created. |
| lastUsed | string | Date and time when the coupon was last used |
| seriesCode | string | Code for the coupon series |
| smsTemplate | string | Template for the SMS that is sent to users. |
| isSMSDisabled | boolean | Indicates if SMS is disabled. |
| info | string | Additional information about the coupon |
| isMultipleVouchersPerUserAllowed | boolean | Indicates if multiple vouchers per user are allowed |
| doNotResendExistingVoucher | boolean | Indicates not to resend existing vouchers. |
| mutualExclusiveSeriesIds | string | Allows you to specify a list of offer IDs that are mutually exclusive to the current offer. If a customer already has a coupon from any of the offer IDs in this list, they will not be eligible to receive a coupon from the current series. |
| storeIdsJson | string | IDs of stores where the coupon is valid. |
| isDvsEnabled | boolean | Indicates if DVS (Dynamic Voucher System) is enabled |
| dvsExpiryDate | string | Expiry date for DVS. |
| priority | integer | Priority level of the offer. |
| shortSMSTemplate | string | Short template for the SMS to be sent to users |
| maxVouchersPerUser | integer | Maximum number of vouchers allowed per user |
| minDaysBetweenVouchers | integer | Minimum days between issuance of vouchers. |
| maxReferralsPerReferee | integer | Maximum number of referrals allowed per referee |
| discountUpto | integer | Maximum discount value |
| discountValue | integer | Discount value of the coupon |
| dvsItems | string | Items for DVS (Dynamic Voucher System). |
| redemptionRange | string | Defines the specific days, weekdays, and hours during which the coupon can be redeemed. |
| minBillAmount | integer | Minimum bill amount required to use the coupon. |
| maxBillAmount | integer | Maximum bill amount allowed for coupon redemption |
| redeemAtStore | string | Stores IDs where redemption is allowed. |
| campaignId | integer | Identifier of the campaign associated with the coupon |
| tag | string | Tag or label for the coupon |
| maxRedemptionsInSeriesPerUser | integer | Maximum redemptions in the series per user. |
| minDaysBetweenRedemption | integer | Minimum days required between redemptions. |
| redemptionValidFrom | string | Date from which redemption is valid. |
| sourceOrgId | integer | Identifier of the source organization |
| issueToLoyalty | boolean | Indicates if the coupon is issued to loyalty members |
| redeemStoreType | string | Type of store where the coupon can be redeemed. Supported values : redeemable_stores. |
| offlineRedeemType | boolean | Indicates if offline redemption is enabled |
| isOldFlowEnabled | boolean | Indicates if the old redemption flow is enabled |
| isPreRedeemEventRequired | boolean | Indicates if a pre-redeem event is required |
| termsAndConditions | string | Terms and conditions for the offer. |
| signalRedemptionEvent | boolean | Indicates if a redemption event signal is required |
| syncToClient | boolean | Indicates if the coupon data should be synchronized to the client |
| showPinCode | boolean | Indicates if a PIN code should be displayed |
| validMaxUserTransactionLimit | integer | Number of transactions required by the customer to redeem the coupon. |
| validUserRegistrationStartTime | integer | Customer can redeem the coupon only if their registration date is after the specified date. |
| validUserRegistrationEndTime | integer | Customer can redeem the coupon only if their registration date is within the specified date. |
| numUploadedNonIssued | integer | Number of non-issued coupons uploaded |
| numUploadedTotal | integer | Total number of coupons uploaded |
| redemptionValidAfterDays | integer | Number of days after which the redemption becomes valid. |
| ownedBy | string | Ownership details for the offer. |
| ownerId | integer | Identifier of the owner of the coupon |
| ownerValidity | integer | Validity period of the owner's rights to the coupon |
| alphaNumeric | boolean | Indicates if the code is alphanumeric. |
| shortCodeLength | integer | Length of the short code generated for the coupon |
| randomCodeLength | integer | Length of the random code for the coupon. |
| fixedExpiryDate | integer | Fixed expiry date of the coupon (in epoch milliseconds) |
| numTotal | integer | Total number of coupons issued |
| latestIssualTime | integer | Latest issuance time of the coupon (in epoch milliseconds) |
| latestRedemptionTime | integer | Latest redemption time of the coupon (in epoch milliseconds) |
| resendMessageEnabled | boolean | Indicates if the resend message feature is enabled. |
| seriesType | string | Type of coupon series. |
| clientHandlingType | string | Method using which the coupons should be generated. Supported values: DISC_CODE (generate coupon codes automatically), GENERIC (provide a common coupon code), DISC_CODE_PIN (Upload existing coupon codes). |
| expiryStrategyType | string | Defines the method for coupon expiry. Supported values: SERIES_EXPIRY(defines the coupon expires based on the rules defined for its series), MONTHS_END(defines the number of months from issuance until the coupon expires.), DAYS(defines the number of days from issuance until the coupon expires). |
| discountOn | string | Type of discount. |
| discountType | string | Specifies the type of discount provided by the coupon. Supported values: ABS(a fixed amount is discounted), PERC(a percentage of the total amount is discounted). |
| updateProductData | boolean | Indicating if the product data can be updated. |
| externalIssual | boolean | Indicating if external issuance is allowed. |
| warnings | array | List of warnings related to the coupon. |
Error code
| Error code | Description |
|---|---|
| 400 | Bad Request - Invalid parameters. Verify that the series ID is a valid long integer and orgId is provided. |
| 401 | Unauthorized - Authentication failed. Ensure valid authentication credentials (API key/token) are provided in the request headers. |
| 403 | Forbidden - Access denied. Verify that the authenticated user has permission to access this coupon series. |
| 404 | Not Found - Coupon series not found. Confirm that the series ID exists and belongs to the specified organization. Check the series ID in Campaign Manager. |
| 500 | Internal Server Error. Retry the request after a few moments. If the issue persists, contact Capillary Support. |
| 501 | Invalid Organization ID. Provide a valid organization ID that exists in the system. |
| 502 | No Coupon Series Available. The specified coupon series does not exist for this organization. Verify the series ID. |
| 707 | Coupon series id is invalid. The provided series ID format is incorrect or the series does not exist. Verify the ID in Campaign Manager and ensure it's a valid numeric value. |
| 730 | Unknown error. Check request parameters and retry. If error persists, contact Capillary Support with request details. |
| 786 | Unable to process coupon. Please try again later. Service temporarily unavailable. Retry the request after a few seconds. |
| 788 | Configuration is invalid. Please report to Capillary Support. Contact Capillary Support to verify organization configuration settings. |
| 795 | Configuration is invalid. Please report to Capillary Support. Contact Capillary Support to verify organization configuration settings. |
| 799 | Configuration is invalid. Please report to Capillary Support. Contact Capillary Support to verify organization configuration settings. |
{
"id": 751412,
"orgId": 100737,
"description": "40% off for unknown reason",
"discountCode": "unknown40",
"validTillDate": "2025-04-25T00:00:00Z",
"validDaysFromCreation": 30,
"expiryStrategyValue": 1,
"maxCreate": 1316432742,
"maxRedeem": 1316863212,
"isTransferrable": false,
"anyUser": true,
"sameUserMultipleRedeem": true,
"isReferralExistingUsersAllowed": false,
"isMultipleUseAllowed": false,
"isValidationRequired": false,
"isValidWithDiscountedItem": true,
"createdBy": 75155297,
"numIssued": 0,
"numRedeemed": 0,
"createdOn": "2025-04-17T05:36:41Z",
"lastUsed": "2025-05-12T08:27:45Z",
"seriesCode": "string",
"smsTemplate": "string",
"isSMSDisabled": false,
"info": "30% off for unknown reason",
"isMultipleVouchersPerUserAllowed": true,
"doNotResendExistingVoucher": true,
"mutualExclusiveSeriesIds": "[-1]",
"storeIdsJson": "[-1]",
"isDvsEnabled": false,
"dvsExpiryDate": "2025-05-12T00:00:00Z",
"priority": 0,
"shortSMSTemplate": "Hello {{cust_name}}, your voucher code is {{voucher_code}}",
"maxVouchersPerUser": -123,
"minDaysBetweenVouchers": -123,
"maxReferralsPerReferee": -1,
"discountUpto": 0,
"discountValue": 150000004759552,
"dvsItems": "items",
"redemptionRange": "{\"dom\" : [-1], \"dow\": [-1], \"hours\": [-1]}",
"minBillAmount": 0,
"maxBillAmount": 40000,
"redeemAtStore": "[-1]",
"campaignId": 0,
"tag": "40% off for unknown reason",
"maxRedemptionsInSeriesPerUser": 4,
"minDaysBetweenRedemption": 0,
"redemptionValidFrom": "2025-04-23T00:00:00Z",
"sourceOrgId": -1,
"issueToLoyalty": false,
"redeemStoreType": "redeemable_stores",
"offlineRedeemType": false,
"isOldFlowEnabled": false,
"isPreRedeemEventRequired": false,
"termsAndConditions": "T&C",
"signalRedemptionEvent": false,
"syncToClient": false,
"showPinCode": false,
"targetUserDetails": {
"validMaxUserTransactionLimit": 1,
"validUserRegistrationStartTime": 0,
"validUserRegistrationEndTime": 10000
},
"numUploadedNonIssued": 0,
"numUploadedTotal": 0,
"redemptionValidAfterDays": 0,
"ownedBy": "NONE",
"ownerId": -1,
"ownerValidity": 0,
"alphaNumeric": true,
"shortCodeLength": 0,
"randomCodeLength": 10,
"fixedExpiryDate": 1745539200000,
"numTotal": 0,
"latestIssualTime": 0,
"latestRedemptionTime": 0,
"genericCode": "string",
"resendMessageEnabled": true,
"redemptionPerCouponMaxLimit": -1,
"seriesType": "UNDEFINED",
"clientHandlingType": "DISC_CODE",
"expiryStrategyType": "SERIES_EXPIRY",
"discountOn": "BILL",
"discountType": "ABS",
"externalIssual": false,
"updateProductData": false,
"warnings": []
}