Jump to content

Adjusting a payment


Recommended Posts

How can I manually adjust a payment?  My Cubecart setup uses an Authorize.net extension (hacked up to work with Payeezy) in "Authorize & Capture" mode.

My store offers combinations of discounts that customers don't always get right, sometimes in our favor sometimes in their favor.  I would like the ability to adjust their payment before settlement.  How do I do this?  Do I do it in Cubecart Admin or do I have to go to the Gateway company?  I imagine the mechanism is a lot like adding a tip onto a restaurant bill.




Link to comment
Share on other sites

To keep things straight, I would imagine there to be a three step process:

1. The customer checks out with making a payment in Authorize Only mode. This "reserves" an amount on their credit card but doesn't actually take it out. If the following steps do not happen, the 'reserve' is eventually released. Depending on the card's issuing bank, this could take up to a month (an extreme case, but I've seen it).

(I'm not sure how the module's code records an Authorize - still at Pending or will it go to Processing.)

2. After consulting with the customer, or at least making the customer fully informed of the extra charges and discounts, the merchant needs to sign in to their payment processor's "Transaction Resolution" screen. There, adjustments are made and finalized.

3. The merchant then makes similar adjustments to the order at CubeCart's Order Summary screen.

If not already known, and unless a plugin alters this, CubeCart accepts only one coupon per order. That one coupon either gives a fixed money amount or a percentage amount based on the sub-total, and/or affects shipping costs. When you say "the customer doesn't always get right", are you sure they can actually get to the right solution?

Edited by bsmither
Link to comment
Share on other sites

I guess I should explain the discounts.  I have these two items in my shopping cart

  • Discount (-$1)
  • Adjustment ($1)

Customers figure out their own discounts and select the corresponding adjustment using these shopping cart items. Sometimes they apply an incorrect discount.  If you'd like further explanation of why the onus is on the customer to adjust their totals, you can see the details of the discounts Here or Here.  The shopping cart just doesn't know who gets discounts and how much.  I could probably write this into the MySQL database and hack up the code to reflect the correct discount, but that's a project for the future.

I read somewhere along the way (that I can't seem to find anymore) that I can adjust a ticket up to 25% or something like that before settlement.  And sometimes people overpay so I want to adjust the amount before it goes to settlement.  My bankcard processor does NOT refund any fees when I issue a refund, so I like to get it right before settlement.  This may be something to take up with the Gateway, but I thought there might be a way to "intercept" the transaction in Cubecart.

PS:  I'm using Authorize & Capture.  Should I instead use just Authorize in order to make adjustments?

Link to comment
Share on other sites

I've got another issue.  Although I can create a product called Discount that costs -$1.00, and that it appears to work just fine when I click on "Your Basket" at the top right, when I go to checkout, the unit price of the discount is changed to $0.00 which kind of defeats the purpose.

I suppose it's a way of making sure the Gateway doesn't allow people to withdraw money from my account by charging -$50 or whatever, but do you know a work around?

Link to comment
Share on other sites

We would appreciate having some clarification.

You have created a product that costs -$1.00.

How is a customer restricted to purchase this product only when applicable?

Is eligibility for this "Discount" product based on a complicated matrix of conditions?

We ask this in the hope of brainstorming other possible solutions.

Link to comment
Share on other sites

Yes, there is a complicated matrix of conditions that determine a customer's loyalty discount.  The "loyalty discount" can be any $50 increment between $50 and $700 depending upon how often a customer has purchased from us before, information CubeCart can't possibly know without linking to the website's database at a minimum.

There are also referral discounts available to customers who refer others to us.  This also starts at $50 and is unlimited up until the full price of the cart.  We won't start paying people if their discounts are higher than the price of their shopping cart though.

We also run a 3-Day sale once a year whose discount is either $50, $100 or $150.

So it's a complicated matrix of conditions which Cubecart has no way of knowing about.  I'm OK with leaving the discount in the hands of the customer (even if they get it wrong sometimes).  But when they get to the checkout screen, the -$1 discount item (of which a customer may "buy" 100 to get a $100 discount) shows a unit price of $0.00 instead of -$1.00.  

I can probably take time to find and alter this in the PHP code and upload it to GitHub but I'm not certain it's a desirable feature for everyone.  I'm not crazy about hacking up the code only for my store because the next time I download the latest code updates from GitHub, I'll end up overwriting my changes or they will at least be out-of-sync.

What are your thoughts?


Link to comment
Share on other sites

Thanks for the tip!  Near "Update Subtotals" I see the line

                if($product['price']<0) $product['price'] = 0;

and can just comment it out. I'm not sure about the tax class and other items you're looking into however although I guess I can see that a tax applied to a negative amount will give negative tax (which seems like it makes sense so that people pay tax on only what they are charged).

I also looked a bit further down the code and found:

            if ($this->_total < 0) {
                $this->_total = 0;

so it looks like even if I order so many discounts that the total is negative, the total will still get set to zero.  I will happily change this code in my own installation, but I don't know if this is a feature that would have more widespread appeal or if there's something else I'm not considering.

What do you think?


Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Create New...