Create a product offering

POST /customers/{customer_id}/product_offerings

Offer a product to a customer that is visible only to them.

Path parameters

Body Required

Responses

  • 200 object

    Product

    • product_id string Required

      A unique ID to identify the product with for future requests. If not provided at the time of product creation, Canopy will generate one.

    • created_at string(date-time)

      The Date-Time that this product was created on the server.

    • updated_at string(date-time)

      The Date-Time that this product was updated on the server.

    • effective_at string(date-time)

      The Date-Time as of which this product is effective on the server.

    • is_active boolean

      Indicates whether the product is active or inactive

    • product_overview object Required

      A series of static fields about the product.

      • The set of policies governing payment due information for the product.

        • After this number of consecutive late events, the account status shifts to suspended with a status subtype of delinquent

          Default value is 1.

        • After this number of consecutive late events, the account status shifts to suspended with a status subtype of charged_off

          Default value is 2.

        • If false, the default, payments mid-cycle (after the previous cycle's due date, but before the active cycle's statement date) on an installment product will not reduce the minimum payment as assessed on the accounts' upcoming statements, i.e. the full minimum payment for the cycle is still due after a statement.
          If true, not the default, payments mid-cycle on an installment product will reduce the minimum payment as assessed on the accounts' upcoming statements, i.e. making the full upcoming payment mid-cycle will output a minimum payment of $0 on the upcoming statement.
          Note that this only affects behavior of installment items, as payments towards revolving balances will always reduce the minimum payment due.

          Default value is false.

      • The set of policies governing payment pouring information for the product.

      • The set of policies governing fees for the product.

        • Amount of time between when a payment is due and when a late fee is assessed if no payments have been made.

          Default value is 5 days.

      • The set of policies governing the billing cycle for the product.

        • cycle_interval string Required

          The length of the billing cycle. after which a statement is generated, and a due date assigned. IE '1 month' '3 months' or '7 days' (most common is monthly)

        • The amount of time before statement cut that the payment should be due for the billing cycle. If positive, it will count days from the start of the cycle. Note, this field has a signage convention: if negative, it will count days back from the end of the cycle. IE '25 days' indicates that payments are due 25 days after the statement is cut. -5 days indicates that payments will be due five days prior to the cut of the next cycle. Cannot exceed the duration of the billing cycle.

          Default value is -5 days.

        • Defaults to value of cycle_interval. If applicable, the amount of time you would like between origination and the first statement cut. IE '10 days'. If you would like the first billing cycle to be the same length as all other billing cycles, either do not include this field in the request, or set its value to the same as cycle_interval

        • Defaults to EST Midnight. Time of the close of business. Note* this value will be converted into the product_time_zone This is used for statement cuts and partner-level and issuing bank-level reconciliation

          Default value is 23:59:59-05:00.

        • Timezone denoted as an Olson-style timezone defining the timezone for the product. All times in any response data for accounts using this product will be denominated in this timezone. Shifts due to daylight savings will be accounted for where relevant, and all output timestamps will be denoted as UTC offsets normalized based on this value. Defaults to America/New_York if not provided.

          Default value is America/New_York.

      • The Interest Policy Object

        • Being deprecated under our backwards compatibility policy in favor of close_of_business time and timezone variables. Defaults to statement cut time Interest for this policy is calculated at this time every X interval.

          Default value is 01:00:00-05:00.

        • Speaks to how interest is calculated for accounts under this product.
          monthly_ending_bal_360: interest amount = [principal] * (r / (360 / 30)) :: calculated once at the end of each one month cycle
          cycle_end_12 : DEPRECATED. Use monthly_ending_bal_360 instead.
          monthly_ending_bal_365: interest amount = [principal] * (r / (365 / 30)) :: calculated once at the end of each one month cycle
          daily_ending_bal_365: interest amount = [principal] * (r / 365) :: calculated at the end of each day
          daily_end_365: DEPRECATED. Use daily_ending_bal_365 instead.
          daily_ending_bal_360: interest amount = [principal] * (r / 360) :: interest accrues at the end of each day
          daily_end_360: DEPRECATED. Use daily_ending_bal_360 instead.
          monthly_avg_bal_365: interest amount = [avg_daily_principal] * (r / 12) :: interest accrues once at the end of each one month cycle.
          avg_daily_12: DEPRECATED. Use monthly_avg_bal_365 instead.
          cycle_start_360 : interest amount = [principal] * (r / (360 / 30)) :: calculated once at the beginning of each one month cycle. Applicable to installment balances.
          cycle_start_365 : interest amount = [principal] * (r / (365 / 30)) :: calculated once at the beginning of each one month cycle. Applicable to installment balances.

          Values are cycle_end_12, avg_daily_12, daily_end_365, daily_end_360, monthly_avg_bal_365, monthly_ending_bal_360, monthly_ending_bal_365, daily_ending_bal_360, daily_ending_bal_365, cycle_start_360, or cycle_start_365. Default value is monthly_ending_bal_360.

        • The policy that defines how grace periods are mathematically applied to borrower accounts based on borrower repayment behavior.

          Values are NONE or PREVIOUS_STATEMENT_TOTAL_BALANCE_WITH_PENDING_PAYMENTS. Default value is NONE.

        • When should the interest of an installment be accrued.
          BEGINNING: At the beginning of a cycle
          END: At the end of a cycle

          Values are BEGINNING or END. Default value is END.

        • The policy which defines which revolving balance under an account will accrue interest during the interest accrual calculation. PRINCIPAL accrues interest on principal balances of revolving transactions (i.e. non-installment charges), TOTAL_ACCOUNT_BALANCE accrues interest on the account's total revolving balance (inclusive of interest, fees).

          Values are PRINCIPAL or TOTAL_ACCOUNT_BALANCE. Default value is PRINCIPAL.

        • The policy which defines which principal balance to accrue interest on during the installment interest accrual calculation. ACTUAL accrues interest on the actual outstanding principal balance of loans (e.g. after a missed payment, interest would be higher than originally anticipated in the amortization schedule), EXPECTED accrues interest on the loan's expected balance (e.g. interest would be accrued at the same rate as quoted in the original amortization schedule). ORIGINAL accrues interest based on the original principal balance of the loan (i.e. a fixed amount of interest each cycle). AVERAGE accrues interest using the calculated average daily ending balance of the loan during the given cycle.

          Values are EXPECTED, ACTUAL, ORIGINAL, or AVERAGE. Default value is EXPECTED.

        • Applies only to loans. If true, loan interest will only accrue for the expected duration of the loan. Otherwise, interest will accrue as long as there is an outstanding balance. This serves as the default, including loans rolled over at the end of the promotional period, but can be overridden on a per-loan basis in the loan creation payload.

          Default value is false.

        • The default maximum principal credit (in cents) available for a customer account. This default limit can be overridden on a per-account basis if a credit_limit is selected at the time of assigning an account to a product. Credit limits for an account can also be updated post-account creation.

          Default value is 0.

        • The default maximum principal credit (in cents) available for a customer account. This default limit can be overridden on a per-account basis if a credit_limit is selected at the time of assigning an account to a product. Credit limits for an account can also be updated post-account creation.

          Default value is 0.

        • The default maximum principal credit (in cents) available for a customer account. This default limit can be overridden on a per-account basis if a credit_limit is selected at the time of assigning an account to a product. Credit limits for an account can also be updated post-account creation.

          Default value is 0.

    • promotional_policies object Required

      If applicable, a promotional configuration for the product.

      • promo_len integer

        The number of billing cycles from account origination during which accounts on this product are on a promotional period.

        Default value is 0.

      • Current due calculation method for the promotional period.

        Values are AM, PERCENT_INTEREST, PERCENT_PRINCIPAL, PERCENT_PRINCIPAL_INTEREST, INTEREST_AND_PERCENT_PRINCIPAL, or NONE. Default value is NONE.

      • If provided, the min_pay in the promo period will be set to this value whenever this value exceeds the calculated min_pay using promo_min_pay_type.
        Note: if the account's total balance is less than promo_min_pay_floor, only the total balance will be due.

      • If applicable, the number of billing cycles from account origination under which this product falls under a purchas window period.

        Default value is 0.

      • Defaults to 100. The percent of new interest in the cycle used to determine the minimum payment.

        Default value is 100.

      • Indicates whether interest accrued during the promotional period is deferred interest.

        Default value is false.

      • If set to true, the promo end date will be reset to end of current cycle + promo_len when the account draws its first charge during the promo period. If no charges occur during the promo period, the promo period will still end on the date set at account creation.

        Default value is false.

      • The rate that serves as the active interest rate for accounts during the promotional period.

        Default value is 0.

      • Optional lower bound for APR Range for the product (i.e. 2 = 2%).

        Default value is 0.

      • Optional upper bound for APR Range for the product (i.e. 5 = 5%).

        Default value is 0.

    • Summary of product information

    • admin object
      • If migration mode is on, Canopy will stop auto-generating statements for this account.

        Default value is false.

    • Metro2 credit reporting configs

POST /customers/{customer_id}/product_offerings
curl \
 -X POST https://<your_environment_name>-uat-api.canopyservicing.com/customers/cust_30189/product_offerings \
 -H "Authorization: Bearer $ACCESS_TOKEN" \
 -H "Content-Type: application/json" \
 -d '{"product_id":"e163fcb6-f8fd-46a2-9f29-36b2261e37ea","product_overrides":{"product_type":"EXTT_30","product_name":"EXTT_30","promo_len":3,"post_promo_len":4,"first_cycle_interval":"3 days","cycle_interval":"1 month","promo_default_interest_rate_percent":"3.451","post_promo_default_interest_rate_percent":"3.267"}}'
Request example
{
  "product_id": "e163fcb6-f8fd-46a2-9f29-36b2261e37ea",
  "product_overrides": {
    "product_type": "EXTT_30",
    "product_name": "EXTT_30",
    "promo_len": 3,
    "post_promo_len": 4,
    "first_cycle_interval": "3 days",
    "cycle_interval": "1 month",
    "promo_default_interest_rate_percent": "3.451",
    "post_promo_default_interest_rate_percent": "3.267"
  }
}
Response example (200)
{
  "product_id": "95fea111-d121-40f8-9e8e-a6c335e48a45",
  "created_at": "2019-03-20T09:12:28+00:00",
  "updated_at": "2020-01-20T09:12:28+00:00",
  "effective_at": "2016-11-27T13:19:56+00:00",
  "is_active": true,
  "product_overview": {
    "product_name": "Blue Cash Express",
    "product_type": "REVOLVING",
    "product_short_description": "12mm3apr.",
    "product_long_description": "Student credit card.",
    "product_color": "#0000FF",
    "external_fields": [
      {
        "key": "client_product_id",
        "value": "3e93a899-d267-4193-8509-6dba53c13b7b"
      }
    ]
  },
  "product_lifecycle_policies": {
    "payment_due_policies": {
      "delinquent_on_n_consecutive_late_fees": 2,
      "charge_off_on_n_consecutive_late_fees": 5,
      "pre_statement_payments_reduce_min_pay": false
    },
    "payment_pouring_policies": {
      "pending_pmt_affects_avail_credit": true
    },
    "fee_policies": {
      "late_fee_grace": "5 days"
    },
    "billing_cycle_policies": {
      "cycle_interval": "1 month",
      "cycle_due_interval": "-5 days",
      "first_cycle_interval": "25 days",
      "close_of_business_time": "17:00:00-05:00",
      "product_time_zone": "America/Chicago"
    },
    "interest_policies": {
      "interest_calc_time": "11:21:04-08:00",
      "interest_calc_method": "avg_daily_12",
      "interest_grace_method": "NONE",
      "installment_interest_accrual_moment": "BEGINNING",
      "revolving_interest_applicable_balance": "PRINCIPAL",
      "installment_interest_applicable_balance": "EXPECTED",
      "is_limited_to_loan_duration": true
    },
    "default_attributes": {
      "default_credit_limit_cents": 600000,
      "default_late_fee_cents": 50000,
      "default_payment_reversal_fee_cents": 10000
    }
  },
  "promotional_policies": {
    "promo_len": 6,
    "promo_min_pay_type": "PERCENT_PRINCIPAL",
    "promo_min_pay_floor_cents": 500,
    "promo_purchase_window_len": 5,
    "promo_min_pay_percent": 100,
    "promo_interest_deferred": true,
    "promo_reset_on_first_charge": true,
    "promo_default_interest_rate_percent": 3,
    "promo_apr_range_inclusive_lower": 2,
    "promo_apr_range_inclusive_upper": 5
  },
  "post_promotional_policies": {
    "post_promo_len": 48,
    "post_promo_am_len_range_inclusive_lower": 2,
    "post_promo_am_len_range_inclusive_upper": 5,
    "post_promo_min_pay_type": "AM",
    "post_promo_default_interest_rate_percent": 3,
    "post_promo_apr_range_inclusive_lower": 2,
    "post_promo_apr_range_inclusive_upper": 5
  },
  "product_summary": {
    "accounts_overview": {
      "account_count_total": 10005
    },
    "product_status": "ACTIVE"
  },
  "admin": {
    "migration_mode": true
  },
  "metro2_config": {
    "bloom_metadata": {
      "industry": "CREDIT_CARD_ISSUER",
      "portfolio_type": "REVOLVING",
      "account_type": "CREDIT_CARD",
      "interest_type": "VARIABLE",
      "terms_frequency": "MONTHLY"
    }
  }
}