Release Notes

A steady stream of YNAB improvements for your reading pleasure. Grab some tea. Curl up with a Snuggy® and enjoy.

YNAB Is Always Improving
YNAB Is Always Improving

Web Release Notes: March 5, 2020

Uncovering and fixing bugs here at YNAB is kind of like an episode of Law & Order…but more like if Law & Order was done using webcam footage and it was just people thinking a lot and typing and clicking on things on their computers. But I would argue that some of the bugs we find and fix are just as intense as some of the crimes that they solve on Law & Order.

In the YNAB bug-fixing system, YNABers are represented by two separate, yet equally important groups: the Support Specialists who investigate potential issues and the Developers who prosecute fix the bugs. These are their stories:


  • We tracked down an interesting bug that seemed to haunt us from our past. Our sleuthing Support Specialist, Robert, uncovered a doozy: When editing a Build Your Savings / Target Balance (By Date) or a Plan Your Spending / By Date goal that has a target date in a prior year, YNAB would not display that year in the year dropdown, but instead pre-select the current year. Brady, threw the book at this bug and we were able to fix this issue for good. Sweet justice.
  • It was a cold Tuesday morning in January. Nothing seemed too out of the ordinary. Just another day of helping YNABers gain total control of their money in the YNAB Support Queue™. Suddenly, a bug. Robert stepped onto the scene of the crime bug to find that YNAB was accidentally closing modals if a user clicked within it, dragged their mouse outside of it and let go. With all of the evidence of this bug that had been brought to light, our hard-nosed Developer, Kyle made short work of this nasty bug. YNAB now only closes the modal if the user explicitly clicks outside the modal to close it. We rest our case…meaning we closed the issue in GitHub, but still.
  • On an undercover assignment (it was cold that morning, so he had a blanket) our Support Specialist, Dan found a small trace of users getting stuck while going through the welcome onboarding flow in YNAB. “Put on another pot of coffee. This may take awhile, team” Dan uttered. After extensive research set to an ominous music montage, he found that If a user set a filter or specified a search before completing the “Schedule a Transaction” onboarding step, they could get stuck on this onboarding step. Brady, our Developer, found that this bug couldn’t handle the truth, and put this bug away for life (I realize that the “A Few Good Men” quote has very little business being in this Law & Order fan-fiction, but it seemed appropriate).

API News

We’ve added some validation for payee_name when creating or updating a transaction through the API. The payee_name can no longer begin with any of the following: (Transfer* :, Starting Balance, Manual Balance Adjustment, Reconciliation Balance Adjustment). This may seem like a bummer when you’re buying a gymnastic balance beam from your favorite store, “Starting Balance,” but we have to draw the line somewhere.

*Note: While we will allow a payee_name beginning with the word “transfer” (or “Transfer”), we won’t allow it if it is followed by “ :” (i.e. “Transfer :”). This is to differentiate it from our standard transfer items.

Web Release Notes: March 3, 2020

API News

Can you do the splits? What am I saying? Of course you can…or, at least now you can. We’ve made our Public API even more flexible because it now supports creating split transactions by specifying a subtransactions array.

curl -H "Authorization: Bearer $API_ACCESS_TOKEN" \ \
-H "Content-Type: application/json" -X POST --data-binary @- << EOF
      "memo":"This is a split",
            "payee_name":"Split payee",
            "memo":"Split 1"
            "memo":"Split 2"
Hooray for split(s)…transactions!!!

Web Release Notes: February 27, 2020

We fixed some rare, but important bugs!

  • Let’s say you have a split transaction, and one of the split entries is a transfer to a “tracking account”, and you were to go into the tracking account and change the amount. With me so far? Well, we used to let you do that. Unfortunately, that could throw off the amount of the entire split transaction, which would cause other trouble down the line. So, we don’t let you do that anymore. If you need to change the amount of that transfer, do it from the split transaction instead please.
  • Here’s another one: Let’s say you moved money between “To Be Budgeted” and another category in the iOS app in January, your very first month of blissful budgeting! Now let’s say you didn’t like that month and deleted all the data because you finally figured this stuff out and wanted February to be your “first month”. Well… we wouldn’t let you have that Win. We’d always remind you of that time you spent in January. Specifically on the web app, reports would still show January, even though you had no data in there. We’ve corrected this issue with the data and fixed the bug in iOS that caused us to have the bad data. (That iOS fix will roll out at a later date).
  • The “Spent Last Month” Quick Budget button was incorrectly incorporating activity from Credit Card Payment categories when viewing all or multiple categories. No more! Now, “Spent Last Month” will only include regular category spending and not count Credit Card Payment activity as “spending”.
  • PS: A developer wrote these release notes instead of our regular, much funnier author. You will be relieved to know that our release notes will once again be full of animated gifs and much funnier jokes for our release next Tuesday!

Web Release Notes: February 25, 2020

So, I’ve been trying to get the devs here to make it so that when you search in YNAB, it plays U2’s “Still Haven’t Found What I’m Looking For” in the background. But I guess there are potential copyright issues…and I’ll concede that the song might wear on you, especially if you really can’t find what you’re looking for. Instead, though, this release makes a few improvements so that you can find what you’re looking for:

  • Previously, if you searched for some text that included a number (i.e. “2020 Ultimate Muffin Party”) we would also return transactions that had a matching amount (i.e. $2,020.00). That was a little presumptuous of us. Jeez, YNAB, not everything needs to be about money…sometimes it can just be about muffins, OK.
  • Before this update, searching for memos that included colons “:” would not work. Now they work, and you can finally search for all of the movie sequels you have purchased by their full names…The Fast and the Furious: Tokyo Drift, Home Alone 2: Lost In New York, City Slickers II: The Legend of Curly’s Gold…we got you.

Lastly, the modal (popup) for adding a sub category wasn’t opening in the correct place. It was more of a failed prototype for a game we like to call Whack-a-Modal. But now, it will show up in the right place.

Web Release Notes: February 20, 2020 - Part 2

UPDATE: We did an additional hotfix (i.e. this fix was NOT cold) this afternoon where we fixed a bug that occurred when users were navigating from the Net Worth report to another report.

Web Release Notes: February 20, 2020

Today we released a few stability fixes having to do with how we handle credit cards on the backend. Also, is Ember the color or your energy? Because we upgraded to Ember 3.2, which includes significant performance and security improvements throughout the app.

There are two improvements that you’ll see in your Accounts screen as well. One of them is pretty straight-forward and one of them might require you to put on another pot of coffee to explain. We might be here awhile:

We had a little currency po-tay-to v. po-tah-to thing going on that we fixed. But first, no one says “po-tah-to.” If you hear someone say that, just know that you may be talking with some kind of incognito alien character straight out of Men In Black. You’ve been warned. But, onto the currency fix:

For a lot of currencies (like USD), using “.” as a separator is the standard. Some use a “,” (like Euros) but for others, using a “/” is the way to go. Now, was I able to successfully Google which currency uses a “/”? Nope. But they exist, and now YNAB will allow users to use this formatting ($99/99) in the register!

Yes, we’re using the dollar sign in this example, but pretend it’s like whatever they use in Luxembourg, but also pretend like they don’t use Euros there.

Lastly, we made a fix to split transactions. And if it seems like we’re always making fixes to split transactions, it’s because we are. They’re complicated. If anyone out there is thinking of making a YNAB clone, and you decide that you’re going to add split transaction functionality…good night and good luck.

Previously, if you created a split transaction with a transfer sub-transaction, then used the Edit menu to categorize the split, it would orphan the transfer transaction. Now, categorizing will skip over the transfer transactions unless it’s to a tracking account. Are you confused? I am. But I have faith that there are YNAB power users out there right now fist-pumping and doing the Macarena because we finally fixed this bug. You are welcome, YNAB super-geniuses of the world.

Web Release Notes: February 13, 2020

Negative category pills are red
Our logo is blue (Sky Blue – #85C3E9)
Oh, hey, check out this fix we’ve just released for you:

Remember that weird extraneous line under the checkbox on the Include in Payee List option within “Manage Payees”? No? You didn’t? Yeah, neither did Kyle, but Alan sure did. Kyle fixed it, Alan! Jeez. Alan. Happy Valentine’s Day!!!….Alan.

Web Release Notes: February 6, 2020

They say that “the devil is in the details,” but they also say that “the devil went down to Georgia,” so unless that dude is cloning himself (we’re all in trouble, if that’s the case) my money is on Georgia. Because this week’s release gets well into the details, and the devil is definitely not in those details, but you know what is? Split transactions. Here are the details on those details:

Previously, if you had a split transaction with a search that partially matched one of the sub-transactions of the split, the bulk Edit > Categorize action would unsplit the transaction and delete all your sub-transactions. Now it only categorizes the transactions you have selected and will only unsplit the transaction if you have all of the sub-transactions of the split selected.

Warning: Budgeting professional at work here. Do NOT change your “Water” to “Electric.”
The results may shock you.

P.S. Look alive, Georgia…[fiddle starts playing]

Web Release Notes: January 24, 2020

Back when YNAB was just a spreadsheet, we only had one developer…and that was just our CEO/Founder, Jesse, creating fancy formulas and the sweetest macros Clippy’s eyes had ever beheld. But nowadays, we have dozens of developers and product designers. 

We have mobile developers for iOS and Android. We have developers who focus on the backend (coding in Ruby) our database (using SQL) and the frontend (using JavaScript, HTML and CSS). Most of our non-mobile developers are “full stack” developers. This normally means that they code in the backend, frontend and database.

In today’s release, one of our full stack devs, Kyle, got to flex his full stack dev chops (can one “flex” a chop?) outside of his normally front end world. Kyle fixed things so that, now, when creating an account for a credit card, if a user plans to pay a specific amount each month, YNAB will create a Monthly goal instead of a By Date goal. Here was the first review item that got checked off to complete this fix:

We also shipped a fix to the running balance feature that we released a few months ago. On an account with a large number of transactions with the same date, moving one of those transactions to the future (to make it a scheduled transaction) was breaking the running balances calculation. But we fixed this issue!…Hey YNABers, is your balance running? After this fix, you might want to go catch it! *rimshot*

Web Release Notes: January 21, 2020

Today we’ve released a handful of infrastructural changes along with a nice, little fix to our API…which, have you heard of our API? It’s pretty neat. It allows developers to do cool stuff like create connections for Australian bank accounts or get your Roomba to chase you around your house when you don’t budget enough in your household expenses category (this might not be possible). Basically, it allows developers outside of YNAB to create tools that interact with other public-facing API’s. Here’s what we fixed with the YNAB API in today’s release:

API News

When using the PATCH on the /budgets/{budget_id}/transactions endpoint to update multiple transactions, we allow you to specify either the import_id or the id of the transaction to update. But, if you specified an import_id and null for the id (rather than omitting id from the object) we would not save the transaction. Fixed!

Web Release Notes: January 14, 2020

Have you ever been sitting in a waiting room somewhere when you notice a picture is just slightly off center, but you didn’t want to stand up in front of a room full of people and adjust the picture so you just sat with your head tilted until it was your turn? Well, if you split a transaction the “remove” button was sort of like that off-centered picture you just couldn’t adjust.  We fixed it, so now there’s no need to tilt your head to keep the button aligned. 

Also, before today we made clicking the “c” button to clear a transaction really unclear–you had to click right on it to get the transaction to change clear statuses. Now, we fixed it so when you click near the symbol in that column it clears. No more squinting and fighting with your mouse to get it to work. Isn’t that perfectly clear? 

Finally, if you’ve ever used YNAB on a small screen or in a smaller window and struggled to scroll on a report and noticed a scrollbar missing or disappearing, we fixed that too, because that’s how we scroll.

Web Release Notes: January 9, 2020

A lot of our weekly releases are centered around bug-fixing and polishing to make YNAB incrementally better every week. Part of the challenge of some of these smaller fixes is determining user intent, which, if you think about it, can be a tricky thing to understand. No two users are the same. Green means “go,” but is green the best color for color blind users? The “Call To Action” or “Happy Path” is always on the right…unless some apps decide to put it on the left (some do). So, our goal is to communicate as clearly as possible in our UI, and also add guardrails to make sure you intended to do the thing you just did:

In this release, we made it so that the “Enter Now” option (in the Edit menu) is now disabled when editing a transaction to prevent accidentally editing a scheduled transaction you are entering now. This is because users would accidentally click on a scheduled transaction twice (going into edit mode), then using “Enter Now” they would fire off the transaction and finally save the scheduled transaction they were editing. So, the schedule transaction gets saved with the old date rather than updating to the next occurrence.

If you’re reading these release notes, we’re hoping that you intend to use YNAB forever. That makes sense, right. You love us, right? Right? Well, if you don’t and you decide to delete your account, we’ll now give you a prompt to disable Two-Step Verification (if you’ve enabled it…which, please do!). This was already necessary but we didn’t make it obvious.

API News

We know you’ve all been clamoring for more error types…wait, what? You haven’t? Oh, that might make sense. Well, we needed to add a new error type to our list. This new 503 error could be returned if we need to temporarily disable access to the API.

Web Release Notes: January 7, 2020

Picture this: It’s 2020. You’re in your flying car and you’re talking to your robot companion helper and you go to enter some account notes and also make some recurring goals to save for your Mars vacation in YNAB….you know, ‘cause it’s 2020 (psst…it’s the FUTURE). But then you realize three things:

  1. When you try to do a line break in the Account Notes section in YNAB, pressing shift + enter doesn’t do a line break, as expected. Ugh (and you were using your holographic keyboard, too…so disappointing).
  2. The “Make Recurring” button display looks a little off in the UI. C’mon!
  3. You don’t actually own a flying car and literally every science fiction author from the past was WAY off about 2020. But we do have Animojis that can make us look like a talking shark when we’re FaceTiming…so, we’re close.

The good news is that this release fixes those other two issues, so 2020 is looking OK already.

Web Release Notes: December 31, 2019

Oh, man. 2020, y’all. It’s coming. Tomorrow. So, tonight the main question on everyone’s mind is “should old acquaintance be forgot?”…you know, like, from the song that everyone sings on New Year’s Eve and is kind of unclear what it’s talking about? 

Well, we can’t answer that question (we have no idea who the old acquaintance in question is…maybe we forgot them already?) but we didn’t forget to fix a small bug that occurred where if you had a By Date Goal and the target date had already passed, we weren’t letting you save changes to a category. We fixed it, because the past is the past…and speaking of: we hope your 2019 was amazing. 

Let’s make 2020 the year you reach all those lofty #moneygoals! For Auld Lang Syne, fellow YNABers, For Auld Lang Syne!!!!

Web Release Notes: December 17, 2019

A developer at YNAB brings you the following notes.

  • When managing payees, deleting.a payee will no longer reset the scroll position back to the top
  • Minor text fixes
  • A wild confirmation dialog appears when you use a quick budget action and don’t have any categories selected. Doing this performs the action for all categories, but the dialog asks you to confirm that you really, really meant to click that button.
  • We apologise for the lack of humour in these release notes. Those responsible have been sacked.

Web Release Notes: December 10, 2019

You: Locked in a noble battle to control holiday spending. You roll with the punches and you hit your year-end budgeting goals.

Us: Engaged in a never-ending quest to pursue ultimate app performance. In this quest, though, we introduced a few strange bugs around scheduled transactions in the register. But after our valiant efforts, you shouldn’t see any of those now. We also rolled with a different set of punches here. 

That same code change also fixed a bug where the cleared icon was not being shown when editing a transaction. Instead the scheduled (calendar) icon was being shown.

All of us: Let us vanquish our foes together…and THE TROGDOR COMES IN THE NiiiiiGHT!!!!

Web Release Notes: December 3, 2019

Ah. Can you feel it in the air? That crisp December air is setting in and we all know what that means…a YNAB bug-fix release! Just us? Fine. I’m not sure I even know what “crisp” air is supposed to smell/feel/taste like. It’s air. Not an apple. Are people trying to eat air? Don’t eat air. It’s just a thing we say. Anyway, here’s a few nice, little bug-fixes to our onboarding:

  • We fixed an issue where “Adding a Savings Account” onboarding was not triggering properly. You could say we “saved” the day here…but should you say that?
  • We made it so that when a new user tries to exit out of onboarding by pressing the ESC key, it no longer throws an error. It also doesn’t kick an error or do anything having to do with an error. Just wanted to make sure we’re clear that we didn’t do a half-measure here.

Web Release Notes: November 26, 2019

Here we are just days before Thanksgiving in the U.S. and only a few days away from the end of our last 6-week development cycle of 2019 here at YNAB. We have a lot to be thankful for and I don’t want to do any kind of year-end review right now (we’ve got several more releases coming out before the end of the year) but I want to just say that I’m thankful for bug-fixes and the care and detail that goes into coding and testing these fixes to get them out the door.

So, without any further ado (I don’t know if that last bit qualified as “ado,” but I’m going with it) here is the bug-fix that we released today:

  • When new users go through onboarding, we teach them about setting goals by having them set a goal for “Software Subscriptions.” However, if the user had deleted that “Software Subscriptions” category before they got to the onboarding step to set a goal, it was causing an error. So, we fixed that.
  • Also, Happy Thanksgiving to all the YNABers in the US!…not a release, but we’re thankful either way.

Web Release Notes: November 21, 2019

You know the feeling: you get a transaction imported into YNAB and you’re like, “who or what is Firfen-Dirfen and what did I buy from them last week that cost me $10.99???…is it Ted Van Firfen-Dirfen’s Lawnmower Emporium, LLC Unlimited?” This is when you need to do some sleuthin’.

Today’s release gives you a nice little Sherlock Holmes-style sleuthin’ tool. We’ve added a copy button to the transaction details to copy the payee “as it appears on your statement.” With this handy button, you can now easily (crosses fingers) search your bank statement online and find the transaction there exactly as it was sent over to YNAB. The game is afoot, my dear Watsons!

Web Release Notes: November 14, 2019

?‍♀️ ⚖️ …coming soon…

Web Release Notes: November 13, 2019

Today’s release contains a fix to issues stemming from Safari’s Dark Mode overriding our default styles. They were turning some of our input text white, when it was on a white background…or, in other words…CAMOUFLAGE! This might be a good thing for hunting, or if you’re a professional chameleon. For input text in a user interface, it’s not great. So, we dechameleonized it. In related news, we invented a new word.

Web Release Notes: November 12, 2019

Listen. We like big budgets and we cannot lie. When you’ve been budgeting with YNAB for awhile and you’re giving dollars jobs, your budget grows. This is a great thing for you and for us. But when budgets start getting really, really big, it can pose a little bit of a problem for programmers to wrangle. Don’t get me wrong. Programmers love wranglin’ and they especially love wranglin’ problems. And this is what our programmers have been up to: wranglin’ big budget problems…and specifically, making bigger budgets faster. In today’s release:

  • We changed how we recompute transaction rows when a user clicks to edit a transaction. We now only change the row that’s being edited currently, which should greatly reduce lag on larger budgets. Ya’ been wrangled, editing transaction lag!
  • Our Code Sheriff™ got into the code and optimized how we handle array sorting in some cases and the changes we made showed a 30% improvement in time-to-load (15.5 seconds to 11 seconds) in one of our benchmark tests. This is a notable increase in speed. Hey, array sorting, ya’ been wrangled!
  • We also fixed a little whoopsy from our last code deployment where logging out from the Accounts screen wasn’t working properly. It might have been our mistake, but either way: WRANGLED!!!!…and yee haw!

Web Release Notes: November 7, 2019

Hmmmm….smell that? Yep. Fall is in the air. We all know what Fall smells like: Turkey, leaves, football, a pumpkin spice latte that slowly turns into a peppermint latte…But Fall at YNAB smells like prepping for some solid improvements. We’re working on things like the running balance column in the transaction list, integrating a new direct import partner and an overall faster YNAB.

Today’s release contains quite a few infrastructural changes in preparation for these bigger releases. They aren’t things you’ll see in your budget today, but they’re just around the corner.

Web Release Notes: October 31, 2019

First of all, HAPPY HALLOWEEN! Boo!…and what not. You’re scared. You get the idea. Today’s release took a little bit of a coding trick to yield a nice, little usability treat. And I realize that Halloween is more of a trick OR treat paradigm, but we felt like, “hey. Why can’t we just change history and turn Halloween on its head by using a trick to yield a treat?” So that’s what we did:

*Please read this release update in the Vincent Price Thriller voice for full effect*

Today’s release is kind of a sweet timesaver (I am going to run this trick or treat thing into the ground). When users experienced a foul error when trying to enter in their password to connect to a bank, they would be asked to re-enter their password (even if the error had to do with reCaptcha). This can be hauntingly painful. So, we’ve now made it so that we will keep the password field populated with the attempted password (in most cases) so that you can re-attempt without having to fiendishly type the whole thing in again, because of a reCaptcha failure or missing digit. Ha Ha Ha Ha ha ha ha *diabolical laughter*…*trails off*

Web Release Notes: October 29, 2019

For most of our releases lately, we’ve been pushing a lot of internal/infrastructural changes. Part of it is because we’re working on bigger features that will be launched in the coming months. But another part of it has to do with the software equivalent of mowing the lawn or getting the oiled changed. Part of what makes YNAB run so smoothly is that we’re constantly updating, pruning, refactoring, brushing, flossing, hydrating, getting our yearly physical and just doing all of the things so that it continues running smoothly AND so we can add amazing new features to a clean codebase (some of those were analogies…or were they?). Anyway, here are a few changes you may notice from today’s release:

  • Made a small change to the menus to make the “Categorize” menu icon match our mobile apps and we also modernized the way we handle the layout (flexbox) to make vertical alignment less messy. No one likes wrangling alignment issues…just try doing page layout in a Word Doc.
  • In our Direct Import flow, we added an empty “No Connections” screen to help with better UX and navigation when using the browser “backwards” and “forwards” navigation. While we did this, we were able to simplify the code, which will help a great deal as we work with new importing partners to make Direct Import even better going forward.

Web Release Notes: October 24, 2019

In our ongoing battle to make bugs a thing of the past*, today’s release squashes two somewhat obscure, but important bugs:

  • We automatically clear transactions created on a Cash account (this makes sense, because there is no bank involved to clear) but when creating a transfer from a non-Cash account to a Cash account, we weren’t clearing that transaction. Not a dealbreaker, because you can always clear it manually, but we value your time, so we fixed this issue and streamlined that for you.
  • Deleting payees can be dicey business, especially when they are tied to transactions. But if a payee is only tied to deleted transactions, then there should be no issues in letting YNABers delete those payees. This wasn’t the case, as YNAB was preventing payees with deleted transactions from being deleted. We fixed this. One might say that we “deleted” the issue of not allowing deletions when deletions were involved. One also might delete that last sentence.

*IMPORTANT: No actual, real-life, non-software bugs were harmed during this release

Web Release Notes: October 16, 2019

You know how sometimes you get so used to saying something out of habit that when the circumstances change slightly, you still say the same thing and it gets a little awkward? Like maybe you’re used to ending calls with your partner or your parents by saying, “K. Love you, bye.” But then, maybe you’re on a call with the city utility company trying to downsize your trash can and you accidentally say, “K. Love you, bye” to the person at the utility company. That’s probably never happened. But it has.

Today’s release fixes something super similar to showing accidental love to a stranger on the other end of the line. Sometimes, when YNABers were trying to link their bank account, we were showing them an error that said that they had failed to login, when, in fact, we were really just trying to tell them that they needed to confirm their email address. We’ve fixed that. And now your need to confirm your email will be clearly communicated, instead of a more generic failure error. Hopefully this will be less awkward. K. Love you, bye.

Web Release Notes: October 15, 2019

This release is comin’ in hot…actually, most of our web releases come in hot. I think it has something to do with Thermodynamics and heat loss from friction in the circuitry. It’s Physics. Don’t ask me for the details, though. Anyway, here’s the new hotness (remember, this is heat in the form of actual physical heat inside the servers AND from the hotness of squashed bugs and smoother YNAB-ing):

  • When you Fresh Start a budget, we were not carrying over the last used payment payee for credit card accounts which means it was not auto-filling the next time you entered a payment. Sorry about that. Sometimes we get a little overzealous with the level of freshness we offer. That may have been too fresh.
  • If you had a credit card account payment that was part of a split transaction and you clicked to view it from the Credit Card Payments “Activity” popover, an error would occur. Fixed!…I don’t know why we’re yelling here, but stomping out bugs sometimes requires an extra level of catharsis in the form of an exclamation point.
  • When you select a payee for a new transaction we try hard to remember the last category used for that payee and will auto-fill it. But, transfer payees pointing to Tracking accounts did not remember the category. We were able to jog its memory, though, so hopefully it will never forget your last category again.

Web Release Notes: October 14, 2019

Today’s release is brought to you by a small bug we introduced in the last release. This particular bug could prevent some users with linked accounts in specific error states from troubleshooting them, causing a uh-oh screen. Oops! Fixed now.

Web Release Notes: October 10, 2019

Today’s release is all about repeated attempts.

  • Ever tried to remember you password (in vain) so many times you got locked out? Now we’ve improved the message that you see when your account has been blocked due to that forgetfulness. This one’s not worth trying.
  • Ever wanted to start over in your budget and gotten a really weird list of budget names with things like My Budget  (Archived 10-10-19)  jumble in your budget dashboard? Now we ask for a name on a Fresh Start to improve clarity. We do recommend you try this one.

Web Release Notes: October 3, 2019

Do you know what’s better than one-step verification? That’s right, two-step verification…it’s almost double the verification steps! Twice as much, some might say. And, as of today, everyone should now have the option to enable two-step verification in YNAB. If you’re not familiar with two-step verification, it’s an added layer of security for when you log in to YNAB. In the hierarchy of safe and secure logins, it goes:

  1. Password = password – WEAK…c’mon, now
  2. Long password with a mix of letters, numbers and characters – STRONG
  3. Two-step verification – SUPER DUPER STRONG

We go to great lengths to keep data safe on our end (you can read all about it here) so we hope you’ll also do your best to keep your data safe on your end. Now, with our newly added two-step verification option (and biometric authentication on iOS and Android) we’re giving you the tools you need to keep your data safe.

For more details on how to set up two-step verification, check out this post.

But, wait…there’s more! Operators are standing by (by that, I mean our awesome Support reps are ready for any questions). If you call now (you can’t call) all YNABers will also receive:

  • A fix to inline equations where, if you accidentally enter multiple decimal points, YNAB is now smart enough to know you only meant to put in one decimal point. “$3..11” will get converted to “$3.11.”
  • Removed circle icons from our onboarding buttons to keep things consistent. Peace out, my sweet, sweet circle icons. You will be missed, but you were also not really necessary *Sarah McLachlan’s “I Will Remember You” playing in the background*.

Web Release Notes: October 1, 2019

As some of you may have noticed, we’ve made some changes to the way Goals are handled in YNAB. We’ve been slowly rolling these changes out, and as of today, all of you should see the new changes to Goals in YNAB. So, what’s new? You can read about all of the exciting details here, but here’s a quick rundown if clicking links isn’t your thing (I think I’ve just made up a person in my head that avoids clicking links at all costs):

  • We’ve broken Goal types down into two types: Plan your spending AND Build your savings.
  • Plan your spending Goals are really the new feature here and you can plan to spend a certain amount each month OR you can plan to spend a certain amount by a specific future date. The focus here is spending. Before, you might have had a goal to save for a vacation in the coming year. You wanted to set aside $200 each month, so you would have $2,000 saved for the trip. But, unless you live life fast and loose (which, we’re not judging you) you’re not buying your plane tickets on the day of your trip. You would likely buy them several months prior. So, with Plan your spending Goals, you would maybe set a Goal to spend $800 on plane tickets by March 1st. This way, your Goal doesn’t go yellow when you spend the money (that you were always going to spend to begin with).
  • Build your savings Goals behave in the same way that Goals have behaved since they were dropped on the world in 2016. You can set aside a monthly amount, or you can set a target balance (by date or otherwise).

So…welcome to Goal-klahoma!!! Goal-ing Green, Goal-hio!!!! Jackson Goal, Wy-Goal-ming…these are terrible. But you know what’s not terrible? The new Goals in YNAB. And this is just the first step in some even more exciting changes that we’re making to Goals to help you reach your…goals.

Web Release Notes: September 26, 2019

API News

Budgeting isn’t forecasting, but YNAB does give you the ability to schedule transactions and it also gives you the ability to “look” (and technically budget) one month into the future. A few weeks ago we made a change to the budgets/:id/months/:month endpoint so that it only includes current and past months in the budget window. We will now also provide one month ahead in the budget window as well. This change will help out in the scenario where you want to look at the next budget month to see if anything is budgeted. Careful, though…easy on the forecasting. We don’t want the Rule One police to show up at your door.

Web Release Notes: September 17, 2019

Whether you’re curious about how credit cards are handled in YNAB or if you’re looking for the best way to do a Fresh Start, we want you to find the information you’re looking for when you need it. While you can always reach out to our top notch Support team for answers, you can also find the information through this fancy, little, blue question mark in the corner of the web app:

This is “Beacon”…think of it as a more useful, less-annoying version of Clippy. Remember how Clippy used to follow you around in late 90’s Microsoft Office products asking you if you know what a pivot table is? Well, Beacon won’t hassle you about errors in your formulas or send you down an apocalyptic nightmare rabbit hole trying to figure out how to format a table inside of a Word Doc. Instead, Beacon allows you to search our help docs, find our free workshops or contact one of our awesome Support reps. It can be super helpful:

Today’s release adds Beacon to the “My Account” pages. Beacon is now there to help whenever you need it inside of the YNAB web app. Go away, Clippy!

Web Release Notes: September 10, 2019

As they say in Texas, “we’re fixing to release some fixes today.” And sure, our CTO, Taylor, and quite a few of our devs and support reps are from the great state of Texas and they have literally never uttered the phrase “we’re fixing to release some fixes today,” but it just feels Texas-y…and we fixed a few Texas-sized bugs today:

  • For some types of investment accounts that get used like checking accounts, transactions were being skipped because they were coming in with a value of 0. The reason for this was that these particular accounts were pulling the amount in via the “quantity” field as opposed to the “value” and “price” field (which were coming in with zeros). We fixed this issue for these types of accounts and hope to never have any issues with any bank direct import transactions ever again…takes huge deep breath
  • We found and fixed a really, really old sync bug. Like, it’s a bug that shipped with the first version of the mobile app. The bug was a little obscure, but fatal…for the app (phew, but still). If you ran into the bug, the only way forward was to uninstall and then reinstall the app. This bug occurred when users updated more than one split transaction since their last sync AND if the split parent had a value entered in the Memo field. Obscure, but also not that obscure for some of you. Found it. Fixed it. On to Cincinnati.

API News

The to_budget_budgeted value on the /budget/:id/months endpoint could sometimes be inconsistent with what you see on the web and mobile apps, if you had budgeted money in future months. We’ve fixed this so now this endpoint should be consistent regardless of whether you’re viewing it from the web or mobile app.

Web Release Notes: September 3, 2019

We all make mistakes (not the best way to start off release notes, to be honest). We’ve all went to pull the clothes out of the washing machine, only to realize that we put our bright, red shirt in with the whites, totally destroying a load of clothes. But what if there were someone there to prompt us just before we were about to make a big mistake? That would be helpful, right?

Today’s release includes a mistake failsafe prompt anytime a user goes in to delete 15 or more transactions. If you totally meant to do that, click “Delete,” and we’ll get to that deletion process. But, if it was a mistake, you can back out (by clicking “Cancel”) before you lose all that transaction data.

API News

  • What’s in a name? A lot, especially if two different things have the same name. In this release, the special “To be Budgeted” category returned on /budgets/:id/categories endpoint has been renamed to “Inflows”. This is to differentiate it from to_be_budgeted on /budgets/:id/months endpoint. These two values are related but different. The “To be Budgeted” amount at the top of a budget month is reduced by cash overspending in a prior month and any future budgeting. But don’t worry, that “To be Budgeted” that we renamed as “Inflows” will smell as sweet.
  • Previously the /budgets/:id/months and /budgets/:id/months/:id endpoints would sometimes return months outside of the first_month and last_month (the “budget window,” as we call it) of the budget. Well, we fixed that and now the returned data is more of a budget window than a budget sliding glass door.

Web Release Notes: August 29, 2019

Today’s release was focused on fastness, rapidity, or the more popular synonym: SPEED.

If you’ve got a budget on the larger size (15,000 transactions or more) you should see a noticeable difference.

We realize that we’ve still got some more work to do to get these big budgets moving even faster…and we’re working on it. Look for even more speed enhancements in future releases!

Web Release Notes: August 27, 2019

Today’s release contains quite a bit (well over a dozen different merges) of behind-the-scenes structural pieces for bigger features and improvements we are working on, but there are two bug fixes that some of our users will notice:

  • We fixed a login issue that occurred for some of our users stating that there was a “server error,” when, in fact, there was no server error and now there will be no message stating that there was a server error, because there wasn’t one to begin with…it seems like I could have shortened this explanation…oh, I’m still going, am I? I’ll stop now. OK, now. Moving on…
  • Splitting transactions is so huge for really getting granular with your budget. Who among us hasn’t bought socks and bread in one single Target run? Just me? Normally, when you add a transaction and then split the transaction in the Category field, the cursor automatically focuses on the next field to fill out: the Memo field. When you go to edit a transaction and change it to a split, the cursor was not focusing on the Memo field. That doesn’t make a lot of sense. But we’ve now fixed that issue:

Web Release Notes: August 22, 2019

We were so excited to get this release out, we may or may not have actually released it yesterday…we may never actually know. But here’s what we do know…this release contains the following fixes and improvements:

  • Fixing a number of scrolling issues in the Income vs Expense Report – The consistency and feel of scrolling in the Income vs Expense Report has always felt a little off. With this release, we’ve made a few tweaks to make scrolling much sleeker and much more pleasing to the eye. *singing off-key* “You can scroll your own waaaaaAAAAAaaaayyyyy!!!!”:

  • Performance boost from changing how we handle currency formatting – We’re always looking for ways to make YNAB even faster. In this release, we made a small change to one of the functions we use for currency formatting that netted a decent performance gain throughout the app! Vrrooom vrooom…you know…speedy things.
  • New CSV import doodle – When most people think of importing CSV files, the first word that comes to mind is probably “fun,” right? No? Just us? OK, well, we decided to bring, at least, a little amount of fun to importing CSV’s with this fun, little, YNABy doodle:

API News

Our PATCH /budgets/:id/transactions endpoint partially modifies the collection of transactions. In REST design, patching is used to make partial updates to collections and resources. Some of our API users expected this endpoint to also allow patching individual transaction resources within the collection. Well, now you can. For example, to set a Red flag on 3 transactions you could send a request body to PATCH /budgets/:id/transactions containing:

transactions: [
  {"id": "9d3bc63a-9942-4809-9cd2-d23069ac2b58", "flag_color": "red"},
  {"id": "77f3a961-a406-4dcc-8209-e90734b185ef", "flag_color": "red"},
  {"id": "4c42fdc7-0369-4e20-b150-508cdc0f35fd", "flag_color": "red"}

Previously, you would have had to provide the entire transaction representations (amount, date, etc.) to make these updates.

Web Release Notes: August 20, 2019

Who’s ready for “Back to School?” Ready or not, It’s that time of year, so let us take you to school with some of the fixes and features that we just rolled out:

  • Transfer payee name update fix – Did you know that when you import transactions and change the payee name on one of them, all other unapproved transactions from the same imported payee name will be updated to match the new payee name? Magical, right? And it’s convenient too, because you probably want to update all those other transactions’s payees too! When updating the payee and changing it to a transfer payee, however, we were not creating the other side of the transfer, which caused transfer orphans. Not great. This is fixed now.
  • Costco CitiBank card initials removal – Really getting into the weeds with this one. When transactions were coming through to the accounts of YNABers who used their Costco CitiBank card, the cardmember’s initials were getting prepended to the payee. “Who is HW-Costco? Do I own Costco now?” Yeah. We think that looks weird too, so we put in a fix to remove those pesky prepended initials (I wish there was a “p” word for initials to complete the alliteration trifecta).
  • Wide screen budget table alignment fix – You know the feeling. You go in to reconcile and something is off. And it’s just off by a few cents. If it were off by twenty dollars, or a specific, larger amount, you could do some quick detective work and solve it. But when it’s just slightly off, it’s almost worse. The same is true for the layout of the Budget screen. What if the decimal places were off…just by a little…like so?
    Yikes! Well, this was the case for users with screens wider than 1600 pixels. But it’s not the case anymore. We reconciled the pixel differences and we’re feeling good about it now.
  • Activity modals (pop-ups) not using the same sorting method – Not sure how many of you noticed this in the past, but there were some slight inconsistencies to how some of our activity modals were sorting transactions. But we’ve now went back and made sure all activity modals are now sorting using the same order: date (descending), account name (ascending), payee name (ascending), amount (ascending), entity ID (ascending). Pay attention. This will be on the quiz later.

Web Release Notes: August 13, 2019

When looking at the code we just pushed today, it’s amazing to think that YNAB started out as an Excel spreadsheet with some fancy macros. Back then, bug fixes were probably things like, “Font testing was a bust. Reverted font-style from Comic Sans back to Arial.” But now that YNAB is loaded with features and available on Web, Android and iOS, we have to squash some super edge-casey bugs. Check out this fix that went out today:

When confirming a user’s email change, we will now automatically assign any existing, unredeemed YNAB gift subscriptions that were sent to this new email address. Complicated and confusing, no? Let’s walkthrough the scenario where this applies:

You buy your cousin, Kim, a YNAB gift subscription for her birthday and gift it to [email protected] Cool. But Kim already has a YNAB trial account under her other email: [email protected] Hmmm…well, she won’t get that gift subscription as it is tied to that other email. So, the gift subscription would just sit in gift limbo with that picnic basket you bought your newlywed friends 8 years ago. With today’s fix, when Kim goes into YNAB and changes her YNAB account email to [email protected], that gift subscription you bought her will now apply to her account and Kim will have her shiny, new YNAB subscription you gifted her.

Web Release Notes: August 8, 2019

At YNAB, we work in six week cycles, and our current cycle is about to come to an end. So this release is most likely the calm before the storm of some more major releases in the weeks to come.

We pushed out a handful of internal structural changes to support upcoming features, BUT we also pushed out a seemingly smaller fix that you might notice: YNAB will now treat “Check No.” and “Check #” the same for payees. Hopefully, you’ll have # more problems when transactions go back and forth between the two…wait…did I do that right?

API News

Our API supports Cross-Origin Resource Sharing (CORS) which means you can call the API from within a web browser directly. But, we had something misconfigured and we were not allowing PATCH requests. This has been fixed so you can now patchy patchy ’til your heart is content on the /v1/budgets/default/transactions endpoint to update transactions directly from a browser.

Web Release Notes: July 30, 2019

Summer is in full swing here at YNAB and it’s been a light week for releases! For those of you that subscribed to YNAB via Apple, we fixed a small visual issue with the trial expiration date showing incorrectly in your account sidebar. 

And that’s all she wrote, folks! We’ll see you later this week for more. ?

Web Release Notes: July 25, 2019

You’re not going to see any big changes with your eyes from today’s release, but we hope you feel it in your hearts as we just pushed a bunch of changes to keep Direct Import rockin’ in the free world.

API News

We now support Delta Requests on the /budgets/{budget_id}/scheduled_transactions endpoint.  This allows you to ask the API only for changed scheduled transactions (Deltas, if you’re nasty).

Web Release Notes: July 23, 2019

As you may have noticed, we release new code every Tuesday and Thursday. Today’s release includes a number of changes that you probably won’t see in the app, but these changes are part of the necessary maintenance and set up that we do to facilitate larger improvements to YNAB and all of its glory.

While you may not notice these changes, you may notice that during our weekly releases, we take the app into maintenance mode for around 1-2 minutes, making the app unavailable. And sure, it might only be 1-2 minutes, but think of all the money-moving, reconciling and debt-crushing that can be done in that amount of time! So, chRIS (emphasis his) one of our super rad developers, found a way to only go into maintenance mode when we absolutely need to. So, carry on, knowing that we might totally be updating YNAB right now without you even realizing it!

Web Release Notes: July 16, 2019

Today’s release includes quite a few behind-the-scenes structural changes for larger improvements we’re working on. As for changes that you will see after today’s updates, here are some of the highlights:

  • There is a famous saying in Norwegian (translated to English): “It all comes down to dollars and cents.” Except, I’m totally kidding. They don’t use dollars in Norway. It’s all about the Kroner. And it would be helpful for YNABers who use currencies with number formatting similar to the Kroner, if YNAB’s Net Worth report would show values without wrapping. So, we fixed that. We’ve added a little more width to our Net Worth Report tool tips to give a clearer picture for larger-numbered currencies (and multi-billionaires…just in case)
  • Fixed a bug in Safari that would occur when a user would hover over the “Share YNAB. Get Free YNAB” button multiple times, causing the button to turn black. It weirded us out too. But now, it’s fixed.
  • When scheduling transactions for Cash Accounts, there will never be an indicator from a bank that the transaction has cleared. So, to save you a little bit of time, YNAB will now automatically clear that scheduled transaction for you on the scheduled date (for Cash Accounts only).

Web Release Notes: July 11, 2019

  • Could you smell what the Rock was cooking? Probably not 🙁 Anyways…Updating all of the calculated values is now 2-5x faster when said calculations need to update Age of Money. This makes up about 20% of all requests. This behind-the-scenes improvement makes the web app a little snappier when adding or updating transactions. As an added bonus, it also gives our friendly database a bit more breathing room. Whew!
  • Ever go into YNAB to do a Fresh Start and get annoyed that all of the account balances are at zero? Well, we fixed that. Linked accounts now pull in account balances and the current day’s transactions. Budgeting bliss with less distractions. That’s right, Fresh Start is no longer a chore.
  • For all of our Safari 12 users out there, we fixed an issue where some of our modals (pop-ups) were not positioned correctly. What’s even more fun is that the issue was being caused by a check that we were doing for an old version of Internet Explorer. Browsers! Who knew?!
  • A little while ago we unified our login experience in the app, but, as some of you may have noticed: the option to “show” your password characters while typing was gone after that change. But, fear not! Carlos giveth and Carlos taketh away…and then Carlos addeth the “show password” feature back into the app! Also, Carlos is one of our amazing developers who made this fix possible. Obrigado, Carlos! ??

API News

  • As a developer using the YNAB API, I’m sure you’ve come across a scenario where you only want/need “read-only” access for your app. Well, now all of you API application authors have the option of using the new read-only scope for the YNAB API inside of your app.

Web Release Notes: July 9, 2019

It’s a light release today with a few verbiage changes here and there along with some code changes to the web app that you shouldn’t notice if we did everything right.

Web Release Notes: July 4, 2019

For all you YNABers in the US, Happy 4th of July! A light week around here, just a few quick updates and we’ll let you get back to barbecuing. ?

  • Age of Money could be missing or calculated incorrectly for some months if you have $0 split transactions that have sub transactions which are on budget transfers. It should fix itself the next time you add or update a transaction in the improperly calculated month. ✅
  • When exporting your budget, we used to escape double quotes ” using \” now we’re using double double quotes “”, which is more inline with these .csv standards (for those of you that might be curious).

Web Release Notes: July 2, 2019

  • Super exciting news for all you goal setters out there: Goals for Credit Card Payments (Payoff Balance by Date and Pay Specific Amount Each Month) now count balances carried over from the month before the goal is created as progress toward the goal! ?
  • We installed a few minor updates on the backend to stay on top of security patches.  ?
  • Last but not least, we added a mini power-up to search results—now when you search for payees with apostrophes, they’ll show up even if the encoding of the apostrophe is non-standard.

Web Release Notes: June 27, 2019

  • For those of you using Safari or Firefox, you may have noticed a few wonky spacing issues when scrolling in the account settings area. We tidied up the margins so you can now scroll with adequate spacing.

    PS – If you haven’t visited the settings area in a while, this could be your excuse to check it out! There’s lots of fun things to do—link your Google account, update your billing info, give the gift of YNAB, and so much more!
  • If you’ve been relying on Chrome to autofill your password, the login button would sometimes stay disabled after the email and password were autofilled, which wasn’t very helpful given that you probably set up that autofill to save yourself time! This is now fixed and you can get back to automating-all-the-things. ?

API News

We did a little bit of housekeeping on the YNAB API this week…

(actual footage from our API dev team over the last few days)
  • OAuth applications now support default budget selection so you can ask users for a default budget when authorizing and then pass in “default” in lieu of a budget_id in API endpoint calls, making things simpler in a few cases.
  • A few Delta Request improvements:
    • Delta request on /budgets/{budget_id}/accounts endpoint will now return accounts that have had balance changes
    • The /months/{month} endpoint now returns server_knowledge.
  • Marked transfer_transaction_id and matched_transaction_id as strings rather than uuid in our API spec.

Web Release Notes: June 25, 2019

  • On the Net Worth report, months far in the past could get hidden, so we added a vertical scrollbar to the report so that we aren’t hiding such valuable data anymore.
  • While using shift + arrows to select multiple transactions in the register, if you reached the bottom and hit the down arrow one more time, it used to error but now it doesn’t. We even fixed using the up arrow to unselect transactions too. We even made you a silent film to show you what we are talking about:
  • Besides the two afore-mentioned items, we merged another 10 “pull requests”/”units” of work, but they are all marked as “internal”, meaning that we don’t normally talk about them here. But the author of these release notes thinks that is selling them short, so I’m going to talk about a few of them anyway! The technical folks reading this might appreciate that we:
    • Made it easier for our support teams to map a financial institution from one aggregation provider to another.
    • Fixed grammar/punctuation on a message related to expired password tokens.
    • Disabled reCAPTCHA when running automated tests. (It was easier than trying to trick Google into thinking our automated tests were human.)
    • Removed tracing from the iOS proxy generator templates. (That sounds too cool not to include it.)
    • Upgraded to Typescript 3.5.1 and upgraded RSVP to version 4.8.5.
    • Migrated to Yarn Workspaces. (We are big fans of this approach after having only used it a few days.)
    • Fixed some issues with our Docker development environment.

Web Release Notes: June 20, 2019

  • In Firefox we were unintentionally sorting by category when you were trying to resize a category column, we fixed that.
  • We’re smarter about which default dates we recommend when your make a transaction recurring depending on the frequency.

Web Release Notes: June 18, 2019

  • When adding a transaction, if you changed your mind and clicked on some other transaction, we’d always force you to cancel adding the transaction first. Now, if you have made no changes, we’ll just dismiss without asking to cancel. Because we’re cool with changing our minds. (If you made any changes to the transaction though, we’ll still ask you to cancel, just in case.)
  • When adding a transaction, you could click the Needs Category notification icon on another transaction to begin unintentionally editing it. Oops, not anymore.
  • When searching for a sub-transaction of a split, the collapse split button will no longer appear giving you the impression you can collapse a partially shown split, because you really can’t do that.
  • Fixed a layout issue when adding accounts on large tablet screens.

Web Release Notes: June 13, 2019

  • Fixed an error that could prevent loading the app on IE11.
  • Updated some build dependencies, keeping up with the latest and greatest out there.
  • We are currently testing some under the hood changes to decrease database load and improve performance.

Web Release Notes: June 11, 2019

Lots of under the covers updates to support some upcoming new features.

API News

  • We updated our documentation to make it clear that the API doesn’t yet support creating or updating scheduled transactions.

Web Release Notes: June 6, 2019

  • We made small changes to make the overspent and underfunded category colors stand out a bit more, especially if you have a form of colorblindness.
  • But if those don’t stand out quite enough for you, we also added an option in Account Settings to switch back to the Classic colors. Now you can decide which style works best for you.

Web Release Notes: June 5, 2019

Fixed an issue with transactions for some accounts importing with payees like U S Dollar, Canadian Dollar, British Pound, and the like, in the past couple of days. You might still see some lingering imported payees like that the next time you import, but going forward they should show up correctly like they used to.

Web Release Notes: June 4, 2019

API News

  • Creating or updating splits through the API isn’t supported (yet) but you can update the parent transaction of an existing split. The only catch is you cannot change the date, amount, or category. We updated our API docs to make this a tad clearer.

Web Release Notes: May 30, 2019

  • Now as scheduled transactions become real life transactions, we will attempt to match them to any previously imported transaction. Even when using Enter Now from the Edit menu. Usually scheduled transactions will fire before their imported counterparts are imported but in some cases the imported one will beat it. This is especially true if you are using an API integration that offers near real-time importing of transactions.
  • The Underfunded Quick Budget option is now available when you’ve selected a single category that is either overspent, has a goal that hasn’t been funded yet or if you haven’t budgeted enough for an upcoming transaction.

Web Release Notes: May 28, 2019

Just one noteworthy fix. If you have ever seen a $0.00 balance with a red color pill you might have been confused. We’ve fixed this rare scenario, which was caused by some rounding issues. High fives the other JavaScript developers.

Beyond that, a lot of behind the curtain lever pulls and button pushes, preparing for some upcoming features. What kinds of buttons and levers? Well, there was 4,247 lines worth of overhauled CSS, for starters. These changes should make our future efforts easier and faster, but you won’t notice anything different just yet.

Web Release Notes: May 23, 2019

Sorry folks, more sight unseen improvements today. But, these type of changes keep YNAB running smoothly for your budgeting pleasure. Interesting fact: we removed more lines of code today than we added.

Web Release Notes: May 21, 2019

Today’s release is all sight unseen improvements. Among other (unseen) things we are releasing a change to our database that should significantly help move some database metrics in a positive direction. You likely won’t notice, but we will because it should make internal-chat messages like “Alert: 95th% Response Time High” or “Hey Taylor, are you seeing this strange behavior?” a thing of the past.

Web Release Notes: May 16, 2019

  • Fixed a login error with the latest version of Firefox.
  • These are other items to give the illusion of more going on in this release.
  • There are also maintenance and security fixes going out.
  • But we don’t usually talk about those, so mum’s the word.

Web Release Notes: May 14, 2019

  • We’ve improved the contrast on our category balance pills. With these changes, users with visual impairments will be able to use YNAB more easily. Accessibility FTW.  Read today’s blog post to learn more.

API News

  • We’ve increased the max length of the memo field from 100 to 200 when creating or updating transactions. We’ve updated the docs accordingly (be sure to click ‘Model’ under the ‘data’ section).

Web Release Notes: May 9, 2019

  • A little bit ago we regaled you with news of our unifying the login/signup flows. In our excitement we forgot to put the “keep me logged in” checkbox on the revamped login screen. If that doesn’t ring a bell, it used to be called “remember me”. Whatever you call it, it’s back where it belongs.
  • Fixed a crash when Apple subscribers try to resubscribe after their subscription has expired.

API News

  • Thanks to Andre Bocchini’s generous work we now have a Swift API client for iOS/macOS/WatchOS/tvOS. Fittingly, we’ve added it to our list of community-supported libraries.
  • The login/signup unification mentioned above accidentally broke the API OAuth Login process. This release fixes it.

Web Release Notes: May 7, 2019

Just a maintenance release today, and a small one at that. We just got back from our annual retreat yesterday (it was wonderful), so I suspect we’ll have more to talk about here later this or early next week. Hope you’re having a great week.

Web Release Notes: April 25, 2019

Only performance and security updates going out today. If it’s any consolation, I find that just as boring as you. But let’s not dwell in the past. [cue inspirational music] Let us, instead, look forward to the undiscovered wonders of next week’s release notes…

Web Release Notes: April 23, 2019

  • We’ve updated the login/signup flows, unifying the look and feel across platforms. Along with refreshing the design, we’ve improved security and prepared the code for more significant updates in the future.
  • If you tried to change a Monthly Funding goal to be Target Balance by Date, on rare occasions we would delete it instead of saving it. Fixed now.

Web Release Notes: April 18, 2019

  • If you have a javascript disabled in your browser, the app won’t work well, if at all. We’re usually pretty good at detecting when it’s disabled and showing a lovingly crafted message asking you to re-enable javascript so we can carry on. Except for some pages in the My Account area. Things would just break and look weird, with no lovingly crafted message telling you what’s going on. We’ve now extended the coverage of the twice aforementioned lovingly crafted message to include the My Account pages.
  • If you selected “Make Recurring” for the date of an existing transaction, we were so eager to create your scheduled transaction we forgot to save any changes you may have made to the transaction you just made recurring. Now we save your changes, then go about creating the scheduled transaction.
  • Improved CSS loading performance, which improves app loading performance, which improves perceived loading time. I mean, if we’re being honest.

Web Release Notes: April 16, 2019

  • We now disable the Undo/Redo buttons while you’re editing a transaction. Once you’re done editing, we reenable them.
  • When deleting a Category Group, sometimes you’d have to click Undo/Redo multiple times. Now a single click does the job.
  • Much like we reported in the critically acclaimed April 9 release notes, we found another case where the list of accounts was ordered differently in the Payee dropdown for individual transactions compared to the main list of accounts on the left. Now that one’s fixed, too.
  • Keeping with the theme… The Account list in Edit > Move to Account menu was sometimes ordered differently than the sidebar. Now they’re consistent.
  • When viewing transactions for a particular payee in the manage-payee popover, we sometimes we displayed internal, non-displayable transactions. We don’t do that any more.

API News

  • Updated docs to include validation requirements for creating/updating transactions.
  • Fixed a typo in an error message we hope you’ll never see.

Web Release Notes: April 11, 2019

A somewhat disappointing release today insofar as there is little to talk about. All internal stuff, nothing user-facing. 

In an effort to stretch it out just a little bit longer, here’s a rough breakdown of the kinds of things we shipped, along with their relative number of updates:

  • 3x internal tooling (primarily to support our beloved support folks)
  • 2x increase direct import efficiency
  • 1x shore up Apple subscription plumbing
  • 2x paying down technical debt
  • 2x performance improvements
  • 1x remove now-obsolete workarounds
  • 1x prep server for mobile bug fix
  • 1x prep for upcoming feature

Web Release Notes: April 9, 2019

  • We’ve added a “finishes” date to Target Category Balance by Date goal progress. Now you can easily see when your goal will be finished, which wasn’t quite as discoverable before.
  • In certain cases when importing large numbers of transactions, the logic could go off the rails, incorrectly matching or not matching other transactions. Fixed now.
  • In a recent change, we improved how your search is saved. This caused a new bug where the old bug would reappear if you cleared out your search, once again putting you in a situation where you could never really clear your search. We’re gonna call this one “fixed” again and hope it sticks.
  • In rare cases, the list of accounts was ordered differently in the Payee dropdown for individual transactions compared to the main list of accounts on the left. Now they are both ordered like the main list of accounts on the left.

Web Release Notes: April 5, 2019

  • If you had an account register search saved from before our April 2 release, we would reuse that search when you came back to the account register, even if you had cleared it. It might have even made you say to yourself, “wait…”. Well, fret not, it’s fixed now. Have a great weekend.

Web Release Notes: April 4, 2019

  • Scheduled split transactions comprising transfer sub-transactions needed some attention. The split side didn’t provide a link to the other side, and if you clicked on the link from the other side, it crashed. LOL. Fixed now.

Web Release Notes: April 2, 2019

What’s New

  • We now store your filter, search, and sort order settings for the “All Accounts” view on a per-budget basis. Modifying filter, search, and/or sort order settings for one budget’s “All Accounts” view won’t affect those settings in any of your other budgets.

API News

  • When responding to delta requests for /categories, we weren’t considering the server_knowledge of some of the entities related to a given category’s monthly budget. Essentially we weren’t considering changes to activity or balance amounts when deciding which categories had changed since a given last_knowledge_of_server. Now we do and you get a more accurate view of categories’ changed states.

Web Release Notes: March 28, 2019

  • For the armchair grammarians among us, we now refer to your age of money as being “1 day” instead of “1 days.” I’m not sure how it could, but if this issue resurfaces, there’s a tried and true workaround.

API News

  • Thanks to the generosity of Taryn Phrohdoh we now have an API client library written in Rust. You can check out all the client libraries—official and community-supported—in the API documentation.
  • The documentation for our response to GET /budgets requests was incomplete. Each budget summary object also includes first_month and last_month dates. Those dates represent the earliest and latest budget months, respectively. The docs now make that clear.
  • We no longer choke on unsupported Unicode escape sequences in the request payload. Now we return HTTP 400 and error detail.
  • Fixed an issue where some transaction payees were nullified when importing multiple transactions in a single API request. Moral of the story: always reset your loop variables.
  • The GET /transactions endpoint wasn’t returning split transactions that had been converted to non-splits. Now it does.

Web Release Notes: March 26, 2019

  • Creating a new category from the category field of a new or existing transaction by clicking “Add Category”, then “Save” did nothing and no new category was created. That was sub-optimal, so we fixed it. Now it creates the new category.
  • The Income v Expense Report now remembers your expanded and collapsed rows. This was our intention all along, but we wrote a bug that broke it when we converted some related code from CoffeeScript to TypeScript. To our credit, the bug was type safe.
  • If you navigated from one side of a transfer transaction to another, and that other side happened to be a collapsed split transaction, the app would hang. :sadtrombone: Now you’ll see the expanded split. :lightheartedpiccolo:

API News

  • The API Endpoints documentation has long given you the ability to quickly and easily query your data. (All you need is a simple personal access token for authentication.) We’ve tweaked the validation rules for UUIDs to prevent some false-positive validation failures. Most notably, we now support last-used for IDs, where appropriate.

Web Release Notes: March 21, 2019

  • Several behind the scenes changes today, including some preparation for an exciting new feature! Have a great end of the week.

Web Release Notes: March 19, 2019

  • When creating a category in the register, if you used the keyboard it would accidentally create the category twice. Now it only creates a single category as expected.
  • When changing a budget’s name, the browser’s title wasn’t updating. Fixed!
  • When transferring from one Budget Account to another, using tab to select a Transfer Payee was moving the cursor into the Category field. YNAB doesn’t even allow you to categorize transfers between Budget Accounts, so that wasn’t helpful. Now hitting tab will skip directly the Memo field instead.
  • Keyboard selection in the account register is back to normal, we had a bug where you couldn’t select rows across the regular transaction section and the scheduled transaction section.
  • You can now type “split” into the category dropdown to automatically select the ability to split the transaction. Or “s” or “Sp” or “sPL” or “SPLit” I think you get the point…

Web Release Notes: March 14, 2019

  • In rare cases, the columns on the account register that cannot be resized (checkbox, flag, cleared) could become smaller than they should be. Once they got out of whack, there was no way to resize them back to the size should be. They are now at the correct size no matter what you do.
  • When you first start YNAB, we will helpfully start pointing you to certain parts of the budget screen and instructing you how to budget and move money around. But as it turns out, if you collapsed Category Groups before these instructions appear, we had no idea where to point you and would end up pointing these instructions to places that didn’t make sense. It was an especially embarrassing mistake for us because if you were seeing these instructions, you were likely new to YNAB. I’m relieved to tell you that we have wiped the proverbial egg from our face and have fixed the issue.

Web Release Notes: March 12, 2019

  • Some of you might not know this, but YNAB is great at importing transaction files downloaded from your bank. This is really helpful when your bank doesn’t support directly connecting to it, or the connection is having trouble. Now that we’re all on the same page, you should know that we improved the way we import dates and times for files that end in .ofx or .qfx. Now we take the time into account and not just the date, which means that your transactions are more likely to fall on the correct date when they’re imported.
  • When linking to your bank account, we could sometimes show a really cryptic error message that started with “Missing translation” and got worse from there. No more!
  • Sometimes, when we hit a snag while importing transactions from your bank, we will keep trying in the background, and all you have to do is wait a bit for things to catch up. But when that would happen, we would previously make it look all “doom and gloom” and put an error icon in your sidebar. Now we will correctly tell you that the syncing is merely “delayed”.
  • When importing from your bank, there was a rare scenario that could cause the same transaction to get imported twice. It was confusing, so we fixed it.
  • When importing from your bank, there was a rare scenario that could cause the same transaction to get imported twice. It was confusing, so we fixed it.
  • If you’re looking at your budgets list, you can now still  create a new budget directly from the menu in the upper left corner even though there is already a “create new budget” button in the list of budgets.
  • We made some improvements to the way we tell you about your goals.
    • Added “Started” month/year
    • Added the goal type in the title so that you know what kind of goal it is.
    • We dropped the “s” from “GOALS” because that “s” was silly.
    • P.S. Indented bullet lists are difficult to format.

API News (for you developers out there):

  • You can now use insecure redirect URIs for localhost (e.g. http://localhost:3000) with your OAuth Applications using the Authorization Code Grant Flow. Previously we’d require that you redirect to https://localhost:3000 for local testing, which required a lot of annoying hoop jumping and certificate management. Hat tip to @kordonme for the request!

Web Release Notes: March 7, 2019 — 2nd edition

  • Quick update to fix some minor display issues with the last release.

Web Release Notes: March 7, 2019

  • Escaping from the transaction editor during reconciliation would flat out cancel reconciliation. Now it just closes the transaction editor, allowing reconciliation to continue apace.

Web Release Notes: March 5, 2019

  • Direct Import: We fixed an issue where some transactions from different linked accounts could incorrectly import into the account being added or linked.
  • Move Money now shows available amounts from the currently selected budget month, rather than the current calendar month.
  • The status of iTunes Subscriptions through Apple shows more accurate and detailed information under My Account. Not that it was wrong before, but it’s much richer now.
  • You can now import transactions across all your linked accounts in the web app using the notification under “All Accounts”. It will include the grand total number of transactions available to import, approve, or categorize, and clicking the notification will trigger the import of available transactions, if any, while also filtering the list to display only those transactions. You may now import with reckless abandon.
  • The Turkish Lira becomes a first-class citizen as we now use its symbol, ₺, instead of our inauspicious placeholder, TL.
  • Budget-category-group checkboxes better reflect the state of their constituent sub-categories. It’s now more obvious when you have all, some, or no sub-categories selected for a given category group, whether that group is expanded or collapsed.
  • If you had any categories selected in your budget, then expanded or collapsed their category group (or just clicked the empty space in a category group row), we mistakenly de-selected your categories. Fixed now.
  • We’re now taking a more gentle approach to notify you of new releases, this present release notwithstanding.  Going forward we’ll pop up a little message to give you the option to “refresh” your browser immediately to get the new bits, or hold off on the update so you can finish whatever task is at hand. Regardless of your choice there, we also have an easy link to these very release notes, which may be the single most important item in this entire list. You can tell because it comes at the end, when most people have already given up reading. (If you are reading this bullet point in its entirety, please read it a second time to make up for all the people that punched out early. Thx.)

API News

  • We now explicitly designate the format (int32 or int64) of integer types in our OpenAPI spec. This change to the spec has no practical implications for our Javascript SDK and Ruby SDK, neither of which needed updating subsequent to this change. However, if you’re generating your own client library and your language of choice distinguishes between integer types, it’s time to update.

Web Release Notes: February 28, 2019

Sorry, not much to report today. Just maintenance and security bits. Important, but dull. That’s it. I yield back the balance of my time to the Chair.

Web Release Notes: February 26, 2019

  • When we import transactions from your bank, the “payee” field undergoes a fair amount of processing. First, we have to clean it up from its raw form, then we apply your payee renaming rules. We show the fully processed payee (i.e. cleansed and renamed) in the register. If you mouse over that, the tooltip will show you the cleansed version. And if you really want to see the original payee as provided by your bank, you can follow the “bank import details” link at the bottom of the payees dropdown, and there, in all its unrefined glory, you’ll find your “Sale AMZN Mktp US*MI5DF8ZV1” payee.
  • We fixed the currency ISO code for the current Azerbaijan Manat (its 3rd incarnation, if you’re counting). We originally had it as AZM, but everyone knows it’s supposed to be AZN as of the beginning of 2006. Apologies to beloved Azerbaijani and Turkmen YNABers, and thanks for gently correcting us.

Web Release Notes: February 21, 2019

  • When looking at your scheduled transactions and using the ‘Enter Now’ feature, we’ll create the new transaction and shift focus to it. We used to create the transaction but maintain focus on the scheduled transaction that spawned it.
  • Mobile only: Fixed an awkwardly large scroll area at the bottom of the Add Account and connection management screens on mobile.
  • The connection status of linked accounts is now more obvious.
  • In rare situations, deleting a category would not work. You click ‘Delete’ and nothing happens. Now it will delete the category.
  • Jumping from the budget’s ‘Activity’ popup to a specific transaction in the register could cause a crash if the target transaction was a collapsed split. Now we simply expand the split.


Web Release Notes: February 19, 2019


Scheduled transactions are a great way to automate your budget. Just set and forget. Until months later when you forget that you set and transactions seem to appear mysteriously. So to improve visibility, you can now collapse your scheduled transactions:

Web Release Notes: February 14, 2019

Once again we find ourselves announcing a maintenance and security release. Not very flashy, as release notes go, but important nonetheless. Good luck with the end of the week. I hope it’s all down hill from here.

Web Release Notes: February 11, 2019

  • A lot of stuff going out today, but it’s behind-the-scenes maintenance and security stuff, so we don’t have much to talk about here. Have a great week. (We’re rooting for you!)

Web Release Notes: February 7, 2019

  • You can now collapse individual split transactions.
  • We unified the two sidebar menus. The one-menu-to-rule-them-all now lives at the top left corner.
  • Para sa aming mga kaibigan sa Pilipinas, ang aming kasanayan sa Alexa ngayon ay nagsasalita ng mga piso!
  • For our Filipino friends, our Alexa skill now speaks pesos!
  • When Fresh Starting with scheduled credit card payments, we would miscalculate “Budget for Upcoming” and not show an underfunded alert. Fixed now.
  • We figured out how to get reordering accounts in MS Edge working.

Web Release Notes: February 5, 2019

Only small internal changes today (e.g. CSS maintenance; humans.txt updates). Mostly setting the stage for future updates. Nothing else to report.

Web Release Notes: January 31, 2019

  • Chrome v72 (the latest as of this writing) choked on our pristine CSS (UI styling rules), preventing users from scrolling to the bottom of the register. Fixed now.

Web Release Notes: January 29, 2019

API News

• The endpoints to list accounts, categories, payees, and months all now support delta requests. If you’re looking for speed and efficiency, deltas are the way to go.

Web Release Notes: January 24, 2019

  • Fixed an issue where scheduled payments from one credit account to another were not correctly calculating the “Budget for Upcoming” Quick Budget amount nor properly updating the payment category Available balance warning. Again, fixed now.
  • Fixed an edge case scenario that could prevent credentials from being retrieved or submitted when troubleshooting existing Direct Import connections.

Web Release Notes: January 22, 2019

• IE11 browsers and earlier versions of Edge were choking on the Spending Totals report. As a result, we don’t display sum totals in those browsers. Recent versions of Edge handle the report well so we now show the sum totals in Edge, just like all the other browsers. Except IE11, which is still (and forever will be) broken.

API News
Delta Requests on the /budgets/{id}/transactions endpoint now include any tombstoned sub-transactions, if they were tombstoned since last_knowledge_of_server.

Web Release Notes: January 17, 2019

  • When deleting a transfer transaction with the other side being a split transaction, we failed to delete the other side’s sub-transactions. Fixed now.
  • When entering an invalid date in the register, we would continue to display the invalid value while behind the scenes we would use the last valid value. That was confusing so now we’re making it more transparent and reverting the invalid value as soon as you leave the field.

Web Release Notes: January 15, 2019

  • Page titles got some love. They’re more reflective of what’s happening on a given page (e.g. “Income v Expense Report | [Budget Name] | YNAB”). Bookmark them all, then brag to your friends.
  • We recently pushed up some changes to ‘Enter Now’ to prevent it from duplicating sub-transactions in rare situations. Unfortunately, those changes inadvertently broke Enter Now for people who had already used it for a scheduled date and later deleted the transaction. It’s now working as you would expect: If you delete a transaction created by a previous use of Enter Now, then use Enter Now again, we’ll create another transaction.
  • A while back we addressed some issues with Spending Reports, particularly how we handle net positive spending, where a category group has more inflows than outflows for a particular month. Unfortunately, we missed the mark a bit, causing some confusion. Now we plot net inflows (as negative values), and you can more clearly see how all the numbers add up.

API News

  • PATCH is now supported on the /budgets/:id/transactions collection to allow bulk updates. Also, import_id can be passed in lieu of id to update an existing transaction with that import_id.
  • Updated a few error responses for consistency.

Web Release Notes: January 10, 2019

API News

  • The API now supports matching when creating transactions. If you specify an import_id, we’ll attempt to match an existing user-entered (i.e. not imported) transaction, just like we do for Linked accounts. Woot.

Web Release Notes: January 8, 2019

  • If you used “Enter Now” for a scheduled split then changed back to the originally scheduled date, you could end up with duplicate splits in some situations. We fixed that.
  • If you tried linking the Alexa Skill from an iOS 11 device, you would end up on the My Account screen, mysteriously. That’s not right so we fixed it. It’s actually an upstream bug, but it’s relatively easy enough for us to work around in our code.
  • We used to allow imported transactions to be matched with balance adjustments and starting balance transactions. That’s wrong so we stopped doing it.
  • We fixed a bug where a scheduled transfer from a credit card account to a tracking account would not correctly show up as an upcoming transaction in the quick budget section of the budget inspector nor change the category to orange. All better now.
  • Fixed a rare issue with linking accounts and downloading transactions.

API News

  • We had some issues with how we were handling the month URL segment. It only worked when you passed in the first of the month (e.g. 2018-12-01) Otherwise, you’d get an error. Now you can pass in any valid day of the month (e.g. 2018-12-17) and we’ll handle it properly.
  • If you pass in an invalid value for the month URL segment, we’ll return a more helpful error:

HTTP 400 Bad Request
"error": {
"id": "400",
"name": "bad_request",
"detail": "invalid date"

Web Release Notes: January 3, 2019

  • Auto-categorizing to Credit Card Payment categories is no longer an option in Manage Payees. It didn’t work anyway, it just created uncategorized transactions. PSA: Categorize credit card spending to the category it was budgeted for (e.g. groceries) and we’ll automatically move money from the spending category (again, groceries) to the credit card payment category.
  • The payment recommendation text in the credit card account inspector was removed. It wasn’t very helpful. It is sorry, and will go to its room and think about what it’s done.
  • If you’re logged into YNAB and purchase a gift subscription with a different credit card than your current subscription, your upcoming renewal now shows this new card will be charged. It didn’t before, but our payment system uses the latest credit card info.

Web Release Notes: December 31, 2018


  • Big budgets (accounts with 5K+ transactions) are snappier when loading.
  • If you overspent on credit, the category tooltip could erroneously include underfunded goal amounts in its reporting of the overspent amount. It now reports only the overspent amount.

Web Release Notes: December 27, 2018

What’s New

  • On the Income vs Expense report, the “Question Mark Button” was crowding, and in some cases overlapping the table. We put a stop to that.

Web Release Notes: December 11, 2018

General Goodness

  • If you cancel your subscription after entering the dunning process, we cancel any outstanding invoices. If you don’t know what dunning is, you’re in good shape.
  • Fixed an edge-case Direct Import scenario where we’d throw an “uh-oh” error before you could re-enter account credentials when troubleshooting a connection.

API Goodness

  • GET /budgets/last-used/settings was erroneously returning HTTP 404. It now returns the settings for the 'last-used' budget, if so specified.

Web Release Notes: December 10, 2018

Not much to report

  • In some circumstances a Direct Import institution can become unavailable for a prolonged period of time. We improved connection handling for those cases so they properly reflect these unavailable statuses.

API News

  • If you attempted to create a new transaction in an account that doesn’t exist or belong to the designated budget we would return an HTTP 500 error. That made it difficult for the client to figure out how to recover. We now return HTTP 404 with appropriate error details: 'Account does not exist in this budget..

Web Release Notes: December 6, 2018

What’s new

  • Onboarding got more personalized. We now ask new folks a few questions after sign up, to help tailor support and materials to get them going.

Other stuff that’s cool but not as cool as personalized onboarding

  • We sometimes replaced well-formatted payee names with all uppercase payee names. WE ARE SORRY AND WILL NOT DO THAT AGAIN.
  • Fixed an error that could cause the screen to go blank when logging out, requiring a page reload.

Web Release Notes: December 4, 2018

Using a fork or your hands, gently split the Release Notes in half.

  • For a long time now we’ve “rolled the calculations” before the first of the month (or FOTM, affectionately) for your most frequently accessed budgets. This makes them load more quickly after the transition to the next month. We’ve now got things dialed in on the server side so we’re expanding the pre-calc behavior so it includes less frequently access budgets as well. Essentially, we pre-calc all budgets now so they’ll all load more quickly. (I suppose I could have just gone with that last sentence, but I wanted to provide context. Context makes it more interesting, right? At least it does so for writing release notes, if not reading, which ain’t nothin’.)
  • We’ve resolved a quarrelsome popover situation where two popovers could appear when editing a transaction then hovering over a Direct Import status. We all know there can be only one. DI status wins.

Web Release Note: November 29, 2018

API News

  • There was a bug in the PATCH budgets/:budget_id/months/:month/categories/:category_id endpoint. Regardless of the month designated, it would always update the current month. Fixed now.

Web Release Note: November 27, 2018

  • Fixed an edge case issue that could cause an uh-oh error when navigating and dismissing the account flow while one of the interstitial screens is loading data.

Web Release Notes: November 22, 2018

The Turkey Edition

  • We fixed a loading issue that was affecting some people when opening the app, preventing them from budgeting for the turkey. Happy Thanksgiving!

Web Release Notes: November 20, 2018

The Pre-postprandial Lethargy Edition

  • When searching or filtering transactions, clicking on the empty area underneath the checkbox next to the filter message would result in an error. That’s fixed.
  • When creating a new category from the register, the “Add Category” popup was visually separated from the nascent transaction. This was offensive to even the most liberal senses of order. Fixed now.

Web Release Notes: November 15, 2018

  • Firefox was displaying an errant “E” in empty checkboxes. Fixed.
  • Reset password flow got some design love. Now password resets are more flowy and (to bury the lede) work on mobile.

Web Release Notes: November 13, 2018

Answers to the “What Changed with YNAB” Quiz

  • We now support drag-and-drop file importing for Edge browsers. All the other browsers are happy to have Edge join the party, but if you’re going to come late, bring dessert.
  • We’ve made it more obvious how to create a new category when entering a transaction. Spoiler alert: you click the “Add Category” link that greets you when the popover opens. We used to wait until you started typing the category name before we showed the link. Now the link’s always visible.
  • When authorizing a Works with YNAB application, we now show the email address with which you are currently logged in. There’s a convenient logout link, too, if you need to switch accounts.
  • Direct Import: If there’s a known issue with your particular financial institution, we’ll display a modest “known connection issue” banner, with a link to “Show” more information. Problem was, you could click, click, clicky all day and you’d never see more information. That’s fixed now. Never seen this banner before? Cool.

Web Release Notes: November 8, 2018

Pretty quiet today.

  • Direct Import: Fixed an edge case where connection tips weren’t being displayed when troubleshooting existing connections and being asked to re-enter credentials.

Web Release Notes: November 6, 2018

Things That Are Now Slightly Different

  • Fixed an issue with extracting dates when importing OFX/QFX files that use (if not abuse) new lines.
  • Adding a new unlinked account now requires a current balance. We used to set it to zero if you left it empty, but that resulted in a bunch of mistakenly created zero-balance accounts. You still can create zero-balance accounts, you just have to be explicit about it.

Web Release Notes: October 30, 2018

Spooky News

We sent 3,744 lines of code haunting the web app to the graveyard. Paying off technical debt is almost as satisfying as paying off financial debt.

Not So Spooky API News

Learn about the YNAB API

  • Using the nifty new PATCH /budgets/{budget_id}/months/{month}/categories/{category_id} was not properly updating some behind-the-scenes data which caused some very strange things to happen with budgeted and available amounts on mobile apps. The issue didn’t always happen but when it did it was creepy.

Web Release Notes: October 25, 2018


You can now drag the lines between column headers in the register to resize the columns.

Resize Columns

Bug Fixes

  • When adding a secondary Google login we were sometimes showing that last login as the Primary one. Fixed!
  • When making a split transaction recurring, we were incorrectly focusing on the memo field instead of the date field. Fixed!
  • When editing a transaction that needs approval if you pressed Enter/Return when focused on the Approve button we were not exiting edit mode. Fixed!
  • The available column tooltip was showing encoded characters for currencies that use an apostrophe as group separator. Fixed!

API News

Learn about the YNAB API

  • Restricted Mode will now be restricted to 25 unique users, rather than 25 access tokens issued.

Web Release Notes: October 18, 2018

Improvements & Bug Fixes

  • Back in September we started opening the approval popover after the notification banner was clicked. We’ve received very constructive feedback since then and learned that flow is not ideal. We’re going back to the drawing board to create a more pleasant solution!

Web Release Notes: October 15, 2018

What We Have to Show for Our Work

  • Fixed a bug with the sorting of transfer account payees on tracking accounts.
  • We improved the performance of the YNAB 4 migration process on several fronts. Should be snappier now. (Tell me you didn’t just have the thought, “Oh, YNAB 4’s still a thing?”)
  • The edit transactions dropdown at the top of the register lists a bunch of actions you can perform on your selection. Some of those actions aren’t appropriate in some contexts, so we simply gray them out to visually *indicate* their inappropriateness for the given context and pray to all that is good that you don’t actually click on one of them. Well, after quiet reflection and careful consideration we’ve decided it makes more sense if we actually disable the buttons too. So we did. :half_heartedly_blown_birthday_horn_emoji:
  • When only some transactions are selected in the accounts page, we’re turning the check all checkbox to an uncheck all button. Handy!

API News

Learn about the YNAB API

  • The GET /budget/{budget_id}/.../transactions endpoints now support Delta Requests.
  • As a convenience, we allow you to pass in 'last-used' in lieu of an actual budget id. It’s supposed to return the budget you last used, obv. As an inconvenience, we sometimes returned deleted budgets. That’s fixed now and 'last-used' no longer considers deleted budgets.

Web Release Notes: October 4, 2018

Slow News Day

  • IE/Edge only: Fixed an issue where Payee type-ahead search for transfer accounts could throw an error.

API News

  • We’ve soft-deprecated POST /budgets/{budget_id}/transactions/bulk. It still works and we still support it, but POST /budgets/{budget_id}/transactions with a transactions array is likely the more future-proof way of creating multiple transactions.

Web Release Notes: October 2, 2018

It’s all about the API today.

  • When creating a transfer transaction, or converting an existing transaction to a transfer, we were setting the transfer transaction’s cleared attribute to match that of the source transaction. We now set the transfer transaction’s cleared attribute to 'uncleared ' to match the behavior of the mobile and web clients.
  • /budgets/:id/categories/:id/transactions, /budgets/:id/payees/:id/transactions, and /budgets/:id/accounts/:id/transactions return transactions and subtransactions that have the specified category or payee. We were erroneously including some subtransactions belonging to deleted transactions. We’ve stopped doing that.

Web Release Notes: September 27, 2018

Nothing much to talk about in this release. At least nothing specific. Sorry. OK, maybe we’ll just list a few to give the illusion of substance to this release. And fair warning, if you’ve read this far you’re in on the ruse, thus ceding the moral high ground along with the rest of us. Let’s agree not to judge each other. Anyway, here are the things going out in this release that don’t warrant mentioning:

  • More gracefully handle the scenario where the user has no budgets. You have to work to get yourself into this situation though, because we create a default budget for you when you first sign up. Not a widely encountered issue, but fixed nonetheless.
  • Round some rough edges of the account widget build script.
  • Feature-flagged features we’ll announce later, once they’re more widely released and proven effective.
  • Remove a feature flag that’s been ramped to 100%.
  • Add some preparatory Direct Import plumbing that currently does nothing but will eventually.
  • And that’s it! It looks like a big deal when you throw a lot of words at it.

Web Release Notes: September 25, 2018

Improvements & Bug Fixes

  • It’s now easier to approve or reject imported transactions. When you click the “View” button next to the the transactions-need-approval message, we now not only filter for those transactions needing approval, we walk you through each, asking if you want to approve or reject. It’s quick and reduces friction. We’ll call it a win.
  • The “% of Total” values were missing from the Spending report tooltips. Fixed.
  • We now hide the payee dropdown until you add your first payee. Not much use in showing you an empty list.
  • Fixed an issue where the month name wasn’t showing up in some of the copy in the budget header.
  • Transfer payees now respect the sort order you’ve defined.
  • Searching for “payments” or “transfers” will match the transfer payee list.

API News

  • Budgeting is now supported with the newPATCH support added to the
    /budgets/{budget_id}/months/{month}/categories/{category_id} endpoint.
    Zum Beispiel:

     curl -i -X PATCH \ \
       -H "Authorization: Bearer c1326058-972a-FAKE-64cfa9975f26" \
       -H "accept: application/json" \
       -H "Content-Type: application/json" \
       -d "{ \"month_category\": { \"budgeted\": 394595 } }"

  • The create and update transaction endpoints now support transfers by specifying a payee_id of a transfer payee (i.e. a payee with a non-null transfer_account_id).
  • For convenience, we’ve also added a new field on the Account model called transfer_payee_id, which is the payee_id to use when transferring to that account.
  • You can now create multiple transactions on the POST /budgets/{budget_id}/transactions endpoint by passing a transactions array in the payload. You can still create a single transaction with this endpoint by passing a transaction object.

Web Release Notes: September 20, 2018

[no release notes]

This one’s pretty much a maintenance release. A bit dull if we’re being honest. But today’s my IRL cake day, so I’ll take license and tell a story. [Fair warning, we’re about to go “inside baseball” so feel free to stop reading now. You won’t miss anything of import. —Ed.]

Updates to the app are made using “pull requests”, as in the author of the update is requesting these changes be pulled into main codebase (from which all the apps are built). Each pull request (commonly known as a PR) has a title, and if the author deems the update unworthy of inclusion in the release notes, s/he will append “[no release notes]” to the title. It’s one of my favorite phrases.

I love seeing [no release notes] on a PR because it means I don’t have to write anything, I can just move on, less work. Don’t get me wrong, I love writing release notes, but it’s not a task to which I ever look forward. Once I get rolling I’m fine, but I’m always resistant to start. And each PR that includes [no release notes] means I can further delay the start.

And I must admit my excitement builds as I work through each PR and each seem to include that magic phrase of reprieve: [no release notes]. But it’s a delicate balance. Ideally each release has two items I can include in the release notes, then there’s something to write, but not much. If only one item makes the cut, the release notes look anemic. If none makes it, then I’m faced with a dilemma. I could just phone it in with something along the uninspiring lines of “bug fixes and performance improvements”. Or, I could pull myself up by my professional pride and burn waaayyy to much time trying to think of something clever to write, write three drafts of it, quickly grow to dislike each, and ultimately settle for something akin to what I originally had in mind but couldn’t quite execute well enough to be grateful for not having to write release notes today.

Web Release Notes: September 18, 2018

Improvements & Bug Fixes

  • When adding a transaction to a cash account, we now default the transaction to be cleared. One less click for those of us who use cash and one more click for those with an intricate multi-wallet cash clearing system.
  • Previously in manage payees, you could auto-categorize a payee to be Inflow: To be Budgeted. We (royally) broke that in a recent update but now we (royally) have fixed that with a proper regression test.
  • If you had a transaction categorized, then hid that category, editing that transaction would recommend creating that hidden category. Now it doesn’t.
  • We now prevent an edge case scenario that triggered multiple syncs of your Direct Import connections concurrently, when (in a movie voice) there should be only one.
  • We also now prevent autofocusing on the account type when adding an unlinked account on mobile, which is a bit forced behavior on mobile since it triggers the dropdown for selection right away.

Web Release Notes: September 13, 2018

Improvements & Bug Fixes

  • If we can’t determine the date format of your file-based import file, we ask you. But we weren’t remembering your answer so you had to remind us every time you (file-based) imported. That’s fixed now.
  • We show your authorized OAuth applications on your “My Account” page. In some cases we were showing duplicates. They’ve now been removed.
  • Previously, if you typed 1*1) into the inline calculator, the browser would look incessantly for the non-existent opening parenthesis, eventually crashing from the effort. We now simply ignore the unmatched parenthesis and carry on.
  • When recording a split transaction and clicking the “Add another split” button, we now focus on the newly added split’s payee field.

Web Release Notes: September 11, 2018

Our Attempts to Delight You

  • Some time ago we added steps to help you create a goal to pay off your balance when you add a linked credit card account with a negative balance. If you happened to step backward in that process (say, to fix a typo in the account name) we’d lose the account name and you’d see a blank field instead. That’s fixed now.
  • The confirmation banners we show at the top of the screen (e.g. after confirming your email or resetting your password) now appear in front of the onboarding steps (if they’re visible, of course). They used to appear behind the onboarding steps, which is to say they didn’t appear at all. You just had to intuit the message we were conveying.
  • If you didn’t select a category in the “scheduled transaction” step of onboarding, we’d show a warning asking you to remedy the situation. But after you dutifully selected a category we failed to remove the warning. Fair is fair, and you’ve held up your end of the bargain, so we now happily remove the warning.

API News

  • Previously, we JSON-encoded validation errors before returning them in a 40X error response to the client. That didn’t work well. We now return a comma-delimited list of errors as a simple string.
  • We’ve updated our API spec to remove the “nullable” types (was: "type": ["string", "null”] ; now: "type": "string"), which are not officially supported in the Swagger 2.0 specification. We were using these mainly for some develop-time tooling support, but it caused trouble for folks using our spec in their own tooling. The API still returns null values where applicable; this just changes our spec.

Web Release Notes: September 5, 2018

This release is solely focused on sprucing up the architecture underlying trials and subscriptions. It’s been a year in the making. We’re excited, to say the least. These changes will improve performance, in general, and position us well to build out functionality in the future.

Web Release Notes: September 4, 2018

Improvements & Bug Fixes

  • Some OFX files contain odd line breaks and other unexpected formatting in the memo field. We now parse those better so File-based Importing can read those files.
  • Fixed the warning displayed when creating an account with a negative balance for an account type that normally has a positive balance.
  • The “Add another split” button was really a common web link LARPing as a button. You still had to click on the text itself to add the next split line item. Fixed now.

Web Release Notes: August 30, 2018

Improvements & Bug Fixes

  • We now display a proper minus sign (Unicode U+02212 for the pedants among us) for negative amounts. It’s longer than a hyphen, easier to see, and technically correct (again, for the pedants among us).
  • Moving a reconciled transaction to a different account can bring the reconciliation out of balance. We now show a warning before saving such changes.

API News

(Learn more about our API.)

  • Previously we re-issued existing access tokens for subsequent application/user requests. This was problematic for apps with multiple clients because once a refresh token was used by one client, all the others would no longer be able to get a new access token from the refresh token because it was now expired. This issue is fixed now, as we issue a new access token for each request.
  • If any of the current month values for a category (budgeted, activity, balance, etc.) have changed, a delta request will now include that category in the top-level categories array, provided the last_knowledge_of_server dictates the client should know of the change. Previously, only changes to the category itself would trigger its inclusion.

Web Release Notes: August 23, 2018

Improvements & Bug Fixes

  • The available balance shown in the inspector for an underfunded goal had a yellow pill with a green pill inside of it! No more!
  • In other inspector news: upcoming scheduled transactions from closed or deleted accounts are not going to show up there anymore.
  • With our continued quest to improve the register performance, we made it faster to scroll through transactions using the browser scrollbar.
  • Deleting a category just got a little bit easier: now you don’t have to click an extra confirmation modal. Not that we want you to delete all your budget categories, but simplifying things a bit always feels good.
  • Fixed a bug where clicking a credit card payment category could cause a crash if your last payment was part of a split transaction.
  • When filtering out some categories in the Spending reports, the breadcrumbs weren’t updating correctly and kept showing “All Categories”. Fixed!

API News

  • When creating or updating a transaction, we used to allow dates to be date-“ish” and attempted to parse them. However, some formats were passing this validation but resulted in a 500 server error when saving the transaction. Now, we’ll require transaction dates to be ISO formatted (2018-08-23) to keep things simple and consistent.

Web Release Notes: August 21, 2018

What’s New

If you use File-based import, your bank might be sending transactions with dates formatted in such a way that causes them to appear off by one day when imported into YNAB. We’ve added a new option called “Adjust to local time” to address this when importing a file, which converts the transaction dates to your local timezone. You’ll be able to see a preview of the effect on the transactions prior to importing when selecting this option, so you can see if it will help fix this “off-by-a-day” annoyance.

Improvements & Bug Fixes

  • When making a split transaction recurring, we weren’t honoring the order of the sub transactions. It turns out, sub transactions in random order don’t look so nice in the register, so we now preserve the original order.
  • We fixed the little dot indicator for the currently selected month on the Budget screen, it was floating around but is now back to doing the work it’s meant to.
  • Fixed some styling for the Activity and Available amounts of the Hidden Categories. Now they look like all the other categories.
  • Another small tweak to our login page that should help password managers fill & submit the form.

Web Release Notes: August 16, 2018

Improvements & Bug Fixes

  • Keyboard shortcuts FTW. You can now navigate the “move money” and “cover overspending” popovers using the <enter> key. Pressing <enter> will move to the next field, or save when all fields are valid.
  • We now show pretty institution logos on the list of popular institutions when adding a linked account.
  • Marginally improved category deletion performance and made it easier to select a category you want to re-categorize.
  • When deleting a payee and choosing a new payee to change the old transactions, you now have the joy of a plain old select dropdown, rather than the functionally decayed dropdown we had before. Same for choosing an account and date format during file based imports. (I wish I could take credit for the deliciously evocative “functionally decayed” phrasing, but that’s all Chris. Ed.)
  • We fixed an issue with the date filters in the register where switching between a custom date range and a suggested one was not working correctly.

Web Release Notes: August 14, 2018


You can now use your Google account to sign up and log in to YNAB. This can be in addition to or instead of your email/password combo; both login methods will continue to work. Impress your friends by switching between the two with an air of nonchalance.

Improvements & Bug Fixes

  • Register scrolling performance got a huge boost. And that’s an understatement.
  • General performance improvement across the app (thanks to an upgrade to Ember v2.9).
  • We tweaked the login and signup forms to play nicer with password managers.
  • Imagine you’ve activated a filter on the accounts page (e.g. to show only transactions from “This Year”). If you then searched your transactions, we’d actually clear the filter so it wouldn’t interfere with the search results. Then if you cleared the search, we’d restore the previously active filter. And we did, for the most part. Except if you cleared the search term using the <delete> key we wouldn’t restore your filter. Or if you used multiple search terms and tried to clear the search by clicking on the little X icon. So when I wrote “we’d restore the previously active filter,” maybe I was speaking more aspirationally. Regardless, however you choose to clear the search, we’ll restore any previously active filters.
  • On some budgets, filtering by a date range other than “All Dates” wasn’t returning the proper results. Fixed.
  • Closed tracking accounts will no longer appear in the spending report.
  • Clicking on different Credit Card Payments categories was not updating the “last payment” section in the inspector. That’s fixed.
  • We recently made a change to focus on the outflow field when pressing <enter> on the memo field instead of saving the transaction. We’ve now reverted that change so pressing <enter> saves the transaction. Also, pressing <enter> on a selected transaction will activate edit mode, which sounds cooler than it probably is.
  • Our messaging was slightly off after you confirmed an email address change. The change went through OK, but the copy we displayed didn’t exactly jibe. That’s fixed now.

API Goodness

  • You can now pass in the pseudo-budget-id 'last-used' instead of an actual budget id, to specify the last-used budget. So instead of using something like, you could simply use It’s especially convenient if you only ever work with one budget.
  • If you specified a payee_id or category_id as an empty string (i.e. ""), we would return a 500 error. Not particularly helpful. Now, we’ll return a 400 error with a message indicating that “a valid UUID must be specified”. Use null if you don’t want to stipulate a payee_id or category_id. For example, for an uncategorized transaction you should specify "category_id": null.
  • OAuth refresh tokens can only be used once. If you obtain a new access token using a refresh token, you will be given a new refresh token that should then be used for the next refresh. We’ve clarified this in the docs.

Web Release Notes: August 9, 2018

A few release note poems for your enjoyment,
to go along with today’s deployment:

Improvements & Bug Fixes

  • When reordering your budget categories in Safari,
    dragging it out of view didn’t scroll, sorry.
    Now as you drag your category to the bottom or top,
    your categories will scroll so you can choose where to drop.
  • In Safari the keyboard shortcut Cmd + Shift + N,
    opens a new private window so your internet adventure can begin.
    We used to take over that shortcut to add a new transaction,
    now instead Ctrl + Shift + N or more simply Ctrl + N will handle that action.
  • Clicking the status icon of a linked account,
    no longer causes the information popover to dismount.
    Also while that popover is shown,
    pressing escape will make it leave you alone.

Web Release Notes: August 7, 2018

Improvements & Bug Fixes

  • If viewing a category in a month before a goal was created, we used to show a goal progress indicator that was blank. And no progress could be made because you were in a month before the goal was created. Now, we’ll display the category as if a goal hadn’t been created (because it hasn’t, at least not in the prior month).
  • Also, our new shiny available amount goal progress indicators were incorrectly showing on categories in months before any goal was created. Now they will not show in previous months. Kind of like finally fixing that mystery light in your car’s dashboard.
  • Fixed an issue where the categories dropdown would highlight multiple categories, no big deal.
  • If you imported a transaction, split it and then later matched it to a manually entered transaction (phew!), the splits from that imported transaction would forget to take that left turn at Albuquerque and show up in the activity for a category. We gave it better directions and a few carrots for the road.
  • Shifting gears to the register, holding down shift and pressing up/down let’s you select mutliple transactions. This used to work but we broke it but now it’s back. By the way, how do you say “mea culpa” if it’s more than one person’s fault? Wea culpa?
  • While the register hood was open, when selecting a transaction other than the first transaction, then holding down shift and selecting a transaction further down on the list to accomplish multi-select, all transactions from the first row would be selected rather than only those starting from the row you initially clicked. Fixed.
  • shift+click for transaction multi-select would not work if you held down shift and clicked another transaction checkbox. It would work if you clicked on another transaction row but if you clicked on the checkbox of a transaction, it would not multi-select. Fixed. Try not to wear out your shift key trying out all these shift key fixes.
  • Fixed an incorrect back navigation that was available when linking an account or managing connections, and no connections were available yet because nobody wants to back into that.
  • If you updated a budgeted amount and then pressed up, down or tab we would move the focus to an adjacent category but not update the budgeted amount. The available amount would update and navigating back would show the update so it was being saved but it was a display glitch.

API News

  • If using PUT or POST on /budgets/{id}/transactions to create or update a transaction and you specified an import_id (to mark it as imported), we will now return a 409 status code if another transaction with the same import_id already exists on the target account. Previously we would return a 400 error but hey, at least it wasn’t a 418 error because seriously, have you ever tried brewing coffee in a teapot?

Web Release Notes: August 2, 2018


  • When adding or editing a transaction, if you opened the Manage Payees window and changed the “Automatically categorize payee” option, we’ll go ahead and update the transaction you are working with because that’s probably why you updated the setting in the first place.
  • Credit Card Payment categories can now show underfunded warnings for scheduled credit card payments. That means if you have a credit card payment scheduled in your credit card account, you’ll see a warning on the budget screen if your payment category doesn’t have enough money! (This will only apply for new or newly updated scheduled payments so if you want these warnings to start showing up on your budget, deleting and recreating the scheduled payment is your ticket.)
  • More hotness for Credit Card Payment Categories: We’ve significantly improved the performance when clicking on a Credit Card Payment Category where the corresponding account has many transactions.
  • When hovering over the Available amount of a category with a “Target Balance by Date” goal, we would show a helpful tooltip explaining the progress of your goal but we were showing some <notsohelpful/> characters too. No more!
  • We fixed a minor alignment issue on the inflow/outflow inputs when editing a transaction. It was only happening on Internet Explorer 11 and Safari and fairly difficult to notice, but our keenly observant users are the best. We’re going for pixel perfection here folks.
  • We have added reCAPTCHA when connecting to an institution as an added layer of security and to make sure you are a real, living, breathing, human being.


The “Internal Master Category” category group contains categories that are not displayed on the budget directly. Two of these have been renamed for clarity:

  • Immediate Income -> “To be Budgeted”
  • “None” -> “Uncategorized”

Web Release Notes: July 31, 2018


  • Let’s say that this morning your Linked Account was having a temporary issue contacting your bank, so you dutifully used File-based importing to bring in your latest transactions. But, you changed your mind and clicked ‘Undo’. At this point, you would rightfully expect things to be just the way they were before you imported, but instead you see 3 transactions pending import on the account. Now, Undo will really undo that File-based import on a Linked Account.
  • Tabbing to the inflow and outflow fields on Internet Explorer 11 was incorrectly landing on the calculator icon, rather than the input box. Oh, IE, how we love you.
  • Navigating in the date picker with arrow keys was just not working on Internet Explorer 11. Oh, IE, didn’t we say we loved you?
  • When editing a transaction, clicking on a date (that was not a future date) was not advancing the focus to the next field. Now it will take you to the Payee field and you’ll be on your way.
  • For categories with a Target Balance or Target Balance by Date goal, we used to show the total amount that had been budgeted towards the goal (since it was created) in the inspector. This was meant to explain the goal progress but since these goal types are based on the current Available amount for a category, this was confusing. Now, we’ll show the current Available amount right next to the goal Target amount, so you can see where you stand. Unfortunately this change will not effect your actual goal progress.
  • When trying to sign up with an already registered email (you know who you are) we’ll show a friendlier message and give you a link (nudge) to the forgot password screen.


Have you heard about our new Public API? We’ve made a few improvements to it in this release:

  • We’ve added income, budgeted, and activity aggregate values to endpoints that return budget month data (like /budgets/:id/months).
  • If flag_name or cleared fields were specified as numeric values when saving a transaction, a 500 server error would be returned rather than a 400 error. Fixed!

Web Release Notes: July 26, 2018

Improvements & Bug Fixes

  • On the log in, sign up, and forgot password forms, we turned off spellchecker for the email field. We probably should have done that from the get-go. Actually, we did, but we got the syntax wrong (spellcheck="false" vs. spellcheck=false), so it doesn’t really count.
  • We fixed a number-formatting bug for budgets with number formats that use apostrophes. We were displaying the character code (&#x27;) instead of the apostrophe character itself. LOL
  • For Safari we fixed an issue where pressing the <enter> key on a budget field would correctly exit the field but not remove its calculator icon. Now we exit the field and remove the icon. Well, it’s not really removed so much as returned to the pile of unused calculator icons we keep off to the side, just out of view of your browser. It would be wasteful to throw them away. Calculator icons don&#x27;t just grow on trees.