gratipay / gratipay.com

Here lieth a pioneer in open source sustainability. RIP
https://gratipay.news/the-end-cbfba8f50981
MIT License
1.12k stars 308 forks source link

migrate to Braintree #3287

Closed chadwhitacre closed 9 years ago

chadwhitacre commented 9 years ago

https://www.braintreepayments.com/features/marketplace

Changaco commented 9 years ago

A PayPal Company

That worries me, and their Acceptable Use Policy isn't reassuring.

chrisdev commented 9 years ago

Yep Paypal is a major pita but is this not way we facilitate most of our payouts to non US users?

chadwhitacre commented 9 years ago

@Changaco Their AUP looks pretty normal to me. What don't you like about it?

chadwhitacre commented 9 years ago

I'm looking for things in their docs that we run afoul of.

Links off of https://apply.braintreegateway.com/signup/us:

https://www.braintreepayments.com/legal/payment-services-agreement https://www.braintreepayments.com/legal/bank-agreement-us https://www.paypal.com/us/webapps/mpp/ua/privacy-full https://www.braintreepayments.com/legal/acceptable-use-policy https://www.braintreepayments.com/features/marketplace https://www.braintreepayments.com/faq#marketplace

chadwhitacre commented 9 years ago

Merchant accounts need to be specially approved for use with Marketplace. For more information, please contact support@braintreepayments.com.

https://developers.braintreepayments.com/ios+python/guides/marketplace/overview

chadwhitacre commented 9 years ago

I've created a Braintree account.

chadwhitacre commented 9 years ago

screen shot 2015-04-09 at 6 52 21 pm

chadwhitacre commented 9 years ago

On the application they asked about our business and I said we provide "Sustainable crowd-funding for open-source projects" or something like that.

chadwhitacre commented 9 years ago

Thank you for applying with Braintree! I’ll be working with you to wrap up our application process. I only need a few more things from you before we move onto the next step.

  1. Did you mean to apply for marketplace? Unfortunately our marketplace feature doesn’t support recurring billing.
  2. You listed your subscription billing as 75% monthly, 20% quarterly, 4% semi-annual and 1% annual. However your website states payments will be made weekly. Can you explain which recurring billing schedule your customers will be charged on?
  3. How do you vet the individuals/businesses which will be accepting funds?
  4. Can you please provide 3 current months of credit card processing statements to support your volume? These need to show a summary of processing volume, charge-backs and refunds.
  5. The billing model charges customer’s credit cards once funds available are depleted. Are cardholders alerted in any way when their credit card is about to be charged?

Please let me know if you have any additional questions!

https://gratipay.freshdesk.com/helpdesk/tickets/1927

chadwhitacre commented 9 years ago

My response:

Thanks! I've copied your email (without your name) to this public ticket, where I am tracking this issue with my community:

https://github.com/gratipay/gratipay.com/issues/3287

1. Did you mean to apply for marketplace? Unfortunately our marketplace feature doesn’t support recurring billing.

I'm pretty sure I did, yes. When you say marketplaces don't support recurring billing, do you mean that you don't persist cards such that we could charge them again at a later time? Or that we can't use Braintree's recurring billing code? We have our own recurring billing code, so as long as we can vault cards persistently I think we're okay. Happy to be reclassified however makes sense.

2. You listed your subscription billing as 75% monthly, 20% quarterly, 4% semi-annual and 1% annual. However your website states payments will be made weekly. Can you explain which recurring billing schedule your customers will be charged on?

The application form had no "weekly" option and required me to enter values that sum to 100. We have a minimum charge of $10 (to minimize processing fees), but many users give less than $10. So if I give $1 then I'm charged approximately every nine weeks, with money held in escrow and doled out weekly. The spread I gave you is an estimate based on how much people tend to give relative to that $10 minimum. Do you need me to firm up those numbers?

3. How do you vet the individuals/businesses which will be accepting funds?

We require users to sign up using a social media account (GitHub, Twitter, etc.), and that's currently the primary basis of our KYC efforts (you can see our internal documentation here). We depended on our previous processor, Balanced Payments, to collect further PII from people who attach a bank account. You can read our tickets for improving KYC by collecting PII directly and also collecting document scans.

4. Can you please provide 3 current months of credit card processing statements to support your volume? These need to show a summary of processing volume, charge-backs and refunds.

I don't believe Balanced gives us statements per se. I can run a report for you, or just give you the info. I'll work on this. Meanwhile, you can find charge volume data on our stats page. I do know that our chargeback rate since launching three years ago is 0.016%.

5. The billing model charges customer’s credit cards once funds available are depleted. Are cardholders alerted in any way when their credit card is about to be charged?

We've been weak on this, to be honest. We have code that will likely go out next week to notify users when we charge their cards, but that's after the fact notification. We have a ticket about notifying users before the fact when we haven't charged them recently.

chrisdev commented 9 years ago

hey @whit537 @agfor from BrainTree came to the Garitpay booth to say that you can ping him if you have any questions

chadwhitacre commented 9 years ago

Nice, thanks! :-)

chadwhitacre commented 9 years ago

Them:

Hope you had a great weekend! We just have a few more follow ups for you before we move forward. Also regarding the recurring billing, as long as you have your own recurring billing code, our merchant support team can help you set it up with marketplace functionality.

  • As the marketplace owner, do you understand that you are responsible for refunds and chargebacks?
  • If you pay out your sub-merchants at a delay, will you use the Braintree escrow feature? Using our Escrow features you are able to collect funds from a cardholder, and keep them securely until your sub-merchant has provided the product.

Please let me know if you have any additional questions!

Me:

Yes, thanks! Hope you did, too. :-)

Sounds good re: recurring billing.

Yes, I understand that we're responsible for refunds and chargebacks.

Yes, we'll use Braintree's escrow feature.

What are next steps? Do you still need three months statements or was the info I provided sufficient?

chadwhitacre commented 9 years ago

I signed an agreement with Braintree. Waiting to hear if I can share the whole PDF. Two things to note in particular:

chadwhitacre commented 9 years ago

Marketplace Service Provider Agreement:

https://gratipay.freshdesk.com/helpdesk/tickets/1946 https://gratipay.freshdesk.com/helpdesk/tickets/1949

rohitpaulk commented 9 years ago

@whit537 - Braintree's escrow feature might not be what you think it is, have a look at this:

Although Braintree does not escrow funds, this is an option on transaction create where Braintree Marketplace will hold the Sub Merchant funds with our banking partner until you make an additional call to release them.

(from https://developers.braintreepayments.com/ios+ruby/guides/marketplace/overview)

Looks like we'll have to define the 'destination' (sub-merchant, as Braintree calls it) before we put a transaction into escrow. That isn't going to be possible for many of the $10 charges we make.

chadwhitacre commented 9 years ago

@rohitpaulk I don't think that's a problem as long as we require a working payout route in order to receive funds, correct?

chadwhitacre commented 9 years ago

IRC

rohitpaulk commented 9 years ago

I don't think that's a problem as long as we require a working payout route in order to receive funds, correct?

It still is. I tip you $0.25 per week. When I'm charged $10, you don't know the 'destination' for the complete $10 yet. What if I decide next week that I want to start tipping Changaco instead?

And there's one more problem (which braintree probably has a workaround for) - splitting transactions (a charge) between multiple receivers.

rohitpaulk commented 9 years ago

When you want to release a transaction from Escrow, you don't get to change the transaction's parameters (afaict). You just give braintree the transaction ID, and say "I want this released from escrow". So when we put a transaction into escrow, we've got to tell them beforehand - "This is who this will (eventually) be paid out to".

chadwhitacre commented 9 years ago

What if I decide next week that I want to start tipping Changaco instead?

Hmm ... good point.

chadwhitacre commented 9 years ago

Thanks for all of the information! I have good news, you’ve been approved and we are excited to have you as part of Braintree!! If you have any further questions our support team will take great care of you!

Huzzah! :dancer: :tada:

chadwhitacre commented 9 years ago

My response:

Thanks so much! Looking forward to mapping out our integration plan. I will contact support with further questions.

chadwhitacre commented 9 years ago

Not a problem! You are more than welcome to share this PDF with your team.

(ref)

chadwhitacre commented 9 years ago

Braintree Application Approved

Congratulations Chad! You’re in. Welcome to a community of the most innovative companies accepting payments online.

You can start accepting payments immediately!

Attached for your records is a copy of the application form you completed. You will also be receiving an email that includes instructions for logging in to your production Braintree Gateway account.

You can test your Braintree integration first by registering for a Sandbox account.

Login here if you already have a Sandbox account.

Full documentation is available including a step-by-step guide, which is the best place to start.

To be in compliance with Visa & Mastercard there are certain items that need to be on your website/mobile app, and we will be confirming that these requirements are met. Failure to do so could result in your funds being held. Check here for more details to make sure you can meet these requirements.

Remember you can always contact our awesome support team if you have any questions.

Email: support@braintreepayments.com Phone: 877.434.2894

Important: If you have processed transactions with Braintree before, you will need to contact us before accepting payments to prevent losing any transaction data.

Again, welcome to Braintree. We look forward to helping you grow.

Thank you, The Braintree Team

https://gratipay.freshdesk.com/helpdesk/tickets/1956

chadwhitacre commented 9 years ago

A new account in the Braintree Gateway has been created for you.

To access your Production account, simply click on the link below and complete the user information form.

https://gratipay.freshdesk.com/helpdesk/tickets/1957

chadwhitacre commented 9 years ago

IRC

chadwhitacre commented 9 years ago

https://twitter.com/Gratipay/status/588421397606707200

chadwhitacre commented 9 years ago

@agfor We're starting to really dig into integration details now that we have a production account. First question: can you help us get into the Coinbase beta? We currently offer bitcoin as both a payin and payout method and we'd like to preserve that capability to whatever extent possible.

rohitpaulk commented 9 years ago

Here are a few questions that I can think of:

  1. What is the minimum charge that we can make? If we intend on keeping zero escrow, this would have to be our minimum tip amount too.
  2. How would be go about splitting transactions? Let's say we have a user tipping 5 people $2 each. We want to make one $10 charge, and give it 5 destinations, not make 5 charges (each with one destination).
  3. Is it mandatory that we reduce our escrow to absolute zero before we migrate? Would it be possible to have a sub-merchant (like mentioned here) of our own, who can have a pre-loaded balance and dispense funds to other sub-merchants?
mickeyreiss commented 9 years ago

@whit537 I'm another dev at Braintree, working on the iOS aspects of the Coinbase integration. I think we'll be able to add you to our Coinbase beta. I know it's a bit annoying, but would you mind emailing us at coinbase@braintreepayments.com? I'll make sure the right people are expecting the ping.

chadwhitacre commented 9 years ago

Thanks @mickeyreiss, mail sent! :-)

Greetings!

We're a new customer investigating a migration from Balanced, and one of the things we're interested in is bitcoin integration. Are you able to add us to the Coinbase beta? Our username is Gratipay, and you can see our internal conversation about this here:

https://github.com/gratipay/gratipay.com/issues/3287#issuecomment-93548851

Let me know what else you need from me. Thanks! :-)

chadwhitacre commented 9 years ago

Yes we can! It'd be quickest if you sent us your Braintree sandbox merchant ID as well; we may be able to look it up based on the Gratipay username but I'm traveling today so tough for me to log in and check.

Sandbox merchant ID sent!

chadwhitacre commented 9 years ago

Thanks for sending this over. We'll get you whitelisted and will reach out again once that's done!

chadwhitacre commented 9 years ago

You should be good to go now in sandbox!

Here are the 3 pieces of info that you'll need:

  1. Coinbase/Braintree Integration Guide (hidden in the nav on the documentation site, but accessible via this direct link):
  2. Coinbase/Braintree Integration FAQ
  3. Updated client libraries for server integration (public GitHub repository)

Please let us know if you have any questions or feedback as you go through the integration.

rohitpaulk commented 9 years ago

12 . Will Coinbase be compatible with Marketplace?

Not currently. As we continue to explore deeper integrations, this is something we may support in the future

chadwhitacre commented 9 years ago

I am reading https://developers.braintreepayments.com/javascript+python/start/overview.

chadwhitacre commented 9 years ago

in production, Marketplace is not compatible with PayPal or currencies other than USD

https://articles.braintreepayments.com/get-started/payment-methods-currencies

chadwhitacre commented 9 years ago

Moving on to https://developers.braintreepayments.com/javascript+python/guides/marketplace/overview.

Braintree's Marketplace is only for US-domiciled merchants accepting USD transactions on cards. It is not compatible with PayPal, Braintree's recurring billing, or most third-party shopping carts at this time.

rohitpaulk commented 9 years ago

From https://articles.braintreepayments.com/guides/paypal/overview:

PayPal is not currently compatible with service fees. This means that if you are using Marketplace, PayPal transactions cannot be accepted at this time. You are able to use our Partners API as long as you don’t use service fees.

chadwhitacre commented 9 years ago

I just finished a first pass through the Braintree docs. I don't like the limitations associated with a Marketplace account. I wonder if there's a way we could structure Gratipay such that we'd be a regular merchant instead of a Marketplace? Moving to https://github.com/gratipay/inside.gratipay.com/issues/180 to explore ...

chadwhitacre commented 9 years ago

Would it be possible to have a sub-merchant (like mentioned here) of our own, who can have a pre-loaded balance and dispense funds to other sub-merchants?

@rohitpaulk I believe the answer is no. If we route pay-ins to our own submerchant account (the master merchant, really), then that goes into our bank account. Braintree doesn't offer true escrow and so there's no way to shuffle money around inside Braintree.

Using Braintree Marketplace for payouts would then incur a second processing fee because Gratipay would be paying in via Braintree, and the only way to do that using Marketplace is with a credit card.

   giver --> Braintree --> Gratipay

Gratipay --> Braintree --> receiver

It appears that we're not going to be able to use Braintree for payouts. Braintree is still quite attractive for payins because it would add so many more options for us, but to maintain continuity on the payout side we would have to find another ACH credits vendor (e.g., #417, #3366).

chadwhitacre commented 9 years ago

I just talked to Braintree support and then sales on the phone, and they were fine with us dropping back from a Marketplace account to a regular merchant account and handling all of the submerchant logic on our end ("That's actually how some of our larger marketplace customers work with us; our Marketplace product is great but it's just a starting point."). The next step is to reapply.

chadwhitacre commented 9 years ago

New application submitted.

chadwhitacre commented 9 years ago

https://gratipay.freshdesk.com/helpdesk/tickets/2028

I talked on the phone with sales just a bit ago, and they recommended that we reapply for a regular merchant account, because of the limitations of the Marketplace product (we'll implement our own marketplace logic on our end). We haven't actually processed transactions with our Marketplace account yet, but I went ahead and selected "yes" for "Have you processed transactions with Braintree before?" anyway, in case you want to try to reuse that account somehow (not sure how exactly things are wired up over there).

Anyway, let me know if you have any further questions! :-)

chadwhitacre commented 9 years ago

https://gratipay.freshdesk.com/helpdesk/tickets/2030

Great to see you applying for a new Braintree account! Before we begin work on setting this account up, I want to be sure we understand the purpose of this application, since you applied with the same information as your existing account. If you could please explain the purpose of this application, I would appreciate it. Best,

Response:

Sure thing! We originally applied for the Marketplace product because we're coming from Balanced Payments. However, upon further review Braintree Marketplace is too limited for our needs (no escrow feature). I called Braintree support and was bumped to sales. Josh in sales advised that I reapply for a regular account. Everything else should be the same, except for the "Will your business use Braintree Marketplace?" question.

Does that help?

chadwhitacre commented 9 years ago

Huzzah! :dancer:

Perfect. We will replace your original marketplace account with your new regular account. I will update you if I have any follow ups!

https://gratipay.freshdesk.com/helpdesk/tickets/2031

chadwhitacre commented 9 years ago

Any chance you could release the "gratipay" username for our production account? I can't login using it anymore, but I also can't use that for our new account either. :-/

chadwhitacre commented 9 years ago

Your password cannot be reset because your account has been suspended.

chadwhitacre commented 9 years ago

Unfortunately, we cannot make changes to those user names.