Cleanup takes time. No matter if it is refactoring, fixing bugs, updating supporting libraries, adding the proper documentation, or test coverage to your code. There is no way around this.
It will affect your deadlines today, or sometime down the road. The difference is that today, it’s your choice to make.
Thinking that you get away with this is just naive. It just can’t happen. Not unless you give up on the project or decide to rewrite the whole project, which is an entirely different problem.
Balancing the feature and fixes needed with the necessary clean up work is not easy. It’s hard. You are not alone in having to make these choices. Making those calls is hard, no matter if you are the developer, internal or external client, product owner, or even an end-user. The work is needed. Sooner or later, it will become inevitable, and the choice won’t be yours to make.
There aren’t a lot of options other than just “doing it”. Just as it’s not wise to argue the existence of gravity, which you can debate all you want if it exists or not. If you try to debate this, you are going to have a bad time.
It’s been proven time and again that all the money in the world can’t get you off the hook. There are enough examples to go around.
What makes you think you can get away with it? Is it hubris, inexperience, or you get an adrenaline rush from living on the edge? It doesn’t matter. All that matters is that you should figure out a way to do it sooner, rather than later, and make communication front and center since your team, clients, or users need to understand and give you the necessary support.