For a Hamiltonian with degeneracies due to a conservation law, the scattering states will in general not have a definite value of the conservation law. In your case, Kwant returns scattering states that are arbitrary linear combinations of spin up and down, so it is not possible to label the amplitudes in the scattering matrix by spin.
However, in Kwant 1.3 a feature will be added that allows for the construction of scattering states with definite values of a conservation law. See here
for an explanation of the basic idea behind the algorithm.
We're currently working on implementing this feature in Kwant itself. The good news is that we're practically done - here
is a link to a git repo with a functioning implementation. After you clone the repo, check out the branch cons_laws_combined, which contains a version of Kwant with conservation laws implemented. This
notebook contains a simple example to illustrate how to work with conservation laws and the scattering matrix.
I invite you and anyone else who is interested to give it a try. We'd appreciate any feedback!
In your case specifically, there would be two projectors in the new implementation - P0 which projects out the spin up block, and P1 that projects out the spin down block. If they are specified in this order, then the spin up and down blocks in the Hamiltonian have block indices 0 and 1, respectively. In the new implementation, it is possible to ask for subblocks of the scattering matrix relating not only any two leads, but also any two conservation law blocks in any leads. To get the reflection amplitude of an incident spin up electron from lead 0 into an outgoing spin down electron in lead 0, you could simply do smat.submatrix((0, 1), (0, 0)). Here, the arguments are tuples of indices (lead index, block index).