Wir hatten eine Vereinbarung.

I find it very difficult to remember all the different words for “agreement” in German, let alone what their different connotations mean and how to use them. When I saw this sentence my first inclination was to guess “Zustimmung” and then “Abmachung” and then “Verabredung”. And there are more I’m pretty sure, but I’m less familiar with them.

What is the difference between these different words?

I think it would be better for teaching them if the sentences used to teach them gave some additional context. There is very little context in this sentence, like I could imagine someone speaking the English sentence “We had an agreement.” in many different contexts, like it’s not clear if it’s a casual, verbal agreement, or a legal, written agreement. I’m pretty sure Vereinbarung has a connotation of a more official, written agreement, but I’m not sure. I am confused and would like to learn more about these words.

Verabredung >> mostly used to refer to date/time, not to the specific content
Vereinbarung >> used to refer to content, implies a certain gravity (not: Wir haben die Vereinbarung, dass er die Äpfel kauft)
Absprache >> used to refer to content, does not imply a certain gravity (Wir haben die Absprache, dass er die Äpfel kauft)
Zustimmung >> always needs a concrete reference point. Vereinbarung and Absprache are abstract, meaning you can use them without reference to the content, Zustimmung needs reference. (Louis und ich haben die Absprache, dass er mich morgen vom Flughafen holt und Louis hat die Zustimmung seines Vaters, dass er dafür dessen Auto nutzen darf).
Abmachung >> entirely synonymus with Absprache
Abkommen >> a formal agreement such as a contract


Let me also try:
Verabredung: is an appointment, i.e. you agree on a time and location of a meeting. An entry in your schedule.
Vereinbarung: is like an oral/handshake contract. It implies a kind of promise. “Wir hatten eine Vereinbarung” feels like it continues with “… und du hast sie nicht eingehalten” (… and you broke it).
Absprache: Is when you agree on how to proceed. “Sich absprechen” means that you make sure that everyone has the same idea of the plan.
Zustimmung: Two meanings: 1. Expression of the same opinion/vote, support. 2. Permission. Here it’s the same as “Erlaubnis” (like in dlobok’s example sentence).
Abmachung: In my opinion it is somewhere between Absprache and Vereinbarung. It may also imply a promise. You could use it in the example in question and it would feel the same.
Abkommen: is a formal contract between huge entities or groups, such as big companies or (usually) countries.