Refunds for subscription payments

Hi. I have couple of questions about how refunds work with subscriptions. So far, as I understand, in order to make a refund you need to get a payment id for a recurring payment of a subscription. Then use refunds api to refund the payment. The questions are:

  • What is the best way to get payments data. Does it come through webhooks on scheduled payment, or should I do it myself.
  • Will the subscription get cancelled automatically or do I have to do it manually.
  • Where do the refunded money return to : card on file ?
    Thank you for your answer in advance.

With our APIs and webhooks you can get payment data by making API calls or subscribing to webhooks. Basically you can do whatever works best for your business need.

When a payment is refunded the subscription isn’t canceled. You’ll need to manually cancel the subscription if that’s the desired behavior you want.

Refunds can take anywhere between 1-7 business days. This all depends if we need to debit the linked bank account and if the refund falls somewhere near a weekend or holiday. :slightly_smiling_face:

Thanks for the answers. So if I am subscribed to payment.created webhook , whenever subscription cycle is up and card is charged , payment object will come to the url I provided. Is that correct ?

Yes, that’s correct. :slightly_smiling_face:

Is there a way to determine the origin of payment ? For example subscription id . There is no such field in list payments method, so it gets really hard to find a payment if you don’t have a payment id.

With the Subscriptions API an invoice is created for each subscription payment. That invoice will have an order_id that you can use to call the Orders API. In the orders response will be the payment_id that you’ll use to make a refund. :slightly_smiling_face:

Hello again. I have tried the process you have described and it works, so thanks for answer. Feedback from my perspective: it would have been really great if payment object had an origin field. For example, payment_origin: { type: “SUBSCRIPTION”, id: subscription id here} . Current process is very resource and time heavy.

Thanks for the feedback @Tamtox! We’ll pass it along to the team.