Bloom Credit
Report to the bureaus through Bloom Credit.
Ensuring the accuracy and reliability of your credit reporting is critical for maintaining trust with credit bureaus and consumers alike. That’s why LoanPro is integrated with Bloom Credit, offering a comprehensive solution for credit data validation and submission. Bloom manages nearly all aspects of the credit reporting process for you. From running 482 validations and quality checks to handling disputes, Bloom is an excellent choice for lenders looking to minimize administrative burden and maximize operational efficiency.
This article will guide you through setting up and using the Bloom Credit integration within LoanPro. To start, here’s an overview of the process.
Setup and configuration
First, you’ll need to sign up with Bloom Credit directly. Connect with your regular LoanPro contact, and they can help you get started.
Integration setup
Once signed up, Bloom will give you the following information, which you should pass back to LoanPro:
- API Keys
- Bloom Organization ID
- Bloom Credit Product ID
LoanPro will use that information to set up the integration in your LoanPro LMS tenant.
Credentialing and access
Before activating this integration, you must be credentialed for data furnishing with your preferred credit bureau(s). The Bloom team can guide you through this process.
Additionally, make sure you have e-OSCAR access, as it’s required for handling credit bureau disputes. Registration with e-OSCAR must be completed before you can submit account data as tradelines to a consumer’s credit report.
Data synchronization
Data is synced automatically once a month using webhooks that update your data based on changes to the account. This includes updates such as loan activations, address or phone number changes, ECOA code updates, status changes to 'Paid Off,' and more. Below, this article explains how to set up and use webhooks for creating and updating consumer and account information in Bloom.
Webhook for consumer and account creation
Upon loan activation or based on your defined business logic, LoanPro will create a Bloom ‘Consumer’ linked to the LoanPro ‘Customer’ object, and an ‘Account’ linked to the LoanPro ‘Loan’ or ‘Line of Credit’ objects.
In order to do this, we recommend you use the loan activation event-based triggers for this webhook.
Here’s a payload example:
- Loan ID: [[v('loan-display-id')]]
- Customer primary ID: [[v('customer.primary.id')]]
- Customer secondary ID: [[v('customer.secondary.id')]]
- Tenant ID: [[v('tenant-id')]]
Webhook for consumer and account events
Similar to the above, consumer and account events will use event-based notifications. The LoanPro implementation team has pre-defined the rules for these webhooks and will provide them to you during setup.
Here’s a payload example:
- Event type: [[v(‘event-type’)]]
- Event name: [[v(‘event-name’)]]
- Tenant ID: [[v('tenant-id')]]
- Loan display ID: [[v('loan-display-id')]]
- Customer primary ID: [[v('customer.primary.id')]]
- Customer secondary ID: [[v('customer.secondary.id')]]
- Bloom Consumer Custom Field: [[v('Bloom Consumer Custom Field')]]
- Bloom Account Custom Field: [[v('Bloom Account Custom Field')]]
Monthly reporting
Credit reporting is typically carried out monthly, but can vary based on your specific needs. On a designated date and time, LoanPro gathers relevant loan data and sends it to Bloom. Bloom then performs approximately 482 data validations and quality checks, ensuring the highest accuracy of consumer information submitted to credit bureaus. They also provide exception reports. This rigorous process helps prevent errors and decreases the likelihood of disputes. In the event of discrepancies, however, Bloom can support you in dispute resolution, adding an extra layer of reliability to your credit reporting processes.
Credit status notification events
LoanPro sends monthly Consumer and Account events to Bloom. To facilitate this, we recommend setting up event-based triggers within LoanPro. For ‘Consumer’ events, we recommend using a checklist to manage these triggers.
Bloom event | LoanPro event and triggers | Payload |
Add_secondary_consumer |
What gets sent:
How this gets sent:
|
{ "bloom_login_client_id": "[id goes here], "lp_tenant_id": "[[v('tenant-id')]]", "lp_loan_id": "[[v('loan-id')]]", "lp_loan_settings_id": "[[v('settings-id')]]", "event_name": "add_secondary_consumers", "bloom_acct_cf_val": "[[v('settings-custom-fields-array.id17.value')]]", "bloom_cust_cf_val": "[[v('customer.secondary.customer-custom-fields.id18.value')]]", "lp_cust_id": "[[v('customer.secondary.id')]]", "ssn": "[[v('customer.secondary.ssn')]]", "dob": "[[v('customer.secondary.birthdate')]]", "first_name": "[[v('customer.secondary.first-name')]]", "last_name": "[[v('customer.secondary.last-name')]]", "address": "[[v('customer.secondary.primary-address1')]]", "city": "[[v('customer.secondary.primary-city')]]", "state": "[[v('customer.secondary.primary-state')]]", "zip": "[[v('customer.secondary.primary-zipcode')]]", "phone": "[[v('customer.secondary.primary-phone-number')]]", "email": "[[v('customer.secondary.email')]]" } |
Remove_secondary_consumer |
What gets sent:
How this gets sent:
|
{ "bloom_login_client_id": "[id goes here], "lp_tenant_id": "[[v('tenant-id')]]", "lp_loan_id": "[[v('loan-id')]]", "lp_loan_settings_id": "[[v('settings-id')]]", "event_name": "remove_secondary_consumers", "bloom_acct_cf_val": "[[v('settings-custom-fields-array.id17.value')]]", "bloom_cust_cf_val": "[[v('customer.secondary.customer-custom-fields.id18.value')]]", "lp_cust_id": "[[v('customer.secondary.id')]]", "ssn": "[[v('customer.secondary.ssn')]]", "dob": "[[v('customer.secondary.birthdate')]]", "first_name": "[[v('customer.secondary.first-name')]]", "last_name": "[[v('customer.secondary.last-name')]]", "address": "[[v('customer.secondary.primary-address1')]]", "city": "[[v('customer.secondary.primary-city')]]", "state": "[[v('customer.secondary.primary-state')]]", "zip": "[[v('customer.secondary.primary-zipcode')]]", "phone": "[[v('customer.secondary.primary-phone-number')]]", "email": "[[v('customer.secondary.email')]]" } |
Voluntary_surrender |
What gets sent:
How this gets sent:
|
{ "acct_event_name": "voluntary_surrender", "bloom_login_client_id": "[id goes here], "lp_tenant_id": "[[v('tenant-id')]]", "bloom_acct_id": "[[v('settings-custom-fields-array.id17.value')]]", "lp_loan_id": "[[v('loan-id')]]" } |
Repossession |
What gets sent:
How this gets sent:
|
{ "acct_event_name": "repossession", "bloom_login_client_id": "[id goes here], "lp_tenant_id": "[[v('tenant-id')]]", "bloom_acct_id": "[[v('settings-custom-fields-array.id17.value')]]", "lp_loan_id": "[[v('loan-id')]]" } |
Close |
What gets sent:
How this gets sent:
|
{ "acct_event_name": "close", "bloom_login_client_id": "[id goes here], "lp_tenant_id": "[[v('tenant-id')]]", "bloom_acct_id": "[[v('settings-custom-fields-array.id17.value')]]", "lp_loan_id": "[[v('loan-id')]]" } |
Charge_off |
What gets sent:
How this gets sent:
|
{ "acct_event_name": "charge_off", "lp_tenant_id": "[[v('tenant-id')]]", "bloom_acct_id": "[[v('settings-custom-fields-array.id17.value')]]", "lp_loan_id": "[[v('loan-id')]]", "charge_off_amt": "[[v('status-net-charge-off')]]" } |
Delete_fraud |
What gets sent:
How this gets sent:
|
{ "acct_event_name": "delete_df", "bloom_login_client_id": "[id goes here], "lp_tenant_id": "[[v('tenant-id')]]", "bloom_acct_id": "[[v('settings-custom-fields-array.id17.value')]]", "lp_loan_id": "[[v('loan-id')]]" } |
Delete_other |
What gets sent:
How this gets sent:
|
{ "acct_event_name": "delete_da", "bloom_login_client_id": "[id goes here], "lp_tenant_id": "[[v('tenant-id')]]", "bloom_acct_id": "[[v('settings-custom-fields-array.id17.value')]]", "lp_loan_id": "[[v('loan-id')]]" } |
Account_update |
What gets sent:
How this gets sent:
|
{ "lp_loan_id": "[[v('loan-id')]]", "lp_loan_settings_id": "[[v('settings-id')]]", "bloom_cons_list_cf_val": "[[v('settings-custom-fields-array.id16.value')]]", "bloom_acct_cf_val": "[[v('settings-custom-fields-array.id17.value')]]", "prim_ecoa": "[[v('settings-ecoa-code')]]", "prim_bloom_cons_id": "[[v('customer.primary.customer-custom-fields-array.id18.value')]]", "sec_ecoa": "[[v('settings-co-buyer-ecoa-code')]]", "sec_bloom_cons_id": "[[v('customer.secondary.customer-custom-fields-array.id18.value')]]" } |
For bankruptcy-related Bloom events, you need to add a webhook to your existing bankruptcy process. This will notify LoanPro to send bankruptcy consumer events to Bloom.
Bloom event | LoanPro event and triggers | Payload |
Bankruptcy_filed |
What gets sent:
How this gets sent:
|
{ "cons_event_name": "bankruptcy_filed", "bloom_login_client_id": "[id goes here], "lp_tenant_id": "[[v('tenant-id')]]", "bloom_acct_cf_val": "[[v('settings-custom-fields-array.id17.value')]]", "lp_loan_id": "[[v('loan-id')]]", "bloom_consumer_id": "[[v('customer.primary.customer-custom-fields-array.id18.value')]]", "lp_cust_id": "[[v('customer.primary.id')]]", "bankruptcy_chapter": "[[v('bankruptcy-chapter')]]", "bankruptcy_filing_date": "[[v('bankruptcy-filing-date')]]", "bankruptcy_case_num": "[[v('bankruptcy-case-number')]]" } |
Bankruptcy_reaffirmed |
What gets sent:
How this gets sent:
|
{ "cons_event_name": "bankruptcy_reaffirmed", "bloom_login_client_id": "[id goes here], "lp_tenant_id": "[[v('tenant-id')]]", "bloom_acct_cf_val": "[[v('settings-custom-fields-array.id17.value')]]", "lp_loan_id": "[[v('loan-id')]]", "bloom_consumer_id": "[[v('customer.primary.customer-custom-fields-array.id18.value')]]", "lp_cust_id": "[[v('customer.primary.id')]]" } |
Bankruptcy_withdrawn |
What gets sent:
How this gets sent:
|
{ "cons_event_name": "bankruptcy_withdrawn", "bloom_login_client_id": "[id goes here], "lp_tenant_id": "[[v('tenant-id')]]", "bloom_acct_cf_val": "[[v('settings-custom-fields-array.id17.value')]]", "lp_loan_id": "[[v('loan-id')]]", "bloom_consumer_id": "[[v('customer.primary.customer-custom-fields-array.id18.value')]]", "lp_cust_id": "[[v('customer.primary.id')]]" } |
Bankruptcy_reaffirm_recinded |
What gets sent:
How this gets sent:
|
{ "cons_event_name": "bankruptcy_reaffirm_rescinded", "bloom_login_client_id": "[id goes here], "lp_tenant_id": "[[v('tenant-id')]]", "bloom_acct_cf_val": "[[v('settings-custom-fields-array.id17.value')]]", "lp_loan_id": "[[v('loan-id')]]", "bloom_consumer_id": "[[v('customer.primary.customer-custom-fields-array.id18.value')]]", "lp_cust_id": "[[v('customer.primary.id')]]" } |
Bankruptcy_discharged |
What gets sent:
How this gets sent:
|
{ "cons_event_name": "bankruptcy_discharged", "bloom_login_client_id": "[id goes here], "lp_tenant_id": "[[v('tenant-id')]]", "bloom_acct_cf_val": "[[v('settings-custom-fields-array.id17.value')]]", "lp_loan_id": "[[v('loan-id')]]", "bloom_consumer_id": "[[v('customer.primary.customer-custom-fields-array.id18.value')]]", "lp_cust_id": "[[v('customer.primary.id')]]" } |
Handling historical data
Before we launch your Bloom integration, LoanPro will make sure all of your existing customer and account data is accurately accounted for and transferred smoothly at go-live.
Was this article helpful?