or maybe
on 1:TEXT:!add*:#: {
if ($chan == %chan) {
set %nick $$2
set %nick $+ .name -
set %nick $+ .surname -
set %nick $+ .address -
set %nick $+ .phone -
set %nick $+ .spend -
set %nick $+ .advance -
set %nick $+ .coffee -
set %nick $+ .final -
write template.txt %nick.name _ %nick.surname _ %nick.address _ %nick.phone _ %nick.spend _ %nick.advance _ %nick.coffee _ %nick.final
}
}
on 1:TEXT:!add*:#: {
if ($chan == %chan) {
could be
on 1:TEXT:!add*:#yourchannel: {
set %nick $$2
set %nick $+ .name -
set %nick $+ .surname -
set %nick $+ .address -
set %nick $+ .phone -
set %nick $+ .spend -
set %nick $+ .advance -
set %nick $+ .coffee -
set %nick $+ .final -
write template.txt %nick.name _ %nick.surname _ %nick.address _ %nick.phone _ %nick.spend _ %nick.advance _ %nick.coffee _ %nick.final
unset %nick.*
}
unless the channel name needs to be dynamic
yes chan needs to be dynamic

and somehow your solution is not working. It writes though, but the vars (needed for further editing) are named %nick.address etc. So not the unique one's i need like %eric.address or %myla.address