This paper studies the problem of multi-agent planning in the environment where agents may need to cooperate in order to achieve their individual goals but they do so only if the cooperation is beneficial to each of them. We assume that each agent has a reward function and a cost function that determines the agent’s utility over all possible plans. The agents negotiate to form a joint plan through a procedure of alternating offers of joint plans and side-payments. We propose an algorithm that generates an agreement for any given planning problem and show that this agreement maximizes the gross utility and minimizes the distance to the ideal utility point. Key words: multi-agent planning, joint plan, side-payment, bargaining