Event Types

A comprehensive list of webhook event types in Canopy.

Event Types

Default Webhook Events

The following webhook events are enabled by default and are automatically sent once a webhook URL is registered.

account_create

Sent for every newly created account.

  • The data field contains the same response sent by performing a GET on /accounts/{account_id} under the object attribute
Example Payload
{
   "data":{
      "changed_at":"2022-01-04T09:12:30+00:00",
      "object":{
         "account_id":"31mNprzLd2bKl6koVna68ARM",
         "created_at":"2017-06-20T09:12:14+00:00",
         "updated_at":"2019-02-20T09:12:14+00:00",
         "effective_at":"2018-03-20T09:12:28+00:00",
         "account_overview":{
            "account_status":"SUSPENDED",
            "account_status_subtype":"BANKRUPTCY",
            "is_active_scra":"false"
         },
         "account_product":{
            "product_id":"prod_4p1sc",
            "product_overview":{
               "product_name":"Blue Cash Express",
               "product_color":"#0000FF",
               "product_short_description":"Consumer credit card",
               "product_long_description":"Student credit card.",
               "product_time_zone":"America/Chicago",
               "product_type":"REVOLVING"
            },
            "product_lifecycle":{
               "late_fee_impl_cents":2900,
               "default_product_late_fee_cents":2900,
               "payment_reversal_fee_impl_cents":2900,
               "default_product_payment_reversal_fee_cents":2900,
               "origination_fee_impl_cents":2000,
               "origination_fee_percent":12.34,
               "is_origination_fee_lesser_value":false,
               "is_origination_fee_amortized":false,
               "recurring_fees":[
                  {
                     "recurring_fee_interval":"1 month",
                     "recurring_fee_amount_cents":10000,
                     "initial_delay_offset":"12 days",
                     "is_fee_interval_floored":false,
                     "recurring_fee_label":"Quarterly Fee"
                  }
               ],
               "loan_end_date":"2013-01-13T05:25:13.813+00:00"
            },
            "promo_overview":{
               "promo_purchase_window_inclusive_start":"2013-01-13T05:25:13.813+00:00",
               "promo_purchase_window_exclusive_end":"2013-01-13T05:25:13.813+00:00",
               "promo_inclusive_start":"2013-01-13T05:25:13.813+00:00",
               "promo_exclusive_end":"2013-01-13T05:25:13.813+00:00",
               "promo_impl_interest_rate_percent":6.2,
               "default_product_promo_interest_rate":6.2,
               "promo_len":6,
               "default_product_promo_len":6
            },
            "post_promo_overview":{
               "post_promo_inclusive_start":"2013-01-13T05:25:13.813+00:00",
               "post_promo_exclusive_end":"2013-01-13T05:25:13.813+00:00",
               "post_promo_impl_interest_rate_percent":6.2,
               "default_product_post_promo_interest_rate":6.2,
               "post_promo_len":48,
               "default_product_post_promo_len":48
            },
            "product_duration_information":{
               "promo_len":6,
               "promo_purchase_window_len":5
            }
         },
         "external_fields":[
            {
               "key":"external_id",
               "value":"22445702-a389-431f-927d-07b8d0750787"
            }
         ],
         "min_pay_due_cents":{
            "statement_min_pay_cents":160000,
            "min_pay_cents":160000,
            "min_pay_due_at":"2019-10-18T23:59:59.999+00:00",
            "graced_due_date":"2019-10-19T23:59:59.999+00:00"
         },
         "additional_min_pay_details":{
            "min_pay_fees_cents":20000,
            "current_min_pay_cents":400000,
            "unpaid_min_pay_cents":400000
         },
         "additional_statement_min_pay_details":{
            "statement_min_pay_charges_principal_cents":100000,
            "statement_min_pay_interest_cents":30000,
            "statement_min_pay_am_interest_cents":200,
            "statement_min_pay_deferred_cents":10000,
            "statement_min_pay_am_deferred_interest_cents":200,
            "statement_min_pay_fees_cents":20000,
            "statement_payments_cents":20000,
            "previous_statement_min_pay_cents":400000,
            "statement_current_min_pay_cents":400000,
            "statement_unpaid_min_pay_cents":400000
         },
         "payment_processor_config":{
            "ach":{
               "payment_processor_name":"REPAY",
               "repay_config":{
                  "ach_token":"string",
                  "last_four":"string"
               },
               "dwolla_config":{
                  "ach_token":"string",
                  "last_four":"string"
               },
               "modern_treasury_config":{
                  "ach_token":"string",
                  "last_four":"string"
               },
               "canopy_nacha_config":{
                  "bank_routing_number":"999999992",
                  "bank_account_number":"987654321",
                  "bank_account_type":"CHECKING"
               },
               "stripe_config":{
                  "customer_id":"cus_4QE4bx4C5BVSrC",
                  "source_id":"string",
                  "external_fields":{
                     "additionalProp":{
                        
                     }
                  }
               },
               "galileo_config":{
                  "plaid_processor_token":"processor-production-35cd43b-adfc-d8aa-b331-c9ba0fdha881"
               }
            },
            "debit_card":{
               "payment_processor_name":"REPAY",
               "repay_config":{
                  "card_token":"string",
                  "last_four":"string"
               },
               "authorize_net_config":{
                  "customer_profile_id":"527262",
                  "customer_payment_profile_ids":[
                     [
                        "86"
                     ]
                  ]
               }
            },
            "credit_card":{
               "payment_processor_name":"CHECKOUT",
               "checkout_config":{
                  "source_id":"cus_6artgoevd77u7ojah2wled32s",
                  "card_token":"string",
                  "last_four":"string",
                  "expires_on":"string"
               }
            },
            "autopay_enabled":true,
            "autopay_configs":{
               "autopay_method":"TOTAL_BALANCE",
               "autopay_fixed_amount_cents":2500
            },
            "default_payment_processor_method":"ACH"
         },
         "disbursements_config":{
            "disbursement_source_payout_entity_id":1009,
            "disbursement_split_percentages":{
               "principal":[
                  {
                     "payout_entity_id":1009,
                     "split_percent":25
                  }
               ]
            }
         },
         "payouts_config":{
            "payout_split_percentages":{
               "principal":[
                  {
                     "payout_entity_id":1009,
                     "split_percent":25
                  }
               ],
               "interest":[
                  {
                     "payout_entity_id":1009,
                     "split_percent":25
                  }
               ],
               "fee":[
                  {
                     "payout_entity_id":1009,
                     "split_percent":25
                  }
               ]
            }
         },
         "issuer_processor_details":{
            "lithic":{
               "account_token":"349e2031-20de-40c6-87a3-214895077522"
            },
            "galileo":{
               "account_token":"406101000684"
            }
         },
         "cycle_type":{
            "first_cycle_interval":"11 days",
            "late_fee_grace":"2 days"
         },
         "discounts":{
            "prepayment_discount_config":{
               "loan_discount_cents":800000,
               "loan_discount_at":"2018-03-20T09:12:28+00:00"
            }
         },
         "summary":{
            "total_balance_cents":300000,
            "principal_cents":200000,
            "interest_balance_cents":60000,
            "am_interest_balance_cents":0,
            "deferred_interest_balance_cents":40000,
            "am_deferred_interest_balance_cents":0,
            "fees_balance_cents":0,
            "initial_principal_cents":200000,
            "total_paid_to_date_cents":40000,
            "total_interest_paid_to_date_cents":10000,
            "credit_limit_cents":400000,
            "max_approved_credit_limit_cents":400000,
            "interest_rate_percent":3,
            "interest_accrual_interval":"1 day",
            "interest_grace_method":"NONE",
            "available_credit_cents":100000,
            "open_to_buy_cents":5000,
            "total_payoff_cents":900000,
            "pending_am_interest_balance_cents":900000,
            "late_fee_cap_percent":12.5,
            "payment_reversal_fee_cap_percent":6.2
         },
         "associated_entities":{
            "merchant_name":"Acme Corporation",
            "lender_name":"Globex Lending Corp"
         },
         "plaid_config":{
            "plaid_access_token":{
               "valid_config":true
            },
            "plaid_account_id":{
               "valid_config":true
            },
            "check_balance_enabled":true
         },
         "payout_entities":[
            {
               "payout_entity_id":"0x1234",
               "payout_entity_type":"lender",
               "payout_entity_name":"Wonka Industries",
               "external_fields":[
                  {
                     "key":"Umbrella Corporation",
                     "value":"22445702-a389-431f-927d-07b8d0750787"
                  }
               ],
               "parent_payout_entity_id":"31mNprzLd2bKl6koVna68ARM",
               "bank_account_number":"1001001234",
               "bank_routing_number":"012345678",
               "bank_account_type":"CHECKING",
               "company_identification":"X000100393",
               "irs_tin":"203456789"
            }
         ],
         "cards":[
            {
               "spend_limit":8000000,
               "lithic":{
                  "token":"adccd28d-532e-480b-a063-a46a77a15570",
                  "card_program_token":"a5e38341-cc95-4a9b-a21c-751aeca67e9c",
                  "last_four":"0339",
                  "type":"UNLOCKED",
                  "state":"OPEN",
                  "memo":"Conference Event Card"
               }
            }
         ],
         "customers":[
            {
               "address_line_one":"12 Strawberry Road",
               "address_line_two":"Suite 101",
               "address_city":"Atlanta",
               "address_state":"GA",
               "address_zip":"99999-1000",
               "address_country_code":"US",
               "name_prefix":"Dr.",
               "name_first":"Miriam",
               "name_middle":"Louise",
               "name_last":"Trevino",
               "name_suffix":"Jr",
               "passport":{
                  "number":"",
                  "country":"JP"
               },
               "customer_id":"31mNprzLd2bKl6koVna68ARM",
               "created_at":"2017-06-20T09:12:14+00:00",
               "updated_at":"2019-02-20T09:12:14+00:00",
               "is_borrower_portal_user":true,
               "customer_type":"person",
               "is_active":true,
               "verification_status":"verified",
               "title":"CFO",
               "phone_number":"+14105556789",
               "ssn":"888888888",
               "international_customer_id":"9999999999",
               "email":"[email protected]",
               "date_of_birth":"1985-06-20",
               "customer_balances":{
                  "num_active_accounts":2,
                  "total_balance_cents":300000,
                  "principal_cents":200000,
                  "interest_balance_cents":60000,
                  "am_interest_balance_cents":0,
                  "deferred_interest_balance_cents":40000,
                  "am_deferred_interest_balance_cents":0,
                  "fees_balance_cents":0
               },
               "business_details":{
                  "business_legal_name":"Umbrella Corporation",
                  "doing_business_as":"Umbrella",
                  "business_ein":"888-888888",
                  "business_type":"llc",
                  "business_classification_id":"794D9D5E-B547-4B3B-8289-76484C1AFC5F",
                  "website":"https://example.com",
                  "controller":{
                     "address_line_one":"12 Strawberry Road",
                     "address_line_two":"Suite 101",
                     "address_city":"Atlanta",
                     "address_state":"GA",
                     "address_zip":"99999-1000",
                     "address_country_code":"US",
                     "name_prefix":"Dr.",
                     "name_first":"Miriam",
                     "name_middle":"Louise",
                     "name_last":"Trevino",
                     "name_suffix":"Jr",
                     "passport":{
                        "number":"",
                        "country":"JP"
                     },
                     "title":"CFO",
                     "phone_number":"+14105556789",
                     "ssn":"888888888"
                  }
               },
               "metro2_config":{
                  "bloom_metadata":{
                     "address_type":"CONFIRMED",
                     "residence_type":"OWNS",
                     "account_designations":[
                        {
                           "account_id":"string",
                           "designation":"INDIVIDUAL"
                        }
                     ]
                  }
               }
            }
         ],
         "partner_entity":{
            "additionalProp":{
               
            }
         },
         "metro2_config":{
            "bloom_metadata":{
               "branch_identifier":"string",
               "customer_designations":[
                  {
                     "customer_id":"string",
                     "designation":"INDIVIDUAL"
                  }
               ]
            }
         }
      }
   },
   "event":"account_create",
   "hmac_signature":"N+RJkPSzE+7QRu+ZgeDr7XbBth4RNJAg/a5r18k/lWw="
}

account_update

Sent any time an account is updated

  • The data field contains the same response sent by performing a GET on /accounts/{account_id}under the object attribute and an array of changes under changes. Each member of this array provides the name of the field that was changed as well as both the old and new value
Example Payload
{
  "data": {
    "changed_at": "2023-07-18T21:51:20.511Z",
    "changes": [
      {
        "field_name": "account_overview.account_status",
        "new_value": "SUSPENDED",
        "previous_value": "ACTIVE"
      },
      {
        "field_name": "account_overview.account_status_subtype",
        "new_value": "BANKRUPTCY",
        "previous_value": ""
      },
      {
        "field_name": "min_pay_due_cents.statement_min_pay_cents",
        "new_value": 13000,
        "previous_value": 0
      },
      {
        "field_name": "min_pay_due_cents.min_pay_cents",
        "new_value": 3000,
        "previous_value": 0
      },
      {
        "field_name": "min_pay_due_cents.graced_due_date",
        "new_value": "2053-02-27T00:00:00-08:00",
        "previous_value": null
      },
      {
        "field_name": "additional_min_pay_details.unpaid_min_pay_cents",
        "new_value": 3000,
        "previous_value": 0
      },
      {
        "field_name": "additional_statement_min_pay_details.statement_min_pay_fees_cents",
        "new_value": 3000,
        "previous_value": 0
      },
      {
        "field_name": "additional_statement_min_pay_details.statement_current_min_pay_cents",
        "new_value": 13000,
        "previous_value": 0
      },
      {
        "field_name": "issuer_processor_details.lithic.account_token",
        "new_value": "406101061835",
        "previous_value": null
      },
      {
        "field_name": "summary.total_balance_cents",
        "new_value": 3000,
        "previous_value": 0
      },
      {
        "field_name": "summary.principal_cents",
        "new_value": 3000,
        "previous_value": 0
      },
      {
        "field_name": "summary.total_paid_to_date_cents",
        "new_value": -13000,
        "previous_value": 0
      },
      {
        "field_name": "summary.available_credit_cents",
        "new_value": 497000,
        "previous_value": 500000
      },
      {
        "field_name": "summary.total_payoff_cents",
        "new_value": 3000,
        "previous_value": 0
      }
    ],
    "object": {
      "account_id": "test-acct-SMS-HTTP-p",
      "account_overview": {
        "account_status": "SUSPENDED",
        "account_status_subtype": "BANKRUPTCY",
        "is_active_scra": false
      },
      "account_product": {
        "post_promo_overview": {
          "default_product_post_promo_interest_rate": 0,
          "default_product_post_promo_len": null,
          "post_promo_exclusive_end": null,
          "post_promo_impl_interest_rate_percent": 0,
          "post_promo_inclusive_start": "9999-12-31 11:59:59+00",
          "post_promo_len": null
        },
        "product_duration_information": {
          "promo_len": 99999,
          "promo_purchase_window_len": null
        },
        "product_id": "can_74651",
        "product_lifecycle": {
          "annual_fee_impl_cents": 0,
          "default_product_late_fee_cents": 0,
          "default_product_payment_reversal_fee_cents": 0,
          "is_origination_fee_amortized": false,
          "is_origination_fee_lesser_value": false,
          "late_fee_cap_percent": null,
          "late_fee_impl_cents": 0,
          "loan_end_date": null,
          "monthly_fee_impl_cents": 0,
          "origination_fee_impl_cents": 0,
          "origination_fee_percent": 0,
          "payment_reversal_fee_cap_percent": null,
          "payment_reversal_fee_impl_cents": 0,
          "recurring_fees": [
            {
              "initial_delay_offset": "3 days",
              "is_fee_interval_floored": false,
              "recurring_fee_amount_cents": 3000,
              "recurring_fee_interval": "1 mon",
              "recurring_fee_label": "every 1 month with 3 days delay"
            }
          ]
        },
        "product_overview": {
          "close_of_business_time": "23:59:59",
          "product_color": "#0000FF",
          "product_long_description": "Ness Well production charge card.",
          "product_name": "Ness Charge Card Product",
          "product_short_description": "NessChargeCard",
          "product_time_zone": "America/Los_Angeles",
          "product_type": "REVOLVING"
        },
        "promo_overview": {
          "default_product_promo_interest_rate": 0,
          "default_product_promo_len": 99999,
          "promo_exclusive_end": "9999-12-31 11:59:59+00",
          "promo_impl_interest_rate_percent": 0,
          "promo_inclusive_start": "2053-01-01T08:00:00-08:00",
          "promo_len": 99999,
          "promo_purchase_window_exclusive_end": null,
          "promo_purchase_window_inclusive_start": "2053-01-01T08:00:00-08:00"
        }
      },
      "additional_min_pay_details": {
        "current_min_pay_cents": 0,
        "min_pay_fees_cents": 0,
        "unpaid_min_pay_cents": 3000
      },
      "additional_statement_min_pay_details": {
        "previous_statement_min_pay_cents": 0,
        "statement_current_min_pay_cents": 13000,
        "statement_min_pay_am_deferred_interest_cents": 0,
        "statement_min_pay_am_interest_cents": 0,
        "statement_min_pay_charges_principal_cents": 0,
        "statement_min_pay_deferred_cents": 0,
        "statement_min_pay_fees_cents": 3000,
        "statement_min_pay_interest_cents": 0,
        "statement_min_pay_loans_principal_cents": 0,
        "statement_payments_cents": 0,
        "statement_unpaid_min_pay_cents": 0
      },
      "associated_entities": {},
      "attributes": {},
      "cards": null,
      "created_at": "2023-06-27T14:02:48-07:00",
      "customers": [
        {
          "address_city": "Atlanta",
          "address_line_one": "12 Strawberry Road",
          "address_line_two": "Suite 101",
          "address_state": "GA",
          "address_zip": "99999-1000",
          "business_details": {
            "business_ein": null,
            "business_legal_name": null,
            "doing_business_as": null
          },
          "customer_account_external_id": null,
          "customer_account_role": "PRIMARY",
          "customer_id": "can_74652",
          "date_of_birth": "1990-06-20",
          "email": "[email protected]",
          "name_first": "Wilhelmine",
          "name_last": "Rice",
          "name_middle": "Austyn",
          "name_prefix": "Mr.",
          "name_suffix": "II",
          "phone_number": "5555555555",
          "ssn": "777777778"
        }
      ],
      "cycle_type": {
        "first_cycle_interval": "1 mon",
        "late_fee_grace": "00:00:00"
      },
      "discounts": {
        "prepayment_discount_config": {
          "loan_discount_at": null,
          "loan_discount_cents": null
        }
      },
      "effective_at": "2053-01-01T08:00:00-08:00",
      "issuer_processor_details": {
        "lithic": {
          "account_token": "406101061835"
        }
      },
      "min_pay_due_cents": {
        "graced_due_date": "2053-02-27T00:00:00-08:00",
        "min_pay_cents": 3000,
        "min_pay_due_at": "2053-02-27T00:00:00-08:00",
        "statement_min_pay_cents": 13000
      },
      "partner_entity": {},
      "payment_processor_config": {
        "ach": {
          "canopy_nacha_config": null,
          "dwolla_config": null,
          "galileo_config": null,
          "modern_treasury_config": null,
          "payment_processor_name": "NONE",
          "repay_config": null,
          "stripe_config": null
        },
        "autopay_configs": {
          "autopay_fixed_amount_cents": null,
          "autopay_method": "MIN_PAY"
        },
        "autopay_enabled": false,
        "credit_card": {
          "checkout_config": null,
          "payment_processor_name": "NONE"
        },
        "debit_card": {
          "authorize_net_config": null,
          "payment_processor_name": "NONE",
          "repay_config": null
        },
        "default_payment_processor_method": "NONE"
      },
      "payout_entities": [],
      "summary": {
        "am_deferred_interest_balance_cents": 0,
        "am_interest_balance_cents": 0,
        "available_credit_cents": 497000,
        "credit_limit_cents": 500000,
        "deferred_interest_balance_cents": 0,
        "fees_balance_cents": 0,
        "initial_principal_cents": 0,
        "interest_accrual_interval": "1 mon",
        "interest_balance_cents": 0,
        "interest_grace_method": "NONE",
        "interest_rate_percent": 0,
        "max_approved_credit_limit_cents": null,
        "min_pay_applicable_credit_type": "ALL",
        "open_to_buy_cents": null,
        "pending_am_interest_balance_cents": 0,
        "principal_cents": 3000,
        "total_balance_cents": 3000,
        "total_interest_paid_to_date_cents": 0,
        "total_paid_to_date_cents": -13000,
        "total_payoff_cents": 3000
      },
      "updated_at": "2023-07-18T14:51:20-07:00"
    },
    "object_type": "account"
  },
  "event": "account_update",
  "hmac_signature": "R9pdytvWRMOwjiJ5S3rC+r5teh3kKfRJflCLL2Y0Nd4="
}

line_item_create

Sent for every newly created line item

  • The data field contains the same response sent by performing a GET on /accounts/{account_id}/line_items/{line_item_id}under the object attribute

line_item_update

Sent any time a line item is updated.

  • The data field contains the same response sent by performing a GET on /accounts/{account_id}/line_items/{line_item_id}under the object attribute and an array of changes under changes. Each member of this array provides the name of the field that was changed as well as both the old and new value
Example Payload
{
   "event":"line_item_update",
   "data":{
      "object_type":"line_item",
      "changed_at":"2022-01-04T09:12:30+00:00",
      "changes":[
         {
            "field_name":"line_item_overview.line_item_status",
            "previous_value":"PENDING",
            "new_value":"INVALID"
         }
      ],
      "object":{
         
            "results":[
               {
                  "account_id":4,
                  "line_item_id":2,
                  "effective_at":"2018-07-20T09:12:30+00:00",
                  "valid_at":"2022-09-30T09:12:30+00:00",
                  "created_at":"2018-06-20T09:12:30+00:00",
                  "updated_at":"2019-07-21T10:13:31+00:00",
                  "product_id":"li_4Yxb5",
                  "line_item_overview":{
                     "line_item_status":"VALID",
                     "line_item_type":"CHARGE",
                     "description":"Refund for invalid purchase",
                     "allocation":"INTEREST"
                  },
                  "line_item_summary":{
                     "original_amount_cents":2484,
                     "balance_cents":3600,
                     "principal_cents":2400,
                     "interest_percent":2.34,
                     "interest_balance_cents":1100,
                     "am_interest_balance_cents":0,
                     "deferred_interest_balance_cents":200,
                     "am_deferred_interest_balance_cents":0,
                     "am_fees_balance_cents":0,
                     "total_interest_paid_to_date_cents":-16
                  },
                  "merchant_data":{
                     "name":"string",
                     "id":"string",
                     "mcc_code":"string",
                     "phone_number":"string"
                  },
                  "issuer_processor_details":{
                     "lithic":{
                        "last_four":3324,
                        "transaction_token":"33xd08bc-d100-488y-bb93-f8a1f081ff0e",
                        "card_token":"c6cd08bc-c524-48f5-b64d-f79ec0810df4"
                     }
                  },
                  "external_fields":[
                     {
                        "key":"external_id",
                        "value":"22445702-a389-431f-927d-07b8d0750787"
                     }
                  ],
                  "line_item_relationships":[
                     {
                        "type":"PAYMENT_SPLIT",
                        "line_item_id":"can_8231",
                        "split_amount_cents":5000,
                        "paid_down_line_item_id":"can_8231",
                        "paid_down_line_item_type":"LOAN",
                        "paid_down_line_item_parent_id":"can_8231",
                        "additionalProp":{
                           
                        }
                     },
                     {
                        "type":"PAYMENT_SPLIT",
                        "line_item_id":"can_8231",
                        "split_amount_cents":5000,
                        "allocated_to_line_item_id":"can_8231",
                        "allocated_to_line_item_type":"MANUAL_FEE",
                        "allocated_to_line_item_parent_id":"can_8231",
                        "additionalProp":{
                           
                        }
                     },
                     {
                        "type":"PAYMENT_SPLIT",
                        "line_item_id":"can_8231",
                        "additionalProp":{
                           
                        }
                     }
                  ],
                  "additionalProp":{
                     
                  }
               }
            ],
            "paging":{
               "starting_after":"31mNprzLd2bKl6koVna68ARM",
               "ending_before":"31mNprzLd2bKl6koVna68ARM",
               "has_more":false
            },
            "additionalProp":{
               
            }
         }
      
   },
   "hmac_signature":"6atLNzJ0KHumzJHwiqzHWO/4cLsYB/KhFppqhQ6IdV4="
}

statement_generation

Sent when an account cycle ends and the statement data is generated.

  • The data field contains the same response sent by performing a GET on /accounts/{account_id}/statements/{statement_id}
Example Payload
{
  "data": {
    "account_client_id": "can_1078",
    "account_id": "can_1078",
    "account_overview": {
      "account_status": "ACTIVE",
      "account_status_subtype": "",
      "payout_entities": [],
      "promo_exclusive_end": "9999-12-31 11:59:59+00",
      "promo_inclusive_start": "2022-06-01T02:00:00-04:00",
      "promo_purchase_window_exclusive_end": "9999-12-31 11:59:59+00",
      "promo_purchase_window_inclusive_start": "2022-06-01T02:00:00-04:00"
    },
    "additional_min_pay_details": {
      "current_min_pay_cents": 2500,
      "min_pay_am_deferred_interest_cents": 0,
      "min_pay_am_fees_cents": 0,
      "min_pay_am_interest_cents": 0,
      "min_pay_charges_principal_cents": 0,
      "min_pay_deferred_cents": 0,
      "min_pay_fees_cents": 0,
      "min_pay_floor_excess_cents": 1500,
      "min_pay_interest_cents": 0,
      "min_pay_loans_principal_cents": 0,
      "min_pay_past_due_deferred_cents": 0,
      "min_pay_past_due_interest_cents": 0,
      "min_pay_revolving_principal_cents": 1000,
      "previous_min_pay_cents": 0,
      "unpaid_min_pay_cents": 0
    },
    "balance_summary": {
      "am_deferred_interest_balance_cents": 0,
      "am_interest_balance_cents": 0,
      "charges_principal_cents": 50000,
      "deferred_interest_balance_cents": 0,
      "fees_balance_cents": 0,
      "interest_balance_cents": 0,
      "loans_principal_cents": 0,
      "previous_total_balance_cents": 0,
      "principal_balance_cents": 50000,
      "total_balance_cents": 50000
    },
    "cycle_summary": {
      "cycle_am_deferred_interest_cents": 0,
      "cycle_am_interest_cents": 0,
      "cycle_charge_returns_cents": 0,
      "cycle_charges_cents": 50000,
      "cycle_credit_adjustments_cents": 0,
      "cycle_debit_adjustments_cents": 0,
      "cycle_deferred_interest_cents": 0,
      "cycle_exclusive_end": "2022-07-02T00:00:00-04:00",
      "cycle_fees_total_cents": 0,
      "cycle_inclusive_start": "2022-06-01T02:00:00-04:00",
      "cycle_interest_cents": 0,
      "cycle_late_fees_cents": 0,
      "cycle_length_days": 31,
      "cycle_loans_cents": 0,
      "cycle_payment_reversals_cents": 0,
      "cycle_payment_reversals_fees_cents": 0,
      "cycle_payments_cents": 0,
      "cycle_refunds_cents": 0,
      "cycle_total_credits_cents": 0,
      "cycle_total_interest_cents": 0,
      "cycle_waived_deferred_interest_cents": 0
    },
    "effective_as_of_date": "2022-07-02T00:00:00-04:00",
    "inception_to_date_summary": {
      "inception_to_date_credits_and_payments_total_cents": 0,
      "inception_to_date_credits_total_cents": 0,
      "inception_to_date_fees_total_cents": 0,
      "inception_to_date_interest_prior_total": 0,
      "inception_to_date_interest_total_cents": 0,
      "inception_to_date_payments_total_cents": 0,
      "inception_to_date_purchases_total_cents": 50000
    },
    "line_items": [
      {
        "account_id": 23672,
        "created_at": "2023-08-28T12:12:46.631368-04:00",
        "effective_at": "2022-06-05T05:00:00-04:00",
        "external_fields": [],
        "line_item_id": 509891,
        "line_item_overview": {
          "description": null,
          "line_item_status": "VALID",
          "line_item_type": "CHARGE"
        },
        "line_item_summary": {
          "am_deferred_interest_balance_cents": 0,
          "am_interest_balance_cents": 0,
          "balance_cents": 0,
          "deferred_interest_balance_cents": 0,
          "interest_balance_cents": 0,
          "original_amount_cents": 50000,
          "principal_cents": 50000,
          "total_interest_paid_to_date_cents": 0
        },
        "merchant_data": {
          "name": "null"
        },
        "product_id": 1075,
        "valid_at": "2022-06-05T05:00:00-04:00"
      }
    ],
    "min_pay_due": {
      "min_pay_cents": 2500,
      "min_pay_due_at": "2022-07-12T00:00:00-04:00"
    },
    "object_key": null,
    "open_to_buy": {
      "available_credit_cents": 350000,
      "credit_limit_cents": 400000,
      "open_to_buy_cents": 350000,
      "total_charges_cents": 50000
    },
    "payoff": {
      "expected_remaining_payment_amount_cents": 0,
      "total_payoff_cents": 50000
    },
    "statement_client_id": "346475",
    "statement_id": "346475",
    "year_to_date_summary": {
      "year_to_date_fees_total_cents": 0,
      "year_to_date_interest_total_cents": 0
    }
  },
  "event": "statement_generation",
  "hmac_signature": "JJNnHFauWMJmyO8wqdeWitPuE5vnNz08q9dPTY3tArU="
}

account_calculations_change

Sent for any change to the account's available credit balance

  • The data field contains the account_id and available_credit_cents of the account and also the date when this change occurred under effective_as_of

account_tag_applied

Sent when a tag is applied to an account.

Example Payload
{
  "data": {
    "account_id": "can_299",
    "applied_account_tags": [
      {
        "active": true,
        "color": "blue",
        "description": "Testing tags",
        "label": "demo-tag",
        "tag_id": 5
      }
    ],
    "effective_at": "2022-08-19T04:00:00Z",
    "tag_application": "added",
    "tag_id": 5,
    "tag_label": "demo-tag"
  },
  "event": "account_tag_applied",
  "hmac_signature": "9Fe9eP+ybNa9uMj+WZ414re1vbuN7kDEP8QFBTP+8+c="
}

account_tag_removed

Sent when a tag is removed from an account.

Example Payload
{
  "data": {
    "account_id": "can_299",
    "applied_account_tags": [],
    "effective_at": "2022-08-19T04:00:00Z",
    "tag_application": "removed",
    "tag_id": 5,
    "tag_label": "demo-tag"
  },
  "event": "account_tag_removed",
  "hmac_signature": "VtM6yHVNCX8tgrRf002IqhhOOK3Z9B4pDUZ+8kJRqbs="
}

loans_restructure

Sent after a loan restructure has been executed.

Example Payload
{
  "event": "loans_restructure",
  "data": {
    "account_id": "can_2",
    "effective_at": "2024-01-12T00:00:00+00:00",
    "line_item_id": "can_15",
    "restructure_summary": {
      "restructured_from": [
        "test-766-f",
        "test-38-u"
      ],
      "restructured_from_at": "2024-01-12T00:00:00+00:00",
      "restructured_from_payload": {
        "notes": null,
        "am_len": 12,
        "description": null,
        "effective_at": "2024-01-12T00:00:00+00:00",
        "fee_policies": null,
        "line_item_id": null,
        "min_pay_type": null,
        "external_fields": null,
        "interest_policies": null,
        "restructured_loans_ids": [
          "test-766-f",
          "test-38-u"
        ]
      }
    }
  },
  "hmac_signature": "J4RI1z0CjgiN9WxbH1ugcs/LevB9i433whmcN7MYB2U="
}

Configurable Webhooks

The following webhook events are not enabled by default and must first be configured before being sent.

Each of the following event types can be subscribed to by calling making a PUT request to /accounts/{{account_id}}/notification_config endpoint.

The body of the request should contain the following:

  • notification_type: the name of the event you want to subscribe to, as listed below.
  • time_offset: the time interval for when you want to receive the webhook notice - i.e. the hours/days/etc before or after the applicable trigger point for each.

Example:

{
    "notification_type": "payment_due_date",
    "time_offset": "-2 days"
}

payment_due_date

This webhook can be configured to send a notice N days before or after a borrower's payment due date is approaching or has passed. Note that this webhook event is created upon a statement generation event, thus must be configured BEFORE the statement is generated for it to be sent for that statement's due date. Please contact Canopy Support if the webhook was set after the statement generated but is required to be sent.

  • Configurable using a time offset. For example, if you want to receive a webhook notification 5 days prior to the due date, your time offset would be "-5 days".

  • The time offset is based on the due date of the statement

  • The time offset can range anywhere between the moment the statement was cut and the next statement's due date

  • Multiple time offsets can be provided and the webhook will always be sent at those scheduled times

  • Returns the following payload under data

    Example Payload
    {
       "data":{
          "account_id":"account-8eyw",
          "current_min_pay_cents":"0",
          "customer_id":"connect_demo_5410",
          "days_past_due":237,
          "delinquent_as_of_date":"Not delinquent",
          "min_pay_cents":"17267",
          "min_pay_due_at":"2023-02-22T00:00:00-06:00",
          "min_pay_due_cents":"16472",
          "statement_id":"69908",
          "time_stamp":"2023-10-17T16:24:33.420464+00:00",
          "total_balance_cents":"16472",
          "unpaid_min_pay_cents":"33739"
       },
       "event":"payment_due_date",
       "hmac_signature":"DKHNkNOAWXQ0y0Ak+Mq9chWKCZlhG11LrF1wYvkn81I="
    }
    

minimum_payment_missed

This webhook can be configured to be sent any time the minimum due amount was not paid in full on time per the due date on the statement. If at any time the minimum due amount is met, the webhook will no longer be sent for that cycle.

  • Configurable using a time offset, such as "5 days".

  • The time offset is based on the due date plus grace period (if applicable) of the statement

    • With no offset, the webhook will be fired once the payment's grace period has elapsed; with an offset the webhook will fire the payment's grace period has elapsed plus the configured offset
  • The time offset can range anywhere between the statement's due date and the following statement's due date

  • Multiple time offsets can be provided and the webhook will always be sent at those scheduled times

  • Will not be sent if the min pay has been covered

  • Returns the following payload under data

    Payload "account_id": the id of the account

    "customer_id" the id of the customer
    "statement_id": the id of the statement that triggered this webhook
    "time_stamp": the time-stamp of when this webhook was sent

account_delinquency

This webhook will be triggered based on the date in which the account status moved to delinquent.

  • Configurable using a time offset or periodic interval, such as "5 days" if you want to receive a notification 5 days after it has gone delinquent.

  • The time offset is based on the moment the account becomes delinquent

  • The time offset can not be a negative value

  • Multiple time offsets can be provided and the webhook will always be sent at those scheduled times

  • Will no longer be sent once an account is no longer delinquent

  • If configured with a periodic interval, time offset configurations will be ignored

  • Returns the following payload under data

    Example Payload
{
  "data": {
    "account_id": "can_100030",
    "cure_amount": "3147",
    "customer_id": "848",
    "delinquent_as_of_date": "2023-01-30T13:23:00.487411-05:00",
    "number_of_days_delinquent": 0,
    "time_stamp": "2023-01-30T13:23:38.129534-05:00"
  },
  "event": "account_delinquency",
  "hmac_signature": "dGIr5vD0KVYPLYcGsmld/wtfKym1+teUVZfVMmS+RQw="
}

Examples

Configuring payment_due_date for two days before the due date

PUT /accounts/{{account_id}}/notification_config

{
    "notification_type": "payment_due_date",
    "time_offset": "-2 days"
}

Configuring account_delinquency to trigger daily

PUT /accounts/{{account_id}}/notification_config

{
    "notification_type": "account_delinquency",
    "periodic_interval": "DAILY"
}