Now I have been working with a client for almost a month now and all his feedback was praising the work and being very happy with it. Then he starting disappearing for a couple of days and replying very late. Then now we had an arugment where he didnt want to pay the extra work that was done and wants a dispute of the whole project. Even though he has the files with him. And accused me of ruining the project and he ended the contract. What is there to be done to reverse this dispute and have the payment of the lessons that weren't paid for?
If the client no longer wants to work with you, then that is his right.
A client may end a contract AT ANY TIME, for any reason.
But disputing the whole project?
That is unprofessional, unethical, and inappropriate for the client to dispute the work you have already delivered to him, after he approved it.
No matter what, you should communicate with the client in a professional, polite way. Hopefully you can work things out with this client and end things in an amicable way.
But I don't know if the client is going to act in a reasonable, professional way.
It sounds like the client might simply be trying to get the work for free, or steal money from you.
What should you do now?
If there is a "dispute" then that means you can say "yes" or "no" to his request for money.
If you did the work, you should be paid for the work. You should say "no" to any request for a refund for work that you actually did.
For "future" work, or for any work associated with unfunded milestones? (Such as "lessons that weren't paid for")... You need to get that kind of thing go.
If the client promised you $500 in total, but has only released $250, then you should try to keep $250. Upwork will not help you get money that was "promised."
If the client funded $250 worth for milestones and released that money to you, but you did $250 worth of "extra work," then you should NOT try to get paid for that extra work. Upwork will not help you get paid for the extra work either.
Only funded milestones count.