I’m trying to start a small web development freelance company that specializes in custom lower-cost static websites for local businesses. By the nature of static sites, or at least the stack I’m using, a lot of the functionality is driven by third party services (hosted by Netlify, CMS by Contentful, forms be FormSpree, mailing list by MailChimp, analytics by Google, and so on). Every service I will support will offer a free tier. I want to offer integration of these services into the website as add-ons to my site development package. However, I’m having trouble determining how to get these accounts created, integrated, and in the hands of the client in an efficient way. It seems my options are:

1) Create and manage the accounts myself. This allows me to have the accounts available for integration whenever I need them with full access and relieves the client from doing any set up. However I’d have to manage their subscriptions for them and be on the hook for any charges if they didn’t pay me for some reason.

2) Create the accounts myself and transfer them. Since all the services I’ll use have a free tier I can in theory create all the accounts myself without having to input my credit card, and then just change the email account upon transfer to put the account in their name. The problem is I’m sure some services don’t make it this simple, and if any require a credit card to start the account then I’m back to step 1.

3) Likely they most recommended and safe option, I tell the client to create the accounts and I just integrate them. This relieves me from any worries about managing the accounts or being stuck with the bill. However, this feels really unprofessional to offload this burden to the client, setting up ~10 different services can take a lot of work! It may also lessen the perceived value of me integrating the services if I make them set them all up. Plus it would obviously impact my development time if I have to wait for them to create all of these accounts, especially the hosting account itself.

Is there something I’m overlooking or is there a best practice for this?