Services Plugins FAQs

Stripe Connect- Holding Transactions for a Marketplace

Also, I tried testing it out this happened (see screenshot):RBStripetest

This was just after authenticating a new test account, so there was indeed a seller id. I saved the stripe-user ID as the seller id after the oauth (which I saved to the user as a variable), and then plugged that in for “stripe marketplace- link a customer to a seller” in this transaction.

Sorry for so many errors… once I understand this and more of Bubble I’ll be helping others out lots too! Thanks for your help.

Hi @alex4, thanks for feedback. Could you please share screenshots of the entire error message. It would be best, if you also share your console logs when this error is triggered. So we can better understand what issue might be and get back to you asap. :pray:

I’m used to you only replying at 2am my time so this is a surprise, haha. Here we go!

Hi @alex4, based on this error, the IDs are not setup properly on ‘Link customer with a seller’. It has to be one customer ID and one card ID which belong to that customer and then the seller ID which belongs to the user that receives the money. Please check documentation here https://docs.zeroqode.com/plugins/stripe-marketplace-express-plugin where it is explained how the action works.
Afterwards, you make ‘Seller charge a customer’ where you use the token created from previous step and also the ID of the seller mentioned above.
Then, when you capture, you use the resulted ID from ‘Seller charge a customer’ step and the seller ID again.

Thanks!

But how did you get the ORIGINAL seller ID?

I had everything else you said there all laid out. My sellerID seems to be the error. I read that whole user guide and it doesn’t mention how the seller ID originates.

I’m presently using the stripeID from when they create an account/link their account, but that doesn’t seem to work.

If you’re available, perhaps we could schedule to be online at the sametime? Then we can crush this out much faster rather than a back and forth. I’m in MST timezone (7:00), but I can be flexible with meeting early morning or late evening to coordinate.

Hi @alex4, the seller ID is obtained based on the ‘Create a seller’ action. Here is a screenshot in case of our demo app, to showcase:

You locate the seller ID based on the result of previous step (when you create a seller).

Please check our plugin documentation and also the editor here Zeroqode-demo-19 | Bubble Editor for more settings information on this use case.

Unfortunately, it is not possible. We provide support via forum and you can be sure that we’ll get back with a working solution as feedback as soon as possible.

Thank you for understanding. :pray:

We also encourage users to have an intermediate level of Bubble in order to easily integrate and use our products, or at least a good grasp of basics so it would be easier to understand the fundamental functionalities embedded.

Fair. I’ve been at it for about a month and a lot of things have come quite easily but this is probably the most advanced one I’ve had to deal with.

As mentioned though, I did not create a seller, I used the Stripe Oauth. Do I have to create a seller after that has occurred in order to get the SellerID or can I reference it somehow?

On that note, I am trying to create a seller while referencing the Oauth and cannot create a bank account token to then create a seller as I cannot figure out how to reference their chequing and institution numbers.

Had an idea so we’ll see if that works…

So I decided to try calling on the completed connect express account event using the API to create a bank account token, then to create an individual seller from that token. I then saved the sellerID in the user profile to call on when someone wants to rent from them.

When testing, I got the following error. It occurs after the account is connected and I try to create a bank account token by retrieving the seller from the connect account event for their data.

Workflow error - The service Stripe marketplace - Retrieve a seller just returned an error (HTTP 403). Please contact the plugin author directly for feedback. Raw error: { "error": { "code": "account_invalid", "doc_url": "https://stripe.com/docs/error-codes/account-invalid", "message": "The provided key 'sk_test_lx******************3fCA' does not have access to account 'sk_test_7SYvY6hCoFkWOKlxW1XfREwW00F5u1QuMS' (or that account does not exist). Application access may have been revoked.", "type": "invalid_request_error" } }

Here are some screenshots of my workflows. I added how I would create a seller from the bank account token so you can see if there are any errors in advance.

As you can see, I used “access token” here, while that didn’t work, I tried Stripe_user_id instead and it worked.

But, alas, I then tried placing an order and this error happened, which led me to realize that the initial save of the seller ID returned a “0”.

Workflow error - The service Stripe marketplace - Link a customer to a seller just returned an error (HTTP 403). Please contact the plugin author directly for feedback. Raw error: { "error": { "code": "account_invalid", "doc_url": "https://stripe.com/docs/error-codes/account-invalid", "message": "The provided key 'sk_test_lx******************3fCA' does not have access to account '0' (or that account does not exist). Application access may have been revoked.", "type": "invalid_request_error" } }

So ya, I guess it didn’t work after all.

So I went back to your bubble test app and found an account number created was: acct_1GfYkHAm9fjIA7ra

Now I managed to get acct_1GfYXwDWDPBKHTNv by saving the Stripe_user_id from the oauth event. But got NOTHING out of the “create a seller” event. Odd.

Also, why do I need to create a seller if they are already created in Stripe? It doesn’t seem to do much on my end.

I then tried with this account number and got the following error:

Workflow error - The service Stripe marketplace - Link a customer to a seller just returned an error (HTTP 400). Please contact the plugin author directly for feedback. Raw error: { "error": { "code": "parameter_invalid_empty", "doc_url": "https://stripe.com/docs/error-codes/parameter-invalid-empty", "message": "You passed an empty string for 'card'. We assume empty values are an attempt to unset a parameter; however 'card' cannot be unset. You should remove 'card' from your request or supply a non-empty value.", "param": "card", "type": "invalid_request_error" } }

I’ve been trying this for 4 hours now so I’ll just await your reply.

A video tutorial/test app on how to do payments using Stripe Oauth rather than making the account in the app would be helpful. And one on delayed payments.

Hi @alex4, thank you for feedback!

My bad. If you already have an existing account, you can use to connect the existing account instead, where you get that URL code which you can lately use when you complete connecting an account call, then in the next step you reference to previous step based on obtained result, and get the Seller ID, just the same way it is done in demo screenshot. In this case, it is not required to create a seller, indeed.

This use case is based on these two parts of documentation https://docs.zeroqode.com/plugins/stripe-marketplace-express-plugin#connect-express-standard-account.

Please give it a try again. If there are any errors again, let me know.:pray:

In that case I guess we did a bunch of running around for no purpose XD

That leaves my most recent response as the next issue. With the account ID working, it looks like that problem was about the card ID. I’ve since figured that out (I had the workflow running on a different button than I was pressing…). But now the customer ID isn’t appearing/being saved/created.

I’ll show my flows for that:

!

Here is a log. Ignore the card id part as I fixed that, but the customer id is still not generated.

This seems odd because the customer was created, but no ID is coming from the workflow.

Ya, I really can’t figure out why the customer id isn’t being generated despite a customer being created. Seems to replicate your bubble example.

Hi @alex4, thanks for sharing the screenshots. It is confusing on this issue, because it is still not reproducing on our side. We have tried to test this use case. However, could you please check if you don’t have duplicate plugin elements on your app page. Perhaps there might be multiple plugin elements with the same name.

Also, on this step:

Do you address to the previous Result of step1’s CustomerID?

Also, try to make sure that you are using the right card token, however, in the screenshots it seems to be correct.

It would be better to keep the following order: first you use a separate workflow to create a card token, then when card token is created you create a customer, set the state for CustomerID based on previous step, then set the state for CardID. Just as in our demo app. Some of the steps are already implemented, but just make sure everything is right. In this case, if everything is configured properly, you should be good to go with your app by now.

Hope it helps! But if you still experience some errors, we’ll check on them inside your app.

Thank you. :pray:

So did all the above with no change BUT then I noticed something in the debugger:

2020-05-07 18_59_48-Our Cabin in Rustic Montana

So I used a test card and got a new error:

Workflow error - The service Stripe marketplace - Link a customer to a seller just returned an error (HTTP 404). Please contact the plugin author directly for feedback. Raw error: { "error": { "code": "resource_missing", "doc_url": "Error codes | Stripe Documentation", "message": "Customer cus_HEoFUFfEdliRFC does not have card with ID tok_1GgKdMBMqb3OO4NKzP3sv6x7", "param": "card", "type": "invalid_request_error" } }

Hi @alex4,

Based on the first debug error, please make sure that you are using test API keys for testing version of your app and live API keys for the live one.

Based on second error, when you ‘Link a customer to seller’, you insert the customer ID that has to be in the following format cus_xxxxxx, the seller ID which has the format acct_xxxxxx and the card ID that has the format card_xxxxxx. The error shows that you are creating a card token. When you create a card, you actually have to save the user’s card ID into your database, then use this one when needed.

As for the API keys: If I’m in test mode and have the dev API keys in the plugin, does it automatically use those ones? If so, then we’re good here.

As for the formats, all of those are correct as evidenced in this screenshot where I had the values visible during the transaction test:

As for the card being saved, I see that I was referencing the token rather than the saved id in the linking customer and seller action.

Moving past that, to seller charge a customer, I managed to tackle a few errors successfully. I’m figuring out how this debugger works and the importance or checking for typos/mis-references.

The service Stripe marketplace - Seller charge a customer just returned an error (HTTP 400). Please contact the plugin author directly for feedback. Raw error:

{
"error": {
"message": "You cannot create a charge on a connected account without the card_payments capability enabled.",
"type": "invalid_request_error"
}
}

Is this error related to testing?

Also, assuming we got that part successfully beat… For when the charge goes through later, do I need to add anything to the amount? Or do I leave it blank so as not to change the initial charge (which included an app fee but there is no spot for an app fee in this event)?

Hi @alex4, thanks for these screenshots!

The API keys part seems to be ok by now. The reason of the ‘Seller charge a customer’ error is the capabilities that have to be set for card_payments:

image

But, as I can see in the previously uploaded screenshots, everything seems to be configured properly on your side. However, there is an issue regarding this step:

You cannot add bank account to express accounts. If you are using express accounts for your users, then you have to ‘Create dashboard link’ and user will add his account and modify necessary information on his own.

Things like create bank account, create seller, update seller - are working only with custom accounts.

For existing stripe accounts, all updates and changes have to be done manually within owner account dashboard. What it is done in the screenshot with create bank accounts, it is not for standard/express accounts.

If you are using express accounts, then you have to connect them with Connect standard/express account, then complete them with Complete account connection and you’ll have to offer your users a button that, being pressed, will redirect users to their Stripe dashboard by using Create dashboard link.

As for standard accounts, it is the same process but just without the dashboard link part.

Your users will manually log in with their Stripe account and perform actions they want.

But if you want to use custom accounts, then you can replicate the way it is done in our demo app.

The way it works is, if you leave this amount field empty, it will take all sum of money that has been paid.

Hope it helps. Thank you for patience :pray:

Thanks Alex.

That bank account screenshot was when I was trying to create a seller like you had mentioned before you noticed I was using express Oauth. So that is all deleted.

What about this error that came up???

The service Stripe marketplace - Seller charge a customer just returned an error (HTTP 400). Please contact the plugin author directly for feedback. Raw error:

{
"error": {
"message": "You cannot create a charge on a connected account without the  `card_payments`  capability enabled.",
"type": "invalid_request_error"
}
}

Hi @alex4,

This error says that this account doesn’t have the capability to get card_payments. This capability has to be added when creating a seller:

image

Or you can add it manually. Also, it is possible to add it through update call:

image

Please check whether it is configured.
However, if you still experience errors, then go to Settings - Collaboration tab within your editor. Add our support@zeroqode.com account to your collaborator’s list. Also, please tell us your app name and page name where this problem occurs on test, and any other additional details would only help.

Note: avoid the warning message regarding plan, as we are an agency and you can easily add us to your collaborators.

We’ll investigate it inside your app and get back to you with a feedback asap. :pray: