Salut,
Tout d'abord :
$kit = $_GET['id'];
$fi = mysql_query("SELECT prix, nom FROM kit WHERE id=$kit") or exit(mysql_error());
$fetch = mysql_fetch_assoc($fi); // Il faut quand meme aller chercher l'assoc
Vive l'injection SQL qui peut il y avoir

, je pense que tes utilisateurs auront même pas besoin de points pour acheter des articles. ^^ Pense à échapper.
Ensuite :
$pts = $points-$prix;
mysql_query("UPDATE utilisateurs SET points='$points' WHERE nom='$user'")or exit(mysql_error());
C'est bien ce qui faut faire : mais si tu lui remet les points qu'il avait avant : $points , ça sert à rien.

Donc c'est mieux comme ca :
mysql_query("UPDATE utilisateurs SET points='
$pts' WHERE nom='$user'")or exit(mysql_error());
Après pour ce qui est de l'envoi des headers, essaye avec ce code :
header("Content-Disposition:$attachment; filename=$fichier_client");
header("Content-type: application/force-download" );
header("Content-Transfer-Encoding: application/zip\n")
header("Content-Length: ".filesize($fichier_local));
header("Content-Description: File Transfert" );
readfile($fichier_local);
Il y avait des erreurs dans ton code : compare le mien avec le tien tu verras où elles sont.
Cette page contenant le script est elle incluse dans une autre page comme par exemple ?
<div>Entete de la page</div>
<div><?php include('tapage.php'); ?></div>
<div>Pied de page</div>
Si c'est le cas tu devras utiliser : ob_start(); et ob_end_flush();
Voilà, j'espère que ça marche maintenant. Dis nous si ça ne fonctionne toujours pas. Bonne chance.