Technology, Accessibility, and the Child Tax Credit

How we built a portal that makes the Child Tax Credit more accessible to people with low or no incomes
  • Principal Software Engineer,
    Code for America
  • Staff Software Engineer,
    Code for America
  • Senior Product Manager,
    Code for America
GetCTC on mobile phone screen asking client if they would like to add a child or family member who supported them in 2020

Starting in July, around 39 million families began receiving monthly payments of the Advance Child Tax Credit (AdvCTC), an expanded tax credit that pays 88% of American families up to $300 per child each month. To help make sure that the credit gets to those who need it most—families and individuals with low or no incomes—we recently debuted GetCTC, a simple tax filing portal that helps people claim the Child Tax Credit and any stimulus checks they might have missed. The portal is designed for people at or below the required income threshold for filing taxes every year—meaning it’s for individuals who make less than $12,400 per year or couples who make less than $24,800. Often, people and families in this scenario don’t file yearly taxes, so their information isn’t in the IRS system and they won’t receive the Child Tax Credit automatically. 

When the IRS released a new revenue procedure to allow people with low or no incomes to file simplified returns to claim the Advance Child Tax Credit and the stimulus payments, we knew that we could build an accessible GetCTC portal by utilizing insights from GetYourRefund, our free tax filing service run in partnership with Volunteer Income Tax Assistance (VITA) sites nationally. Through our work with GetYourRefund clients, we’ve learned a lot about best practices for communicating and building tools with people who haven’t filed taxes in a while. We know that many people who don’t file taxes don’t have access to a desktop computer, for instance, so everything needs to be mobile-friendly. The learnings we’ve gathered about our clients shaped the product and tech decisions that undergird the portal you see now. Here’s a peek behind the curtain of our process, and some of the decisions we made along the way.

The GetCTC homepage

What we didn’t know was whether we could e-file returns directly with the IRS. Therefore, GetCTC started with a “spike”—a product development process that involves focused time to research and experiment with possible solutions, without having to do in depth planning and scoping. By starting this way, we identified the challenges we’d have to overcome to build this portal before beginning in earnest to build it. Unlike with GetYourRefund, where we help clients prepare their tax return and then send them to VITA volunteer tax filers for the actual filing, we wanted to become an e-filer so that GetCTC could e-file simplified returns as specified in the revenue procedure required for the Child Tax Credit. With GetYourRefund, we see that many families with low income have complex tax filing cases and need the assistance of VITA tax prep volunteers. With the Advanced Child Tax Credit, we saw an opportunity to submit clients’ data directly to the IRS if they qualify for this simplified revenue procedure, saving VITA capacity and still delivering help to clients.

We quickly learned that we’d have technical challenges as well as administrative ones. Our spike revealed that becoming an e-filer would require using the IRS’s sample code in Java, even though our product is written in Ruby. We’d have to do administrative work to complete the e-filer application to show we meet the IRS security and privacy requirements, and we had to demonstrate to the IRS that we could successfully e-file correct tax returns in a test environment using the revenue procedure before we would be allowed to file any real client returns. To build that integration, we had to get creative and meticulous—the IRS documentation alone was hundreds of pages, and we had a short timeline to get this done and done right.

One of the first challenges we faced was learning how to properly format data to successfully transmit client information to the IRS. The IRS requires that we submit tax data in a standardized format, a ZIP file containing two XML files. However, constructing the exact right contents is difficult, especially when we didn’t always know the right IRS publication to reference or which document to review (there were quite a few, and we didn’t get access to all of them at once!) One gem is this nicely-formatted guide to Fixing your XML Errors. In quite a few cases, an XML field was marked optional in the schema, but was required in practice by a business rule. We started with auto-generated XML files from the schema definitions in RubyMine. We leveraged the IRS’s Java sample code in our Ruby app so that our full team, who specializes in Ruby, could contribute to and maintain the integration. 

Another challenge was sending this data to the IRS. We began work on that immediately. The IRS provides a desktop Windows application which can submit tax data. We used it to begin a process of trial and error using the IRS’s e-filing test environment. The error messages from our test XML file submissions allowed us to correct our submissions until finally one test submission was successful. In one case, we needed to use a debugger to skip over a crash in the desktop app. Finally, we took apart the IRS e-filing desktop application to see what parts we could borrow, and we created the smallest possible Java IRS e-file app that our Ruby codebase could launch. We were able to integrate so quickly because we began attempting to submit data to the IRS even before we knew what to submit.

GetCTC.org screeens on iPhone asking

Though the process was challenging, we leveraged our team’s expertise throughout and devised work processes that adapted the IRS’s methods to suit our strengths. Our e-filing iteration process resulted in a tool that makes it easier for clients to both file directly with the IRS and troubleshoot any returns that might be rejected. To start, we helped clients resolve their rejected returns to learn about reject reasons and understand how to best resolve issues and answer client questions. Now, clients can login and resolve issues themselves, freeing up time for our tax filing volunteers and allowing them to prioritize complex cases. We’re especially grateful to the IRS’s Modernized e-File Help Desk team for answering our very, very frequent questions!

When it came time to launch a test version of GetCTC, we first created a form for VITA partners to use with existing tax prep clients. Volunteers worked with clients to input their information into our Hub case management system and then filed simplified returns for them, a step that helped us gauge client interest, refine our triage process for assessing eligibility, and set up the right input fields we would eventually need for e-filing. We then completed the IRS’s e-filing test that ran us through scenarios using our intake form to ensure our setup was working properly end to end—and at the same time, we did user research and worked with partner organizations to make sure the portal was accessible and easily understandable for our clients.  

Creating a new intake flow was straightforward because we were able to almost entirely leverage the flow we’ve been working on for two tax seasons on GetYourRefund. GetCTC runs on the same servers as GetYourRefund; it’s the same codebase and the same deployment. We are able to configure Rails routes to separate the two sites, meaning we didn’t have to spend a bunch of time rebuilding the same basic features (like an admin portal or stylesheets) that are shared between them. It also means we can share monitoring, deployment, and other systems work between GetYourRefund and GetCTC.

Completion screen on mobile phone telling client they have successfully filed for the Child Tax Credit

To date, we’ve successfully e-filed more than a thousand returns through our beta launch, and we look forward to opening the GetCTC to more folks who need a simple way to claim the benefits they deserve. The expansion of the Child Tax Credit is expected to cut child poverty nearly in half—but it can only do that if we’re actively working to include those who might otherwise miss out on a benefit into the tax system. In order to create a more equitable future, we need to listen to those who have been excluded from this system and build tools to meet them where they’re at—and then we have to get more feedback, iterate, and revise to ensure we’re always improving our ability to meet these communities’ needs. That’s exactly what we’ll be doing with the GetCTC portal over the next few months, so stay tuned for more behind-the-scenes content about our process and vision for a future where every family can attain financial stability.

Related stories

Our Top Tips for Creating Integrated Public Benefits Systems
December 16, 2022
The Five Basics of Texting for a Human-Centered Safety Net
November 2, 2022
White House Invites Code for America to Participate in Conference on Hunger, Nutrition, and Health
September 26, 2022