CSRF reports on unwanted user data on the server, on which the attacker believes that the user is logged on.
The idea of protection is that the server associates the token with your session and sends it to you as a cookie and as a requirement for the payload. Then, by sending something, you send the token in the payload and as a cookie. Therefore, an attacker cannot guess which token is in a cookie or session. If the server receives a message with two different tokens, it will be rejected.
I think it would be nice to put the payload token in the header, as it is not a “Cookie” or any other header that is “remembered” and sent automatically by the browser.