Subscriptions, Invoices, Webhooks - Request for clarification

I am building a web site where customers can subscribe to products every 3 or 6 months.

This is what we currently have: during the checkout process, we take payment from the customer using their card (including the verifyBuyer function). We then perform the following steps (all through API calls):-

  1. Create a customer record.
  2. Create a payment request, including the verification token from verifyBuyer.
  3. Save the customers card on file.
  4. Create a subscription plan for each product the customer subscribed to.
  5. Create a subscription to each plan, for each product the customer subsctribed to. Each subscription is linked to the card saved earlier.

My query relates to how Square deals with taking payment for each of the subscriptions with regard to invoices and webhooks. The reason is that we would like to be notified when a subscription payment is taken so that we can update our records for the customer and stock.

If I understand the documentation, when a subscription payment is due, Square will generate an invoice for the subscription, and attempt to charge the cost to the linked card on file. If the payment succeeds, then it will issue the invoice.payment_made webhook. If the payment fails, for whatever reason, it will issue the invoice.scheduled_charge_failed web hook.

Can anyone confirm if my understanding is correct?


:wave: Yes, all is correct with the behavior of subscription payments with Square. :slightly_smiling_face:


Thank you.

@MarcSS and the rest of this thread :wave: we too are creating subscriptions using APIs (subscription.create) with cards on file. And we are listening for webhook event invoice.payment_made. This is currently set up on the sandbox.

We get confirmation emails when the card on file is charged automatically but we do NOT see any invoice.payment_made related webhook event. Instead we see order.created webhook event.

Wondering if we need to setup something differently or if there are any known issues with invoice related webhooks. Thanks for your help.