I use payments through stripe (set up in bubble only for customers to update a card / add a card and delete a card through my bubble website), however i still use stripes dashboard only to check on anything that deals with specific financial data. It does take a bit of messing around to get everything connected i spent two days trying to figure it out lol. I wrote a detailed post on what to do in order to connect Stripe.JS if you need.
As far as invoices you can have it set up to where the customer can access them from your website. You can either display the data directly on your site in a list, or have a link that re-directs the user to stripes portal to check an invoice its called “customer portal” on stripes api page link here: Customer portal
The portal gives a 45 second or so timer if the user doesn’t access it, it logs them out.
If you use stripe.js you have to make sure you create different data sets inside your app to store data that stripe is going to automatically generate when you use it in your workflows, the only way to capture it is for you to create data points for (Customer ID) , (Credit Card ID) and (Credit Card Token)… and it must be captured and stored WITHIN the workflow itself as a security measure. This was very confusing to me at first… and the customer has to be created as a “user” first within your bubble app before it can create a “stripe customer” with the stripe.js plugin as a security feature also.
Whenever you have a workflow i.e (lets say you have an input for a new customer to add a new card on file) you’ll set up your WORKFLOW as such:
when “submit” button is pressed…
- create a new user
- create a stripe customer (stripe.js stored to user data type)
- create a stripe token (stored to user data type)
- update user’s (Customer ID datapoint you created under users) “result from step 2&3”(this is how you store sensitive data in workflow)
- create a stripe card (stored to the user data type)
- create a stripe card id (data point you created under users)
with stripe.js there is a difference between creating a “Card” and a “Card ID”… the card is creating a shell of data to store so your bubble app can recognize it, the “card id” data type, is what attaches that card to stripe to confirm payments because the card was identified to belong to a customer hence “i.d”… they were identified because you created the customer as a “user” in your bubble database. in bubble, the user datatype is protected with privacy so this is why you must create the payments using flows under the user.