Reputation: 9428
Can we query Stripe with the subscription_items and a quantity to preview the incoming invoice without an active subscription with the Preview API https://api.stripe.com/v1/invoices/upcoming?
We tried to set subscription_items to preview an invoice without an active subscription. Its response contains a subscription and subscription_item. But when we query the subscription or subscription_item specifically, it threw an error Invalid subscription_item
.
Eg, When calling /v1/invoices/upcoming with subscription_items
curl --location -g --request GET 'https://api.stripe.com/v1/invoices/upcoming?customer=cus_MIjwgFDqhg8uBf&subscription_items[0][price]=price_1LDx6JL3XoZTtiHnl5wAWtkg&subscription_items[0][quantity]=1' \
--header 'Authorization: Basic xxxxxx'
{
"object": "invoice",
"lines": {
"object": "list",
"data": [
{
"subscription": "sub_1LeoDVL3XoZTtiHn998jF9zp",
"subscription_item": "si_MNZM3MetxDd9Gu"
}
]
}
}
Then when we query the subscription or subscription_item with /v1/subscription_items/si_MNZM3MetxDd9Gu, it shows Invalid subscription_item
:
{
"error": {
"message": "Invalid subscription_item id: si_MNZM3MetxDd9Gu",
"type": "invalid_request_error"
}
}
Upvotes: 1
Views: 848
Reputation: 1394
I also needed to be able to display a preview of a price for a new non-stripe user. It looks like Stripe has a resource called Quote
that you can use for this purpose, customer ID is optional, i.e.:
quote = Stripe::Quote.create({ line_items: [{ price: "gateway_price_id" }] })
You can view the documentation for it here:
https://stripe.com/docs/api/quotes/create?lang=curl
Upvotes: 0
Reputation: 2784
When you are viewing an upcoming invoice, you are simply viewing a preview – the invoice and subscription has not yet been created. So you cannot query the subscription or subscription item in the response from the upcoming invoice API.
https://stripe.com/docs/api/invoices/upcoming does not require an active Subscription. subscription
is an optional parameter. The Stripe docs mention :
The identifier of the subscription for which you’d like to retrieve the upcoming invoice. If not provided, but a subscription_items is provided, you will preview creating a subscription with those items....
The below Node.js example code previews creating a subscription :
const invoice = await stripe.invoices.retrieveUpcoming({
customer: 'cus_...',
subscription_items: [
{
price : `price_...`,
quantity : 2
}
]
});
Upvotes: 0