# Report other credit decisions and manage adverse action notices Learn how to report various credit decisions and send adverse action notice emails. With the CreditUnderwritingRecord API, you can record application and decision details across many credit underwriting scenarios, including some which are adverse actions and require [sending adverse action notice emails](https://docs.stripe.com/issuing/credit/report-credit-decisions-and-manage-aans.md#sending-adverse-action-notice-emails), known as AANs. We’ve documented examples of these credit underwriting scenarios and the steps to follow to: - [Act on an application received from a customer](https://docs.stripe.com/issuing/credit/report-credit-decisions-and-manage-aans.md#act-on-application) - [Make proactive underwriting decisions without a customer application](https://docs.stripe.com/issuing/credit/report-credit-decisions-and-manage-aans.md#make-proactive-decisions) - [Override your written policies through an exception](https://docs.stripe.com/issuing/credit/report-credit-decisions-and-manage-aans.md#override-credit-policies-with-exception) - [Correct an erroneous underwriting record](https://docs.stripe.com/issuing/credit/report-credit-decisions-and-manage-aans.md#override-credit-policies-with-exception) ## Act on an application received from a customer Each time a customer or prospective customer completes and submits an application for credit to your platform, you must record their application details through the [create_from_application](https://docs.stripe.com/api/issuing/credit_underwriting_record_api/create_from_application.md) endpoint of the CreditUnderwritingRecord API, and then record the decision within 30 days through the [report_decision](https://docs.stripe.com/api/issuing/credit_underwriting_record_api/report_decision.md) endpoint. If their application is approved, you’ll also need to set their `credit_limit_amount` in the CreditPolicy API. If it’s rejected, you’ll need to provide rejection reasons and send an adverse action notice. Refer to these example scenarios for detailed steps: - [Report and approve an application for a new credit line :external:](https://docs.stripe.com/issuing/credit/connect-credit-setup.md#record-application-details) - [Report and approve an existing user’s application for a credit limit increase :external:](https://docs.stripe.com/issuing/credit/manage-credit-terms.md?scenario=approve-credit-limit-increase) - [Report and reject an application for a new credit line or increased credit limit](https://docs.stripe.com/issuing/credit/report-credit-decisions-and-manage-aans.md#reject-application) (requires an AAN) - [Handle an incomplete or withdrawn application for a new credit line](https://docs.stripe.com/issuing/credit/report-credit-decisions-and-manage-aans.md#handle-incomplete-withdrawn-application) ![Steps when receiving an application for credit](https://b.stripecdn.com/docs-statics-srv/assets/issuing-credit-application-based-underwriting.6043ea98cba87130da42ecc1a8cb0310.png) Diagram of scenarios when receiving an application from a customer. ### Report and reject an application for a new credit line or increased credit limit and report rejection reasons First, report the application through the [create_from_application](https://docs.stripe.com/api/issuing/credit_underwriting_record_api/create_from_application.md) endpoint. ```curl curl https://api.stripe.com/v1/issuing/credit_underwriting_records/create_from_application \ -u "<>:" \ -H "Stripe-Account: {{CONNECTEDACCOUNT_ID}}" \ -d "credit_user[name]=Barbell Gym" \ --data-urlencode "credit_user[email]=barbell-gym@gmail.com" \ -d "application[purpose]=credit_line_opening" \ -d "application[submitted_at]=1681138952" ``` ### Example response ```json { "object": "issuing.credit_underwriting_record", "id": "cur_1NiHAD2eZvKYlo2CmWGpt5OX", "credit_user": { "name": "Barbell Gym", "email": "barbell-gym@gmail.com" }, "created_from": "application", "application": { "purpose": "credit_line_opening", "submitted_at": 1681138952, "application_method": "online" }, "decision_deadline": 1683601352 // 30 days after submission, set by Stripe } ``` To reject the application, the steps are the same for both application purposes (`credit_line_opening` and `credit_limit_increase`). Use the [report_decision](https://docs.stripe.com/api/issuing/credit_underwriting_record_api/report_decision.md) endpoint with the ID from the response, set the decision type to `application_rejected`, and provide at least one value from [application_rejected.reasons](https://docs.stripe.com/api/issuing/credit_underwriting_record_api/report_decision.md#report_decision-decision-application_rejected-reasons) in the `application_rejected` hash. You can provide up to four reasons, and these must be the “principal” reasons for rejecting the application. They must be consistent with the rejection reasons defined in your bank-approved credit policy. If you select `other`, also provide an explanation of the rejection in [reason_other_explanation](https://docs.stripe.com/api/issuing/credit_underwriting_record_api/report_decision.md#report_decision-decision-application_rejected-reason_other_explanation). Stripe compliance reviews these explanations and might contact you for further details. ```curl curl https://api.stripe.com/v1/issuing/credit_underwriting_records/{{CREDITUNDERWRITINGRECORD_ID}}/report_decision \ -u "<>:" \ -H "Stripe-Account: {{CONNECTEDACCOUNT_ID}}" \ -d "decided_at={{DECISIONTIMESTAMP_ID}}" \ -d "decision[type]=application_rejected" \ -d "decision[application_rejected][reasons][]=insufficient_bank_account_history" \ -d "decision[application_rejected][reasons][]=other" \ -d "decision[application_rejected][reason_other_explanation]=example explanation provided by platform" ``` You must [send an adverse action notice email](https://docs.stripe.com/issuing/credit/report-credit-decisions-and-manage-aans.md#sending-adverse-action-notice-emails) to rejected applicants that includes these rejection reasons. ### Handle an incomplete or withdrawn application for a new credit line #### Report an applicant’s decision to withdraw their application First, report the application through the [create_from_application](https://docs.stripe.com/api/issuing/credit_underwriting_record_api/create_from_application.md) endpoint. Then use the [report_decision](https://docs.stripe.com/api/issuing/credit_underwriting_record_api/report_decision.md) endpoint with the [ID](https://docs.stripe.com/api/issuing/credit_underwriting_record/object.md#credit_underwriting_record_object-id) from the response and set the decision type to `withdrawn_by_applicant`. If the applicant decides to withdraw their credit application, set the decision to `withdrawn_by_applicant`. #### Request more information on an incomplete application, then make a final decision Sometimes you receive an incomplete application and need to ask the applicant for additional information before making a final decision. This can occur when an applicant doesn’t provide requested information, or provides wrong information in their initial application which prevents your underwriting team from reviewing the application. In these cases, report the application as always through the [create_from_application](https://docs.stripe.com/api/issuing/credit_underwriting_record_api/create_from_application.md) endpoint. Then use the [report_decision](https://docs.stripe.com/api/issuing/credit_underwriting_record_api/report_decision.md) endpoint with the [ID](https://docs.stripe.com/api/issuing/credit_underwriting_record/object.md#credit_underwriting_record_object-id) from the response and set the decision type to `additional_information_requested`. This lets Stripe know the original application isn’t considered a “complete application”. ```curl curl https://api.stripe.com/v1/issuing/credit_underwriting_records/{{CREDITUNDERWRITINGRECORD_ID}}/report_decision \ -u "<>:" \ -H "Stripe-Account: {{CONNECTEDACCOUNT_ID}}" \ -d "decided_at={{DECISIONTIMESTAMP_ID}}" \ -d "decision[type]=additional_information_requested" ``` #### If the applicant provides more information If the applicant provides more information within 30 days to “complete” the application, then use the [create_from_application](https://docs.stripe.com/api/issuing/credit_underwriting_record_api/create_from_application.md) endpoint with the same connect account ID to report the new application and create a new underwriting record. Set the `submitted_at` field to the date when you received the additional info which “completed” the application. As always, report the decision on the new application within 30 days. #### If the application remains incomplete after 30 days If the applicant fails to provide additional information to “complete” the application within 30 days, reject the application. Do so by using the same credit underwriting record ID and posting to the [report_decision](https://docs.stripe.com/api/issuing/credit_underwriting_record_api/report_decision.md) endpoint with the decision type `application_rejected` and `incomplete_application` as the reason. This decision requires an AAN for [rejecting an application](https://docs.stripe.com/issuing/credit/report-credit-decisions-and-manage-aans.md#credit-application-rejected). See the [complete list of valid decision reasons](https://docs.stripe.com/api/issuing/credit_underwriting_record_api/report_decision.md#report_decision-decision-application_rejected-reasons) for all available options. ```curl curl https://api.stripe.com/v1/issuing/credit_underwriting_records/{{CREDITUNDERWRITINGRECORD_ID}}/report_decision \ -u "<>:" \ -H "Stripe-Account: {{CONNECTEDACCOUNT_ID}}" \ -d "decided_at={{DECISIONTIMESTAMP_ID}}" \ -d "decision[type]=application_rejected" \ -d "decision[application_rejected][reasons][]=debt_to_cash_balance_ratio_too_high" ``` > If you report an incomplete application as “additional_information_requested”, you have 30 days to either report a new application for the same connected account, or to update your decision on the original application to `rejected`. Stripe compliance might notify you of a compliance violation if you fail to take action within 30 days on incomplete applications. ## Make proactive underwriting decisions on existing users without a customer application To change a connected account’s credit limit or deactivate a credit line without receiving an application from the account, report the decision in a single step through the [create_from_proactive_review](https://docs.stripe.com/api/issuing/credit_underwriting_record_api/create_from_proactive_review.md) endpoint. There is no `decision_deadline` for proactive reviews, since you report the decision in your initial API call (unlike for applications which require you to first submit the application, then submit the decision within 30 days). If the decision results in a new credit limit, you’ll also need to set their `credit_limit_amount` in the CreditPolicy API. If you decide to close their credit line, you’ll also need to set their `status` in the CreditPolicy API to `inactive`. Refer to these example scenarios for detailed steps: - [Proactively decide to increase an existing user’s credit limit :external:](https://docs.stripe.com/issuing/credit/manage-credit-terms.md?scenario=proactive-credit-limit-increase) - [Proactively decide to reduce an existing user’s credit limit :external:](https://docs.stripe.com/issuing/credit/manage-credit-terms.md?scenario=decrease-credit-limit) (requires an AAN) - [Proactively decide to close an account and deactivate a CreditPolicy :external:](https://docs.stripe.com/issuing/credit/manage-credit-terms.md#deactivate-creditpolicy) (requires an AAN) - [Take no action after a proactive review](https://docs.stripe.com/issuing/credit/report-credit-decisions-and-manage-aans.md#report-proactive-review-no-action) ![Steps when making a proactive credit decision](https://b.stripecdn.com/docs-statics-srv/assets/issuing-credit-proactive-underwriting.ec9f05acc7fb9e0dc4a9f29b8b6d0d46.png) Diagram: Proactive underwriting scenarios without a customer application. ### Report a proactive review with a decision to take no action Sometimes a proactive review might result in no action taken on the account. You can report that decision by setting the decision type to `no_changes`. This decision type is commonly used when [reporting an exception](https://docs.stripe.com/issuing/credit/report-credit-decisions-and-manage-aans.md#override-proactive-review). ```curl curl https://api.stripe.com/v1/issuing/credit_underwriting_records/create_from_proactive_review \ -u "<>:" \ -H "Stripe-Account: {{CONNECTEDACCOUNT_ID}}" \ -d "credit_user[name]=Barbell Gym" \ --data-urlencode "credit_user[email]=barbell-gym@gmail.com" \ -d "decided_at={{DECISIONTIMESTAMP_ID}}" \ -d "decision[type]=no_changes" ``` ## Override your written credit policies by submitting an exception Underwriting decisions must be consistent with the parameters defined within your bank-approved credit policy. In rare circumstances, you may need to report a decision that is an exception to your usual underwriting criteria. Only do this after consulting with Stripe Compliance. ### Override an application decision Since you can only report an application decision once, only report the decision once the exception has been made. Use the `exception` hash to record the default policy decision in [exception.original_decision_type](https://docs.stripe.com/api/issuing/credit_underwriting_record_api/report_decision.md#report_decision-exception-original_decision_type) and explain your rationale for the exception in [exception.reason](https://docs.stripe.com/api/issuing/credit_underwriting_record_api/report_decision.md#report_decision-exception-reason). As an example, after reviewing an application, the default decision based on your written credit policy was to reject the application. However, you’ve received evidence from the applicant of a nontraditional revenue source, so the decision is to approve the application instead. Report the decision as `credit_limit_approved`, and in the `exception` hash set `original_decision_type` to “application_rejected” and provide your explanation. > If you get an error “A decision already exists for this CreditUnderwritingRecord”, you need to use the `/correct` endpoint instead of `/report_decision` to modify an existing decision. Once a decision exists, we must use the `/correct` endpoint to make changes. ```curl curl https://api.stripe.com/v1/issuing/credit_underwriting_records/{{CREDITUNDERWRITINGRECORD_ID}}/report_decision \ -u "<>:" \ -H "Stripe-Account: {{CONNECTEDACCOUNT_ID}}" \ -d "decided_at={{DECISIONTIMESTAMP_ID}}" \ -d "decision[type]=credit_limit_approved" \ -d "decision[credit_limit_approved][amount]=100000" \ -d "decision[credit_limit_approved][currency]=usd" \ -d "exception[original_decision_type]=application_rejected" \ -d "exception[reason]=The applicant has evidenced a nontraditional revenue source that meets our underwriting criteria" ``` ### Override a proactive review If a proactive review would have resulted in a policy decision that you decide to override, use an exception and set the decision type to `no action`. In this example, the proactive review results in an `original_decision_type` to reduce the credit limit, but the final decision is to take no action, and the rationale is provided in the exception `reason`. ```curl curl https://api.stripe.com/v1/issuing/credit_underwriting_records/create_from_proactive_review \ -u "<>:" \ -H "Stripe-Account: {{CONNECTEDACCOUNT_ID}}" \ -d "credit_user[name]=Barbell Gym" \ --data-urlencode "credit_user[email]=barbell-gym@gmail.com" \ -d "decided_at={{DECISIONTIMESTAMP_ID}}" \ -d "decision[type]=no_changes" \ -d "exception[original_decision_type]=credit_limit_decreased" \ --data-urlencode "exception[reason]=Account holder's balance sheet was below the required threshold, but evidence was provided of additional funding already secured" ``` ## Correct an erroneous credit underwriting record If your original submission contained incorrect information, you should POST to `/v1/issuing/credit_underwriting_records/{CREDIT_UNDERWRITING_RECORD_ID}/correct` with the ID of the previous credit underwriting record to override the prior application or decision you submitted. No additional explanation is required to submit a correction, and you should only use this method very rarely, to override mistakes in your reporting. After correcting a record which changes the credit limit or status, update the CreditPolicy to reflect the corrected decision. ## Sending adverse action notice emails All Issuing platforms are required to send customer emails upon certain trigger events. Stripe helps you stay compliant by sending properly formatted notices when required. Stripe offers a no-code solution to [send regulated emails on your behalf](https://dashboard.stripe.com/settings/connect/emails). We recommend this option because it helps you stay compliant automatically, but you can [send regulated emails yourself](https://docs.stripe.com/issuing/compliance-us/issuing-regulated-customer-notices.md?issuing-notices-sender=platform) if you prefer. Negative credit underwriting decisions that impact a customer require [adverse action notices](https://www.consumerfinance.gov/rules-policy/regulations/1002/9/) to comply with Regulation B. See the list of [Charge Card events that require a customer notice](https://docs.stripe.com/issuing/compliance-us/issuing-regulated-customer-notices.md?issuing-notices-sender=stripe#charge-card-credit-underwriting-decisions). ### Charge Card notice email templates When Stripe sends regulated emails on your behalf, we send the below templates to your customers immediately after you report one of the trigger events above. You can preview each template from the [Emails](https://dashboard.stripe.com/settings/connect/emails) by clicking **Preview and Customize** under **Stripe Issuing Notices**. If you’ve configured your [custom email domain](https://docs.stripe.com/get-started/account/email-domain.md), Stripe automatically removes the *\*italicized\** text in each template below. We only include this text when we send the email on your behalf from card-issuing-notices@stripe.com. If you prefer to [send these emails yourself](https://docs.stripe.com/issuing/compliance-us/issuing-regulated-customer-notices.md?issuing-notices-sender=platform), you can send your own templates to [platform-compliance@stripe.com](mailto:platform-compliance@stripe.com) for approval. You must include all the legal disclosures and critical information from the Stripe templates, but you can customize some wording with your brand voice. ### An application for a new charge card account is rejected | | | | | Subject: Your recent application for credit has been rejected Preheader: After reviewing your application through <[Your platform name](https://dashboard.stripe.com/settings/connect/stripe-dashboard/branding)\> <[Your platform logo](https://dashboard.stripe.com/settings/connect/stripe-dashboard/branding)\> Hello , You recently applied for credit with through <[Your platform name](https://dashboard.stripe.com/settings/connect/stripe-dashboard/branding)\>. After considering your request, we’re unable to extend credit at this time for the following reasons: - <[Application rejected reasons](https://docs.stripe.com/api/issuing/credit_underwriting_record/object.md#credit_underwriting_record_object-decision-application_rejected-reasons)\> - <[Application rejected reasons - other explanation](https://docs.stripe.com/api/issuing/credit_underwriting_record/object.md#credit_underwriting_record_object-decision-application_rejected-reason_other_explanation)\> Please contact <[Your platform name](https://dashboard.stripe.com/settings/connect/stripe-dashboard/branding)\> support with any follow-up questions. You can reply to this email, or contact <[Your platform support email](https://dashboard.stripe.com/settings/public)\>. – *\*Stripe and\** <[Your platform name](https://dashboard.stripe.com/settings/connect/stripe-dashboard/branding)\> [](https://docs.stripe.com/issuing/compliance-us/issuing-regulated-customer-notices.md?issuing-notices-sender=stripe#equal-credit-opportunity-act-disclosures) *\*This email was sent by Stripe for your account with\** <[Your platform name](https://dashboard.stripe.com/settings/connect/stripe-dashboard/branding)\>, Account ID: <[Merchant account ID](https://docs.stripe.com/api/accounts/object.md#account_object-id)\> | ### An application for an increased credit limit for an existing account is rejected | | | | | Subject: Your request for a credit limit increase has been rejected Preheader: Your credit limit hasn’t been changed <[Your platform logo](https://dashboard.stripe.com/settings/connect/stripe-dashboard/branding)\> Hello , You recently requested an increased credit limit for the cards issued to you through <[Your platform name](https://dashboard.stripe.com/settings/connect/stripe-dashboard/branding)\> with . After considering your request, we’re unable to offer your business a credit limit increase at this time for the following reasons: - <[Application rejected reasons](https://docs.stripe.com/api/issuing/credit_underwriting_record/object.md#credit_underwriting_record_object-decision-application_rejected-reasons)\> - <[Application rejected reasons - other explanation](https://docs.stripe.com/api/issuing/credit_underwriting_record/object.md#credit_underwriting_record_object-decision-application_rejected-reason_other_explanation)\> Please contact <[Your platform name](https://dashboard.stripe.com/settings/connect/stripe-dashboard/branding)\> support with any follow-up questions. You can reply to this email, or contact <[Your platform support email](https://dashboard.stripe.com/settings/public)\>. – *\*Stripe and\** <[Your platform name](https://dashboard.stripe.com/settings/connect/stripe-dashboard/branding)\> [](https://docs.stripe.com/issuing/compliance-us/issuing-regulated-customer-notices.md?issuing-notices-sender=stripe#equal-credit-opportunity-act-disclosures) *\*This email was sent by Stripe for your account with\** <[Your platform name](https://dashboard.stripe.com/settings/connect/stripe-dashboard/branding)\>, Account ID: <[Merchant account ID](https://docs.stripe.com/api/accounts/object.md#account_object-id)\> | ### Your platform decides to reduce the credit limit for an existing account | | | | | Subject: Your credit limit has been decreased Preheader: After reviewing your account with <[Your platform name](https://dashboard.stripe.com/settings/connect/stripe-dashboard/branding)\> <[Your platform logo](https://dashboard.stripe.com/settings/connect/stripe-dashboard/branding)\> Hello , After a recent review of your card account with <[Your platform name](https://dashboard.stripe.com/settings/connect/stripe-dashboard/branding)\> a decision was made to reduce your credit limit with . We’ve reached this decision due to the following reasons: - <[Credit limit decreased reasons](https://docs.stripe.com/api/issuing/credit_underwriting_record/object.md#credit_underwriting_record_object-decision-credit_limit_decreased-reasons)\> - <[Credit limit decreased reasons - other explanation](https://docs.stripe.com/api/issuing/credit_underwriting_record/object.md#credit_underwriting_record_object-decision-credit_limit_decreased-reason_other_explanation)\> Please contact <[Your platform name](https://dashboard.stripe.com/settings/connect/stripe-dashboard/branding)\> support with any follow-up questions. You can reply to this email, or contact <[Your platform support email](https://dashboard.stripe.com/settings/public)\>. – *\*Stripe and\** <[Your platform name](https://dashboard.stripe.com/settings/connect/stripe-dashboard/branding)\> [](https://docs.stripe.com/issuing/compliance-us/issuing-regulated-customer-notices.md?issuing-notices-sender=stripe#equal-credit-opportunity-act-disclosures) *\*This email was sent by Stripe for your account with\** <[Your platform name](https://dashboard.stripe.com/settings/connect/stripe-dashboard/branding)\>, Account ID: <[Merchant account ID](https://docs.stripe.com/api/accounts/object.md#account_object-id)\> | ### Your platform decides to close the credit line of an existing customer | | | | | Subject: Your credit line has been closed Preheader: After reviewing your account with <[Your platform name](https://dashboard.stripe.com/settings/connect/stripe-dashboard/branding)\> <[Your platform logo](https://dashboard.stripe.com/settings/connect/stripe-dashboard/branding)\> Hello , After a recent review of your card account with <[Your platform name](https://dashboard.stripe.com/settings/connect/stripe-dashboard/branding)\> a decision was made to close your credit line with . We’ve reached this decision due to the following reasons: - <[Credit line closed reasons](https://docs.stripe.com/api/issuing/credit_underwriting_record/object.md#credit_underwriting_record_object-decision-credit_line_closed-reasons)\> - <[Credit line closed reasons - other explanation](https://docs.stripe.com/api/issuing/credit_underwriting_record/object.md#credit_underwriting_record_object-decision-credit_line_closed-reason_other_explanation)\> Please contact <[Your platform name](https://dashboard.stripe.com/settings/connect/stripe-dashboard/branding)\> support with any follow-up questions. You can reply to this email, or contact <[Your platform support email](https://dashboard.stripe.com/settings/public)\>. – *\*Stripe and\** <[Your platform name](https://dashboard.stripe.com/settings/connect/stripe-dashboard/branding)\> [](https://docs.stripe.com/issuing/compliance-us/issuing-regulated-customer-notices.md?issuing-notices-sender=stripe#equal-credit-opportunity-act-disclosures) *\*This email was sent by Stripe for your account with\** <[Your platform name](https://dashboard.stripe.com/settings/connect/stripe-dashboard/branding)\>, Account ID: <[Merchant account ID](https://docs.stripe.com/api/accounts/object.md#account_object-id)\> | In the templates above, we replace with the [appropriate equal credit opportunity act disclosure](https://docs.stripe.com/issuing/compliance-us/issuing-regulated-customer-notices.md?issuing-notices-sender=stripe#equal-credit-opportunity-act-disclosures) for your platform’s bank sponsor. We replace , , and with the descriptive text from Stripe API documentation (not the raw API value) for each reason you provided. For example, if you provided a reason `customer_already_exists`, the template shows “The applicant has a pre-existing application or is already a customer”.