From what I understand, when retain is marked as true, the payment_method is saved, and the verification_value is not retained. In our process, we tokenize the card first (marking it as pending in our system), then sending the purchase request. By saving and marking the retain value false, when we send the purchase request, you send the verification_value. if the card is denied, then we remove the pending payment_method from our system. 

The reason for this process is because we started with Authorize.net CIM, and this was there workflow. We also want to keep the flexibility of creating the token, then processing the purchase separately, with the security that the verification_value will be sent and verified with the purchase is processed. 

I recognize this is not how many/most of the AM::SpreedlyCore consumers will use it, but for now, it is how we do.