Welcome! Strafford is now BARBRI! The expert courses you know from the trusted global leader in legal education.
About the Course
Introduction
This course will give nonprofit tax professionals and advisers a good look at the rules governing unrelated business income tax. The webinar will focus on guidelines for determining whether income is unrelated business taxable income (UBTI), how separate business lines are determined under the regulations, and a detailed exploration into the calculations and preparation of Form 990-T Exempt Organization Business Income Tax Return.
Description
A primary concern of tax-exempt organizations is navigating the rules on UBTI. Many exempt organizations receive taxable income and depend on that income to carry on their charitable purpose. However, UBTI generates the need to file an income tax return and may lead to an unexpected tax bill. Excess UBTI can even jeopardize the exempt status of a nonprofit organization.
For tax-exempt organizations operating multiple unrelated business activities, the 2017 Tax Act does not allow losses from an unrelated trade or business to offset profit from a separate unrelated trade or business. Final regulations issued in November 2020 explain how to separate unrelated business activities into silos using the 2-digit NAICS codes.
Through proper planning and reporting, exempt organizations may anticipate the impact of UBTI.
Listen as our panel of experienced nonprofit tax advisers provides a deep dive into the rules and reporting requirements governing UBTI for exempt organizations.
-
BARBRI is a NASBA CPE sponsor and this 110-minute webinar is accredited for 2.0 CPE credits.
-
BARBRI is an IRS-approved continuing education provider offering certified courses for Enrolled Agents (EA) and Tax Return Preparers (RTRP).
Date + Time
- event
Tuesday, March 7, 2023
- schedule
1:00 p.m. ET./10:00 a.m. PT
- UBTI overview
- Form 990-T filing thresholds
- UBTI calculations and schedules
- Rental income (Schedule A Part IV)
- Unrelated debt-financed income (Schedule A Part V)
- Income from controlled subsidiaries (Schedule A Part VI)
- Exploited activities other than advertising (Schedule A Part VIII)
- Advertising income (Schedule A Part IX)
- Allocation of deductible expenses
- Tax computation and state tax considerations
- Latest guidance on determining separate lines of business activities
- IRS audit triggers leading to increases in UBTI
The panel will discuss these and other relevant topics:
- Definition of UBTI and Form 990-T filing thresholds
- Deduction standards for expenses in UBTI calculations
- Rental income as UBTI
- Siloing unrelated business activities
- Advertising activities
- Unrelated debt-financed income
Learning Objectives
After completing this course, you will be able to:
- Identify what qualifies as UBTI for an exempt organization
- Recognize proper computation of allocable expenses directly connected to the operation of the unrelated trade or business
- Discern preparation errors that lead to the reclassification of UBTI and resultant penalties
- Determine how to identify separate business activities
- Field of Study: Taxes
- Level of Knowledge: Intermediate
- Advance Preparation: None
- Teaching Method: Seminar/Lecture
- Delivery Method: Group-Internet (via computer)
- Attendance Monitoring Method: Attendance is monitored electronically via a participant's PIN and through a series of attendance verification prompts displayed throughout the program
- Prerequisite: Three years+ business or public firm experience at mid-level within the organization, preparing complex tax forms and schedules; supervisory authority over other preparers/accountants. Specific knowledge and understanding of UBTI and UBIT for Form 990 T.
BARBRI, Inc. is registered with the National Association of State Boards of Accountancy (NASBA) as a sponsor of continuing professional education on the National Registry of CPE Sponsors. State boards of Accountancy have final authority on the acceptance of individual courses for CPE Credits. Complaints regarding registered sponsons may be submitted to NASBA through its website: www.nasbaregistry.org.
BARBRI is an IRS-approved continuing education provider offering certified courses for Enrolled Agents (EA) and Tax Return Preparers (RTRP).
BARBRI CE webinars-powered by Barbri-are backed by our 100% unconditional money-back guarantee: If you are not satisfied with any of our products, simply let us know and get a full refund. Contact us at 1-800-926-7926 .
The following has evaluated to null or missing:
==> barbriRedisCacheAPI.get("barbripass", productId) [in template "20096#20121#2885355" at line 5, column 77]
----
Tip: If the failing expression is known to legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)??
----
----
FTL stack trace ("~" means nesting-related):
- Failed at: response = barbriRedisCacheAPI.get("b... [in template "20096#20121#2885355" at line 5, column 66]
---- 1<#assign productId = ''/> 2 <#if (productID.getData())?? && productID.getData()?has_content> 3 <#assign productId = productID.getData() /> 4 </#if> 5 <#assign response = barbriRedisCacheAPI.get("barbripass", productId) 6 json = jsonFactoryUtil.createJSONObject(response) 7 /> 8 9 <div class="card"> 10 <div class="card-body"> 11 <div class="row justify-content-between align-items-center"> 12 <div class="col-auto col-sm-auto"> 13 <div class="btn cle_btn" id="modalPassShortName"><#if (passName.getData())??>${passName.getData()}</#if></div> 14 </div> 15 <div class="col-auto col-sm-auto pl-lg-0"> 16 <span class="sale-price" id="modalPassPrice">$${json.pricebook?replace(",", "")?number?string("#,##0.00")}</span> 17 </div> 18 </div> 19 <div class="small_heading_area" id="modalPassFullName"><#if (title.getData())??>${title.getData()}</#if></div> 20 <p><#if (unlimitedText.getData())??>${unlimitedText.getData()}</#if>:</p> 21 <ul class="common-list disc_list paddNone"> 22 <#if (benefits.getData())??> 23 ${benefits.getData()} 24</#if> 25 </ul> 26 </div> 27 <div class="btn-float"> 28 <div class="premium-cle-pass cart-item"> 29 <input type="hidden" class="product-id" value="${productId}"> 30 <input type="hidden" class="product-name" value="${json.name}"> 31 <input type="hidden" class="pass-value" value="${passName.getData()}"> 32 <input type="hidden" class="product-price" value="${json.pricebook}"> 33 <input type="hidden" class="passAccessLengthMonths" value="${json.passAccessLengthMonths}"> 34 <input type="hidden" class="product-pass" value="family"> 35 <input type="hidden" class="product-expireDate" value=""> 36 37 <button 38 class="btn pc_theme_btn btn-primary btn_maxwidth_xxl_large add-to-cart" 39 aria-label="Buy Now" 40 data-redirect-checkout="true" 41 > 42 <span class="material-symbols-rounded"> shopping_cart </span> 43 Buy Now 44 </button> 45 </div> 46 </div> 47 </div> 48 49 <script> 50$(document).on('click', '.add-to-cart', function () { 51 let monthsToAdd = parseInt($(".passAccessLengthMonths").val()); 52 let currentDate = new Date(); 53 let futureDate = new Date(currentDate); 54 // Add months dynamically 55 futureDate.setMonth(futureDate.getMonth() + monthsToAdd); 56 57 // Handle overflow (e.g., Jan 31 + 1 month) 58 if (futureDate.getDate() !== currentDate.getDate()) { 59 futureDate.setDate(0); // last day of previous month 60 } 61 62 // Format as MM/DD/YYYY 63 function formatDateMMDDYYYY(date) { 64 let mm = String(date.getMonth() + 1).padStart(2, '0'); 65 let dd = String(date.getDate()).padStart(2, '0'); 66 let yyyy = date.getFullYear(); 67 return mm + '/' + dd + '/' + yyyy; 68 } 69 $(".product-expireDate").val(formatDateMMDDYYYY(futureDate)); 70 71 // Then close the modal 72 $('.single_option').modal('hide'); 73 }); 74</script> The following has evaluated to null or missing:
==> barbriRedisCacheAPI.get("barbripass", productId) [in template "20096#20121#2885355" at line 5, column 77]
----
Tip: If the failing expression is known to legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)??
----
----
FTL stack trace ("~" means nesting-related):
- Failed at: response = barbriRedisCacheAPI.get("b... [in template "20096#20121#2885355" at line 5, column 66]
---- 1<#assign productId = ''/> 2 <#if (productID.getData())?? && productID.getData()?has_content> 3 <#assign productId = productID.getData() /> 4 </#if> 5 <#assign response = barbriRedisCacheAPI.get("barbripass", productId) 6 json = jsonFactoryUtil.createJSONObject(response) 7 /> 8 9 <div class="card"> 10 <div class="card-body"> 11 <div class="row justify-content-between align-items-center"> 12 <div class="col-auto col-sm-auto"> 13 <div class="btn cle_btn" id="modalPassShortName"><#if (passName.getData())??>${passName.getData()}</#if></div> 14 </div> 15 <div class="col-auto col-sm-auto pl-lg-0"> 16 <span class="sale-price" id="modalPassPrice">$${json.pricebook?replace(",", "")?number?string("#,##0.00")}</span> 17 </div> 18 </div> 19 <div class="small_heading_area" id="modalPassFullName"><#if (title.getData())??>${title.getData()}</#if></div> 20 <p><#if (unlimitedText.getData())??>${unlimitedText.getData()}</#if>:</p> 21 <ul class="common-list disc_list paddNone"> 22 <#if (benefits.getData())??> 23 ${benefits.getData()} 24</#if> 25 </ul> 26 </div> 27 <div class="btn-float"> 28 <div class="premium-cle-pass cart-item"> 29 <input type="hidden" class="product-id" value="${productId}"> 30 <input type="hidden" class="product-name" value="${json.name}"> 31 <input type="hidden" class="pass-value" value="${passName.getData()}"> 32 <input type="hidden" class="product-price" value="${json.pricebook}"> 33 <input type="hidden" class="passAccessLengthMonths" value="${json.passAccessLengthMonths}"> 34 <input type="hidden" class="product-pass" value="family"> 35 <input type="hidden" class="product-expireDate" value=""> 36 37 <button 38 class="btn pc_theme_btn btn-primary btn_maxwidth_xxl_large add-to-cart" 39 aria-label="Buy Now" 40 data-redirect-checkout="true" 41 > 42 <span class="material-symbols-rounded"> shopping_cart </span> 43 Buy Now 44 </button> 45 </div> 46 </div> 47 </div> 48 49 <script> 50$(document).on('click', '.add-to-cart', function () { 51 let monthsToAdd = parseInt($(".passAccessLengthMonths").val()); 52 let currentDate = new Date(); 53 let futureDate = new Date(currentDate); 54 // Add months dynamically 55 futureDate.setMonth(futureDate.getMonth() + monthsToAdd); 56 57 // Handle overflow (e.g., Jan 31 + 1 month) 58 if (futureDate.getDate() !== currentDate.getDate()) { 59 futureDate.setDate(0); // last day of previous month 60 } 61 62 // Format as MM/DD/YYYY 63 function formatDateMMDDYYYY(date) { 64 let mm = String(date.getMonth() + 1).padStart(2, '0'); 65 let dd = String(date.getDate()).padStart(2, '0'); 66 let yyyy = date.getFullYear(); 67 return mm + '/' + dd + '/' + yyyy; 68 } 69 $(".product-expireDate").val(formatDateMMDDYYYY(futureDate)); 70 71 // Then close the modal 72 $('.single_option').modal('hide'); 73 }); 74</script> The following has evaluated to null or missing:
==> barbriRedisCacheAPI.get("barbripass", productId) [in template "20096#20121#2885355" at line 5, column 77]
----
Tip: If the failing expression is known to legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)??
----
----
FTL stack trace ("~" means nesting-related):
- Failed at: response = barbriRedisCacheAPI.get("b... [in template "20096#20121#2885355" at line 5, column 66]
---- 1<#assign productId = ''/> 2 <#if (productID.getData())?? && productID.getData()?has_content> 3 <#assign productId = productID.getData() /> 4 </#if> 5 <#assign response = barbriRedisCacheAPI.get("barbripass", productId) 6 json = jsonFactoryUtil.createJSONObject(response) 7 /> 8 9 <div class="card"> 10 <div class="card-body"> 11 <div class="row justify-content-between align-items-center"> 12 <div class="col-auto col-sm-auto"> 13 <div class="btn cle_btn" id="modalPassShortName"><#if (passName.getData())??>${passName.getData()}</#if></div> 14 </div> 15 <div class="col-auto col-sm-auto pl-lg-0"> 16 <span class="sale-price" id="modalPassPrice">$${json.pricebook?replace(",", "")?number?string("#,##0.00")}</span> 17 </div> 18 </div> 19 <div class="small_heading_area" id="modalPassFullName"><#if (title.getData())??>${title.getData()}</#if></div> 20 <p><#if (unlimitedText.getData())??>${unlimitedText.getData()}</#if>:</p> 21 <ul class="common-list disc_list paddNone"> 22 <#if (benefits.getData())??> 23 ${benefits.getData()} 24</#if> 25 </ul> 26 </div> 27 <div class="btn-float"> 28 <div class="premium-cle-pass cart-item"> 29 <input type="hidden" class="product-id" value="${productId}"> 30 <input type="hidden" class="product-name" value="${json.name}"> 31 <input type="hidden" class="pass-value" value="${passName.getData()}"> 32 <input type="hidden" class="product-price" value="${json.pricebook}"> 33 <input type="hidden" class="passAccessLengthMonths" value="${json.passAccessLengthMonths}"> 34 <input type="hidden" class="product-pass" value="family"> 35 <input type="hidden" class="product-expireDate" value=""> 36 37 <button 38 class="btn pc_theme_btn btn-primary btn_maxwidth_xxl_large add-to-cart" 39 aria-label="Buy Now" 40 data-redirect-checkout="true" 41 > 42 <span class="material-symbols-rounded"> shopping_cart </span> 43 Buy Now 44 </button> 45 </div> 46 </div> 47 </div> 48 49 <script> 50$(document).on('click', '.add-to-cart', function () { 51 let monthsToAdd = parseInt($(".passAccessLengthMonths").val()); 52 let currentDate = new Date(); 53 let futureDate = new Date(currentDate); 54 // Add months dynamically 55 futureDate.setMonth(futureDate.getMonth() + monthsToAdd); 56 57 // Handle overflow (e.g., Jan 31 + 1 month) 58 if (futureDate.getDate() !== currentDate.getDate()) { 59 futureDate.setDate(0); // last day of previous month 60 } 61 62 // Format as MM/DD/YYYY 63 function formatDateMMDDYYYY(date) { 64 let mm = String(date.getMonth() + 1).padStart(2, '0'); 65 let dd = String(date.getDate()).padStart(2, '0'); 66 let yyyy = date.getFullYear(); 67 return mm + '/' + dd + '/' + yyyy; 68 } 69 $(".product-expireDate").val(formatDateMMDDYYYY(futureDate)); 70 71 // Then close the modal 72 $('.single_option').modal('hide'); 73 }); 74</script> The following has evaluated to null or missing:
==> barbriRedisCacheAPI.get("barbripass", productId) [in template "20096#20121#2885355" at line 5, column 77]
----
Tip: If the failing expression is known to legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)??
----
----
FTL stack trace ("~" means nesting-related):
- Failed at: response = barbriRedisCacheAPI.get("b... [in template "20096#20121#2885355" at line 5, column 66]
---- 1<#assign productId = ''/> 2 <#if (productID.getData())?? && productID.getData()?has_content> 3 <#assign productId = productID.getData() /> 4 </#if> 5 <#assign response = barbriRedisCacheAPI.get("barbripass", productId) 6 json = jsonFactoryUtil.createJSONObject(response) 7 /> 8 9 <div class="card"> 10 <div class="card-body"> 11 <div class="row justify-content-between align-items-center"> 12 <div class="col-auto col-sm-auto"> 13 <div class="btn cle_btn" id="modalPassShortName"><#if (passName.getData())??>${passName.getData()}</#if></div> 14 </div> 15 <div class="col-auto col-sm-auto pl-lg-0"> 16 <span class="sale-price" id="modalPassPrice">$${json.pricebook?replace(",", "")?number?string("#,##0.00")}</span> 17 </div> 18 </div> 19 <div class="small_heading_area" id="modalPassFullName"><#if (title.getData())??>${title.getData()}</#if></div> 20 <p><#if (unlimitedText.getData())??>${unlimitedText.getData()}</#if>:</p> 21 <ul class="common-list disc_list paddNone"> 22 <#if (benefits.getData())??> 23 ${benefits.getData()} 24</#if> 25 </ul> 26 </div> 27 <div class="btn-float"> 28 <div class="premium-cle-pass cart-item"> 29 <input type="hidden" class="product-id" value="${productId}"> 30 <input type="hidden" class="product-name" value="${json.name}"> 31 <input type="hidden" class="pass-value" value="${passName.getData()}"> 32 <input type="hidden" class="product-price" value="${json.pricebook}"> 33 <input type="hidden" class="passAccessLengthMonths" value="${json.passAccessLengthMonths}"> 34 <input type="hidden" class="product-pass" value="family"> 35 <input type="hidden" class="product-expireDate" value=""> 36 37 <button 38 class="btn pc_theme_btn btn-primary btn_maxwidth_xxl_large add-to-cart" 39 aria-label="Buy Now" 40 data-redirect-checkout="true" 41 > 42 <span class="material-symbols-rounded"> shopping_cart </span> 43 Buy Now 44 </button> 45 </div> 46 </div> 47 </div> 48 49 <script> 50$(document).on('click', '.add-to-cart', function () { 51 let monthsToAdd = parseInt($(".passAccessLengthMonths").val()); 52 let currentDate = new Date(); 53 let futureDate = new Date(currentDate); 54 // Add months dynamically 55 futureDate.setMonth(futureDate.getMonth() + monthsToAdd); 56 57 // Handle overflow (e.g., Jan 31 + 1 month) 58 if (futureDate.getDate() !== currentDate.getDate()) { 59 futureDate.setDate(0); // last day of previous month 60 } 61 62 // Format as MM/DD/YYYY 63 function formatDateMMDDYYYY(date) { 64 let mm = String(date.getMonth() + 1).padStart(2, '0'); 65 let dd = String(date.getDate()).padStart(2, '0'); 66 let yyyy = date.getFullYear(); 67 return mm + '/' + dd + '/' + yyyy; 68 } 69 $(".product-expireDate").val(formatDateMMDDYYYY(futureDate)); 70 71 // Then close the modal 72 $('.single_option').modal('hide'); 73 }); 74</script> Related Courses
Learn Boating Classroom Webinar
Saturday, July 11, 2026
1:00 PM E.T.
Learn Softball Classroom Webinar
Saturday, July 11, 2026
1:00 PM E.T.
Learn Central Air Classroom Webinar
Saturday, July 11, 2026
1:00 PM E.T.
Learn 4 Squares
Saturday, July 11, 2026
1:00 PM E.T.
Recommended Resources
Building Your Book: Strategies to Secure Long-Term Success
- Business & Professional Skills
- Career Advancement
- Talent Development