Hello Tyler,
The flow you describe is definitely doable through some of our APIs though that will require custom development on your end. Based on what you describe, you want to change the amount you charge your subscribers each month based on some other system's data. To do this you have to "modify" the Invoice that will be created each month for their subscription.
Since the price is "dynamic", you'll want to start them on a $0/month base subscription just to have a billing cycle running and each month you can modify their invoice to add the correct fee for this month.
Using a webhook would be the best way in that case and your intuition was right. Each month, when a new cycle starts for that specific subscription, we will send the `invoice.created` event to your webhook endpoint. At that point, you can then look up the amount to charge them in your database based on Booking.com's data that you cached for example. At that point, you can add an invoice item via the API as documented here [1] for this month's amount.
It's also important to note that the first invoice behaves a bit differently and can't be modified. We finalize and attempt to charge that first invoice upfront so you can't just wait for the event for that one. In that case, when you create the Subscription for that $0/month Price, make sure to also pass this month's expected amount as a separate invoice item in the `add_invoice_items` parameter [2].
This will require some custom code on your end, both for the subscription creation and the webhook handler so if you haven't built something like this before, you might need to hire a freelancer.
Hope this helps!
Remi