I am facing the same problem. Basically, error 246 means that capture information has already been sent to the payment processor . According to the Cybersource server release notes :
A transaction can only be canceled if we have not yet sent information to your processor. Usually we present this type of information to your processor once a day, so your window for successfully executing the void is relatively small. We will refuse your canceled request if we have already sent transaction information to the processor.
If you test the void in the Cybersource sandbox (like me), I think that what happens is because the sandbox is a test environment and payments are not actually sent to the payment processor, Cybersource processes the captures as if they were sent to the payment processor immediately, therefore null capture will never work in a sandbox environment.
However, I make several assumptions, and I could not find documentation to confirm this.
source share