I'm looking to automate the creation of invoices and the quantities for line items. I would like to have an invoices for a customer act as a template for the next time the invoice is created so that the line items and their corresponding prices are kept for that company, but the quantity for the item would be changed by the API.
Recurring templates seem like the best solution for this to create a template for that company's invoice, but I don't see a way to query for existing recurring items. Is this possible via the Quickbooks Online API?
The supported entities are listed on Intuit's website right here:
https://developer.intuit.com/docs/0025_quickbooksapi/0050_data_services
If it's not on the list, it's not supported.
Unfortunately, recurring templates are not on the list, which means they are not supported.
With that said... recurring templates are the wrong way to approach this - that's an incredibly over-complicated and error prone way to do this since you'd have to generate them and then query for what was generated and then modify it.
Why don't you just use the API to actually create the invoices? That should be super simple to do...
Better yet, if your task is to do basically metered/usage-based billing, why not use a QuickBooks integrated recurring billing platform to do the work for you?
Related
I am using the PayPal API for subscription, so far on Sandbox and everything works as expected. I have read the whole documentation of PayPal api and unfortunately couldn't find what I need, that's why I'm asking here.
I am recently considering to add Discounts as well, and wish to have that in two ways:
New customer enters the discount code the first time they want to join the company. (e.g. use the Valentines Discount Code and get 10€ on your first month).
Already existing customers get a discount on one of the months. (Let's say they pay 25€ monthly, and they get a 10€ discount in the 3rd month for whatever reason, now the payments look something like this. 25€ 25€ 15€ 25€ etc...).
Is there really no way to add discounts to subscriptions in PayPal? I would be really glad for any hints / help. Thank you.
For discounts at checkout time, when creating the subscription and specifying a plan_id, you can also specify a plan object with different billing cycle values that override it, for example a lower regular amount or an additional lower amount trial period. See the Create Subscription API call; available parameters for the createSubscription JS SDK function are the same.
For discounts after a subscription is active, you will need to update the subscription. This can be done with the Update Subscription patch API call.
I'm new to PayPal and overwhelmed by all the possible approaches for integrating with PayPal.
As a start I want to implement one single subscription with monthly recurring payment. When the user returns to the site after fulfilling the payment, he/she will instantly be upgraded to "premium" member (digital product only - no shipping involved).
The first alternative I've looked into is the Express Checkout API, which looks ok, but is there any simpler way to do it?
Can I for example create a standard button (JS button or the form based), but still be able to verify the payment details when the user returns, using either the REST API, IPN or something else?
Any hints on best practices are appreciated.
Yes, there are entirely too many ways to solve this problem by now.
You can probably satisfy your requirements via buttons (aka Standard), Express Checkout (aka Pro) style APIs, or RESTful APIs, but there are a few gotchas to know:
First, PayPal has several products to do recurring payments; these products have functional differences and are tied to different integration styles. So (for example) PayPal's product called "subscriptions" (tied to Website Standard aka buttons) has different (and generally less flexible) capabilities than "recurring payments" (tied to Express Checkout) which in turn differs from "billing agreements" (tied to REST APIs, although the term "billing agreements" is also used in the express checkout recurring payments product). Oh, and there's another similar product tied to the Adaptive Payments suite of APIs.
Confused yet? Sorry. But it is important to determine whether the specific product you want to use will satisfy your requirements first before you do any integration, or you might end up redoing that integration work later (and potentially have to migrate customers, if you have already opened your business) in order to get access to specific features of another product later on. E.g., the subscriptions product has very limited ability for sellers to modify the subscriptions after they are set up. If that is OK, then great, use it -- it's simple to integrate. If I can oversimplify a bit: the Standard subscriptions product is the oldest and most limited; the Pro recurring payments is more flexible and mature; the REST billing agreement product is the newest, very flexible, but not yet as widely used; it may lack a feature you need today, but is the most likely to be continually improved going forward. I would not personally recommend the Adaptive product, although it also has its benefits.
Now, to your integration question: fortunately all these PayPal products can use IPNs. Unfortunately, IPNs are not instant. They generally arrive quickly (1-2 seconds) but delays can happen and it is quite awkward to be unable to process the customer. I would use IPNs only when shipping physical goods, not for immediate access to digital goods or in other cases where customers are waiting for a page from you. Fortunately, each of the other methods has a way to instantly determine the success of a PayPal action without waiting for an IPN:
Website Standard Payments will include GET or POST variables when it posts the user back to your site that will tell you about the outcome. If you use the Payment Data Transfer feature, these variables will include signature information so that you can post them back to PayPal & PayPal will verify their validity (so that a would-be thief could not fool you by engineering a post that looks like a PayPal success redirect).
The two API-based methods are even easier: the APIs themselves return all the information you need in the API response. So wherever in your code you make the call to create the subscription/agreement, if you get back a success then do your work to make your user premium.
There is the odd case of a user successfully paying and then getting "lost", as it were, e.g. the redirect failing/browser closing before they return to your site, or your site choking while trying to turn on the user. For this reason many people advise using IPNs, which PayPal will attempt to redeliver until you verify them back to PayPal. Not a bad idea, depending.
And of course you can call search & get details type APIs to get information about your transactions & agreements at PayPal -- although again, you will need to integrate with the right API that matches the product you are integrated with (e.g. Standard-based subscriptions won't show up if you ask the REST interface for billing agreements).
Hope this helps.
I am working with the relatively new Paypal REST api and have successfully been able to create billing plans, approve billing plans, get a list of my billing plans, create billing-agreements (subscriptions), execute billing-agreements, and find specific billing-agreements.
I would like to be able to retrieve (GET) a list of billing-agreements, similar to how I can get a lit of billing-plans. This is not shown in the documentation as being available. Does anyone know of a way of doing this? Since there is no webHook available for subscription cancellations (or any subscription events) and no way to get a list of agreements, this leaves developers with no efficient way to handle cancellations (especially since users can cancel via Paypal without visiting the site). My current method/plan to handle this is to loop through all subscriptions that I have stored in my MongoDB (I store them when they are executed successfully), and send a request to Paypal for that specific agreement. I check its 'state' and update my MongoDB if they don't match.
There must be a better way.
I had the same problem, my first solution was almost identical to yours: I query the state of agreement upon user login and update the state in my db accordingly.
Later, I start to use IPN as my solution as suggested in this github comment by Tony: https://github.com/paypal/PayPal-Python-SDK/issues/69#issuecomment-69647946
In QB Online we have the ability to add a "Delayed Charge" to a customer, and then assign selected charges to an invoice later. But I can't find anything in the API doc that tells me how to insert these charges programmatically. Am I missing something, or is it just not there yet?
This delayed charge when assigned to an Invoice from UI comes up as StatementCharge in Invoice Linked Txn if you query the API explorer.
This entity- StatementCharge is not yet supported by our service.
I'm interested to see if anybody is looking to integrate Woocommerce with the PayPal Here payment App? More so the importing of products from Woocommerce to the PayPal Here App. Be a great addition.
I haven't looked into that specifically, but I will be adding a "virtual terminal" / POS functionality into my PayPal for WooCommerce plugin before long. I've got it planned for the next full version release.
It basically gives you a section in the WP admin panel where site owners can easily put together invoices using their WooCommerce inventory and then process those orders accordingly. I will be including the Invoicing API's so you can create an invoice from the Woo VT order page, or you'll also have the ability to swipe a card using a USBSwiper card reader. Of course, you could also key in card data if you needed to do it that way.
The cool thing about that is even when you key in the transactions you still get your 2.2% - 2.9% rate depending on your volume because it would be processed over Payments Pro in that case. Same with invoicing or swiping.
Back to your original question, though, I'm unaware of any API or tool that allows us to interact directly with the Here inventory. They do have the Sideloader API for PayPal Here, which would allow you to send inventory (or a specific order) into the Here app from your own app in order to complete an order, but I don't think it lets you push inventory directly into the actual Here app.
On that note, what I could potentially do is build a stand-alone app that does nothing but pull in current WooCommerce inventory, and then from there you could create orders through the Sideloader API using that inventory, but it would use the Here app to actually complete the order. Seems a little clunky, but in theory, that should work fine.
If you want to contact me directly we could discuss getting this done for you.
Right at this time PayPal Here is designed to be card present, so you cannot import your products from Woocomerce into the PayPal Here App.
Here is a link to an FAQ on PayPal Here:
PayPal Here FAQ
Here is the current list of PayPal Here Partners:
PayPal Here Partners