I know this is an old thread, but as soon as I read this question I had an idea how to do coupons in BlackBerry World that might be useful to anyone else researching this question...
Build your app using the Freemium model. When registering your app in the vendor portal define an in-app purchase for a full price upgrade from trial mode. Also define one or more discount upgrades with a lower price than the first one. In your app code the upgrade logic to ask if the user has a coupon code. Either just accept it, or validate it against a server you control. If you do the latter you can have your app select which of the discounted upgrades to perform based on what your server responds with. For instance, your server could return the digital good ID for the upgrade that matches the coupon code.
Now, your app will go ahead and purchase the upgrade using the digital good ID that matches the coupon code entered. Since the only way to convert your app from trial to full is via an in-app purchase, nobody can cheat and get a discount without a valid code since your server tells your app which good ID to use for the purchase.
This method should even make it possible to have time-limited coupons. When your server responds with the digital good ID to use for the in-app purchase, if the coupon has expired just use return the full price good ID instead.
I like this idea so much I'm probably going to implement this for my latest app. :-)