It's possible to withdraw balance on a loyaltycard. In CustomerComponents.asmx there is a method AddLoyaltyCardTransaction() which can be used to save or withdraw loyalty points. It's important to submit the LoyaltyCardId, together with the PointsChange and a boolean 'IsWithdrawal' which indicates if the 'PointsChange' value adds to the loyaltycard or substracts. This also means that PointsChange can always have a positive value.
To be able to calculate the number of saving points, it's required to know the value of a single 'point'. Each loyaltycard is bound to a loyaltycard type. The screenshot below containts an example of a loyaltycard type defintion. In this example, 2% of the value of each sale is being saved as loyaltycard points. Each saving point has a value of 0,01 (EUR in this administration). So when buying for 20 EUR of products, 2% will be saved which means 0,20 EUR will be suitable for savings. This will result into 20 points, because each point has a value of 0,01 EUR.
When redeeming saved points, in this example a redeem point also has a value of 0,01 EUR. So when for example 50 points are available for redemption, a discount of 50*0,01 EUR = 0,50 EUR can be given.
The last thing to notice on the loyaltycard type example is redemption is only allowed when the loyaltycard has a total value of EUR 10.
The support for 'price' based loyaltycards will be removed from RetailVista in 2019