Using Stripe Intents API with Billing (recurring subscriptions)Can Stripe support Offline Payments?Subscriptions in stripeRecurring billing with Stripe - will Subscriptions suffice?stripe api: multiple plans / subscriptions, single invoiceStripe manual billing on subscriptionsHow to force Stripe subscription chargePaying an invoice with multiple credit cards in StripeCharge vs subscription with StripeStripe Django: How to charge the existing customer with a planStripe: recurring payments without PLAN api
What organs or modifications would be needed for a life biological creature not to require sleep?
Newly created XFS filesystem shows 78 GB used
Is "you will become a subject matter expert" code for "you'll be working on your own 100% of the time"?
2000s space film where an alien species has almost wiped out the human race in a war
Can I conceal an antihero's insanity - and should I?
Difference in using Lightning Component <lighting:badge/> and Normal DOM with slds <span class="slds-badge"></span>? Which is Better and Why?
If the gambler's fallacy is false, how do notions of "expected number" of events work?
Bit one of the Intel 8080's Flags register
What exactly is a marshrutka (маршрутка)?
What is my breathable atmosphere composed of?
What was the ultimate objective of The Party in 1984?
The Planck constant for mathematicians
Why does the speed of sound decrease at high altitudes although the air density decreases?
Do ibuprofen or paracetamol cause hearing loss?
How are aircraft depainted?
How are unbalanced coaxial cables used for broadcasting TV signals without any problems?
Mutable named tuple with default value and conditional rounding support
What makes a smart phone "kosher"?
In what state are satellites left in when they are left in a graveyard orbit?
Should you only use colons and periods in dialogues?
getting syntax error in simple bash script
Is a suit against a University Dorm for changing policies on a whim likely to succeed (USA)?
Bash, import output from command as command
Planar regular languages
Using Stripe Intents API with Billing (recurring subscriptions)
Can Stripe support Offline Payments?Subscriptions in stripeRecurring billing with Stripe - will Subscriptions suffice?stripe api: multiple plans / subscriptions, single invoiceStripe manual billing on subscriptionsHow to force Stripe subscription chargePaying an invoice with multiple credit cards in StripeCharge vs subscription with StripeStripe Django: How to charge the existing customer with a planStripe: recurring payments without PLAN api
.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty margin-bottom:0;
I've tried three different Stripe support people to get a clear answer on this. No-one seems to know how to solve this. I want to sign up a customer for a recurring subscription using Stripe. When selecting a plan, a credit card form is shown. Customers input credit card info and click Pay and the subscription is created.
I've done this using Stripe.js and tokens by adding a bit of JavaScript to my client:
function pay()
stripe.createToken(card).then(function (result)
if (result.error)
// Do something
else
var token = result.token.id;
$.post("/api/subscriptions/create?token=" + token, ...);
);
On the server I put the token on the customer (examples in C# but could be anything):
customerService.Update(customerId, new CustomerUpdateOptions
SourceToken = token,
);
and create a subscription:
var items = new List<SubscriptionItemOption>
new SubscriptionItemOption
PlanId = newPlanId,
,
;
var subscriptionCreateOptions = new SubscriptionCreateOptions
CustomerId = customerId,
Items = items,
;
Subscription subscription = stripe.Subscriptions.Create(subscriptionCreateOptions);
Everything works as expected so far. Stripe automatically create an invoice for the first payment and creates an automatic charge. It also generates an invoice for the next month that looks fine.
I should be happy now but I'm not. When testing the code above, it doesn't work for cards requiring 3D secure and similar extended authentication checks. In that case, I get an error from Stripe when creating the subscription, saying that the card isn't valid (I guess since we never completed 3D secure authentication).
From what I can understand from the Stripe documentation, showing 3D secure authentication dialog will require me to use either Checkout or Intents API. I don't want to use Checkout, but the Intents API looks like the right choice.
Using intents, I need to ask for an intent first:
var createOptions = new PaymentIntentCreateOptions
Amount = 4900,
Currency = "usd",
PaymentMethodTypes = new List<string> "card"
;
paymentIntents.Create(createOptions);
This produces a client secret that I send back to my client. Rather than calling createToken
. On the client, I call the handleCardPayment
function, which shows the 3D secure modal in the case it is required:
stripe.handleCardPayment(
clientSecret, cardElement
).then(function(result)
if (result.error)
// Display error.message in your UI.
else
$.post("/api/subscriptions/create?...");
);
The issue here is that handleCardPayment
create a charge on the customer. I don't want that since I want to automatically invoice the customer each month.
Does anyone know if it is possible to show 3D secure (and similar) without using intents or at least without creating a charge? I've read similar questions, where people are recommending creating the charge, then creating a subscription with 1 month of trial. This doesn't have the effect that I want since that will create a charge the first month and an invoice with a charge the following months.
Basically, I just want the simplest possible solution that still shows the 3D secure dialog.
stripe-payments
add a comment
|
I've tried three different Stripe support people to get a clear answer on this. No-one seems to know how to solve this. I want to sign up a customer for a recurring subscription using Stripe. When selecting a plan, a credit card form is shown. Customers input credit card info and click Pay and the subscription is created.
I've done this using Stripe.js and tokens by adding a bit of JavaScript to my client:
function pay()
stripe.createToken(card).then(function (result)
if (result.error)
// Do something
else
var token = result.token.id;
$.post("/api/subscriptions/create?token=" + token, ...);
);
On the server I put the token on the customer (examples in C# but could be anything):
customerService.Update(customerId, new CustomerUpdateOptions
SourceToken = token,
);
and create a subscription:
var items = new List<SubscriptionItemOption>
new SubscriptionItemOption
PlanId = newPlanId,
,
;
var subscriptionCreateOptions = new SubscriptionCreateOptions
CustomerId = customerId,
Items = items,
;
Subscription subscription = stripe.Subscriptions.Create(subscriptionCreateOptions);
Everything works as expected so far. Stripe automatically create an invoice for the first payment and creates an automatic charge. It also generates an invoice for the next month that looks fine.
I should be happy now but I'm not. When testing the code above, it doesn't work for cards requiring 3D secure and similar extended authentication checks. In that case, I get an error from Stripe when creating the subscription, saying that the card isn't valid (I guess since we never completed 3D secure authentication).
From what I can understand from the Stripe documentation, showing 3D secure authentication dialog will require me to use either Checkout or Intents API. I don't want to use Checkout, but the Intents API looks like the right choice.
Using intents, I need to ask for an intent first:
var createOptions = new PaymentIntentCreateOptions
Amount = 4900,
Currency = "usd",
PaymentMethodTypes = new List<string> "card"
;
paymentIntents.Create(createOptions);
This produces a client secret that I send back to my client. Rather than calling createToken
. On the client, I call the handleCardPayment
function, which shows the 3D secure modal in the case it is required:
stripe.handleCardPayment(
clientSecret, cardElement
).then(function(result)
if (result.error)
// Display error.message in your UI.
else
$.post("/api/subscriptions/create?...");
);
The issue here is that handleCardPayment
create a charge on the customer. I don't want that since I want to automatically invoice the customer each month.
Does anyone know if it is possible to show 3D secure (and similar) without using intents or at least without creating a charge? I've read similar questions, where people are recommending creating the charge, then creating a subscription with 1 month of trial. This doesn't have the effect that I want since that will create a charge the first month and an invoice with a charge the following months.
Basically, I just want the simplest possible solution that still shows the 3D secure dialog.
stripe-payments
add a comment
|
I've tried three different Stripe support people to get a clear answer on this. No-one seems to know how to solve this. I want to sign up a customer for a recurring subscription using Stripe. When selecting a plan, a credit card form is shown. Customers input credit card info and click Pay and the subscription is created.
I've done this using Stripe.js and tokens by adding a bit of JavaScript to my client:
function pay()
stripe.createToken(card).then(function (result)
if (result.error)
// Do something
else
var token = result.token.id;
$.post("/api/subscriptions/create?token=" + token, ...);
);
On the server I put the token on the customer (examples in C# but could be anything):
customerService.Update(customerId, new CustomerUpdateOptions
SourceToken = token,
);
and create a subscription:
var items = new List<SubscriptionItemOption>
new SubscriptionItemOption
PlanId = newPlanId,
,
;
var subscriptionCreateOptions = new SubscriptionCreateOptions
CustomerId = customerId,
Items = items,
;
Subscription subscription = stripe.Subscriptions.Create(subscriptionCreateOptions);
Everything works as expected so far. Stripe automatically create an invoice for the first payment and creates an automatic charge. It also generates an invoice for the next month that looks fine.
I should be happy now but I'm not. When testing the code above, it doesn't work for cards requiring 3D secure and similar extended authentication checks. In that case, I get an error from Stripe when creating the subscription, saying that the card isn't valid (I guess since we never completed 3D secure authentication).
From what I can understand from the Stripe documentation, showing 3D secure authentication dialog will require me to use either Checkout or Intents API. I don't want to use Checkout, but the Intents API looks like the right choice.
Using intents, I need to ask for an intent first:
var createOptions = new PaymentIntentCreateOptions
Amount = 4900,
Currency = "usd",
PaymentMethodTypes = new List<string> "card"
;
paymentIntents.Create(createOptions);
This produces a client secret that I send back to my client. Rather than calling createToken
. On the client, I call the handleCardPayment
function, which shows the 3D secure modal in the case it is required:
stripe.handleCardPayment(
clientSecret, cardElement
).then(function(result)
if (result.error)
// Display error.message in your UI.
else
$.post("/api/subscriptions/create?...");
);
The issue here is that handleCardPayment
create a charge on the customer. I don't want that since I want to automatically invoice the customer each month.
Does anyone know if it is possible to show 3D secure (and similar) without using intents or at least without creating a charge? I've read similar questions, where people are recommending creating the charge, then creating a subscription with 1 month of trial. This doesn't have the effect that I want since that will create a charge the first month and an invoice with a charge the following months.
Basically, I just want the simplest possible solution that still shows the 3D secure dialog.
stripe-payments
I've tried three different Stripe support people to get a clear answer on this. No-one seems to know how to solve this. I want to sign up a customer for a recurring subscription using Stripe. When selecting a plan, a credit card form is shown. Customers input credit card info and click Pay and the subscription is created.
I've done this using Stripe.js and tokens by adding a bit of JavaScript to my client:
function pay()
stripe.createToken(card).then(function (result)
if (result.error)
// Do something
else
var token = result.token.id;
$.post("/api/subscriptions/create?token=" + token, ...);
);
On the server I put the token on the customer (examples in C# but could be anything):
customerService.Update(customerId, new CustomerUpdateOptions
SourceToken = token,
);
and create a subscription:
var items = new List<SubscriptionItemOption>
new SubscriptionItemOption
PlanId = newPlanId,
,
;
var subscriptionCreateOptions = new SubscriptionCreateOptions
CustomerId = customerId,
Items = items,
;
Subscription subscription = stripe.Subscriptions.Create(subscriptionCreateOptions);
Everything works as expected so far. Stripe automatically create an invoice for the first payment and creates an automatic charge. It also generates an invoice for the next month that looks fine.
I should be happy now but I'm not. When testing the code above, it doesn't work for cards requiring 3D secure and similar extended authentication checks. In that case, I get an error from Stripe when creating the subscription, saying that the card isn't valid (I guess since we never completed 3D secure authentication).
From what I can understand from the Stripe documentation, showing 3D secure authentication dialog will require me to use either Checkout or Intents API. I don't want to use Checkout, but the Intents API looks like the right choice.
Using intents, I need to ask for an intent first:
var createOptions = new PaymentIntentCreateOptions
Amount = 4900,
Currency = "usd",
PaymentMethodTypes = new List<string> "card"
;
paymentIntents.Create(createOptions);
This produces a client secret that I send back to my client. Rather than calling createToken
. On the client, I call the handleCardPayment
function, which shows the 3D secure modal in the case it is required:
stripe.handleCardPayment(
clientSecret, cardElement
).then(function(result)
if (result.error)
// Display error.message in your UI.
else
$.post("/api/subscriptions/create?...");
);
The issue here is that handleCardPayment
create a charge on the customer. I don't want that since I want to automatically invoice the customer each month.
Does anyone know if it is possible to show 3D secure (and similar) without using intents or at least without creating a charge? I've read similar questions, where people are recommending creating the charge, then creating a subscription with 1 month of trial. This doesn't have the effect that I want since that will create a charge the first month and an invoice with a charge the following months.
Basically, I just want the simplest possible solution that still shows the 3D secure dialog.
stripe-payments
stripe-payments
asked Mar 28 at 10:23
ThomasArdalThomasArdal
3,2343 gold badges15 silver badges40 bronze badges
3,2343 gold badges15 silver badges40 bronze badges
add a comment
|
add a comment
|
1 Answer
1
active
oldest
votes
Stripe is currently working on integrating PaymentIntents with Subscriptions, and plans to support that flow in April 2019. Once that's available, you're going to definitely want to use PaymentIntents. Since it's in the very near future, you may just want to wait until it's available.
If you need to get this working in the meantime, this guide walks you through setting up a subscription with an initial 3DS check. That is the recommended approach with the trial period that you're talking about.
UPDATE
The date of full specification for Payment Intent was moved to July 1, 2019 according to Stripe:
OFF-SESSION PAYMENTS WITH THE PAYMENT INTENTS API
Point 3 saying:
You will need to make incremental changes in order to claim exemptions
and decrease the rate of authentication challenges required by your
customers—this will be ready by July 1, 2019.
https://stripe.com/docs/strong-customer-authentication/migration#step-2
Short, precise, best answer ever. Thanks!
– ThomasArdal
Mar 28 at 18:06
1
Do you know if the new PaymentIntents with Subscriptions have been released yet?
– ThomasArdal
Apr 24 at 8:56
It is released yet? I have this exact problem right now
– lmaooooo
Apr 24 at 13:11
@ThomasArdal Payment Intents are now live for Subscriptions (look under "Recurring Payments"). There are still some additional features to be done by early July, but the core is there.
– taintedzodiac
Apr 24 at 13:16
Thank you, Rob!
– ThomasArdal
Apr 25 at 12:53
|
show 2 more comments
Your Answer
StackExchange.ifUsing("editor", function ()
StackExchange.using("externalEditor", function ()
StackExchange.using("snippets", function ()
StackExchange.snippets.init();
);
);
, "code-snippets");
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "1"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/4.0/"u003ecc by-sa 4.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f55395227%2fusing-stripe-intents-api-with-billing-recurring-subscriptions%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
Stripe is currently working on integrating PaymentIntents with Subscriptions, and plans to support that flow in April 2019. Once that's available, you're going to definitely want to use PaymentIntents. Since it's in the very near future, you may just want to wait until it's available.
If you need to get this working in the meantime, this guide walks you through setting up a subscription with an initial 3DS check. That is the recommended approach with the trial period that you're talking about.
UPDATE
The date of full specification for Payment Intent was moved to July 1, 2019 according to Stripe:
OFF-SESSION PAYMENTS WITH THE PAYMENT INTENTS API
Point 3 saying:
You will need to make incremental changes in order to claim exemptions
and decrease the rate of authentication challenges required by your
customers—this will be ready by July 1, 2019.
https://stripe.com/docs/strong-customer-authentication/migration#step-2
Short, precise, best answer ever. Thanks!
– ThomasArdal
Mar 28 at 18:06
1
Do you know if the new PaymentIntents with Subscriptions have been released yet?
– ThomasArdal
Apr 24 at 8:56
It is released yet? I have this exact problem right now
– lmaooooo
Apr 24 at 13:11
@ThomasArdal Payment Intents are now live for Subscriptions (look under "Recurring Payments"). There are still some additional features to be done by early July, but the core is there.
– taintedzodiac
Apr 24 at 13:16
Thank you, Rob!
– ThomasArdal
Apr 25 at 12:53
|
show 2 more comments
Stripe is currently working on integrating PaymentIntents with Subscriptions, and plans to support that flow in April 2019. Once that's available, you're going to definitely want to use PaymentIntents. Since it's in the very near future, you may just want to wait until it's available.
If you need to get this working in the meantime, this guide walks you through setting up a subscription with an initial 3DS check. That is the recommended approach with the trial period that you're talking about.
UPDATE
The date of full specification for Payment Intent was moved to July 1, 2019 according to Stripe:
OFF-SESSION PAYMENTS WITH THE PAYMENT INTENTS API
Point 3 saying:
You will need to make incremental changes in order to claim exemptions
and decrease the rate of authentication challenges required by your
customers—this will be ready by July 1, 2019.
https://stripe.com/docs/strong-customer-authentication/migration#step-2
Short, precise, best answer ever. Thanks!
– ThomasArdal
Mar 28 at 18:06
1
Do you know if the new PaymentIntents with Subscriptions have been released yet?
– ThomasArdal
Apr 24 at 8:56
It is released yet? I have this exact problem right now
– lmaooooo
Apr 24 at 13:11
@ThomasArdal Payment Intents are now live for Subscriptions (look under "Recurring Payments"). There are still some additional features to be done by early July, but the core is there.
– taintedzodiac
Apr 24 at 13:16
Thank you, Rob!
– ThomasArdal
Apr 25 at 12:53
|
show 2 more comments
Stripe is currently working on integrating PaymentIntents with Subscriptions, and plans to support that flow in April 2019. Once that's available, you're going to definitely want to use PaymentIntents. Since it's in the very near future, you may just want to wait until it's available.
If you need to get this working in the meantime, this guide walks you through setting up a subscription with an initial 3DS check. That is the recommended approach with the trial period that you're talking about.
UPDATE
The date of full specification for Payment Intent was moved to July 1, 2019 according to Stripe:
OFF-SESSION PAYMENTS WITH THE PAYMENT INTENTS API
Point 3 saying:
You will need to make incremental changes in order to claim exemptions
and decrease the rate of authentication challenges required by your
customers—this will be ready by July 1, 2019.
https://stripe.com/docs/strong-customer-authentication/migration#step-2
Stripe is currently working on integrating PaymentIntents with Subscriptions, and plans to support that flow in April 2019. Once that's available, you're going to definitely want to use PaymentIntents. Since it's in the very near future, you may just want to wait until it's available.
If you need to get this working in the meantime, this guide walks you through setting up a subscription with an initial 3DS check. That is the recommended approach with the trial period that you're talking about.
UPDATE
The date of full specification for Payment Intent was moved to July 1, 2019 according to Stripe:
OFF-SESSION PAYMENTS WITH THE PAYMENT INTENTS API
Point 3 saying:
You will need to make incremental changes in order to claim exemptions
and decrease the rate of authentication challenges required by your
customers—this will be ready by July 1, 2019.
https://stripe.com/docs/strong-customer-authentication/migration#step-2
edited Apr 30 at 11:29
fearis
19613 bronze badges
19613 bronze badges
answered Mar 28 at 14:13
taintedzodiactaintedzodiac
1,0889 silver badges13 bronze badges
1,0889 silver badges13 bronze badges
Short, precise, best answer ever. Thanks!
– ThomasArdal
Mar 28 at 18:06
1
Do you know if the new PaymentIntents with Subscriptions have been released yet?
– ThomasArdal
Apr 24 at 8:56
It is released yet? I have this exact problem right now
– lmaooooo
Apr 24 at 13:11
@ThomasArdal Payment Intents are now live for Subscriptions (look under "Recurring Payments"). There are still some additional features to be done by early July, but the core is there.
– taintedzodiac
Apr 24 at 13:16
Thank you, Rob!
– ThomasArdal
Apr 25 at 12:53
|
show 2 more comments
Short, precise, best answer ever. Thanks!
– ThomasArdal
Mar 28 at 18:06
1
Do you know if the new PaymentIntents with Subscriptions have been released yet?
– ThomasArdal
Apr 24 at 8:56
It is released yet? I have this exact problem right now
– lmaooooo
Apr 24 at 13:11
@ThomasArdal Payment Intents are now live for Subscriptions (look under "Recurring Payments"). There are still some additional features to be done by early July, but the core is there.
– taintedzodiac
Apr 24 at 13:16
Thank you, Rob!
– ThomasArdal
Apr 25 at 12:53
Short, precise, best answer ever. Thanks!
– ThomasArdal
Mar 28 at 18:06
Short, precise, best answer ever. Thanks!
– ThomasArdal
Mar 28 at 18:06
1
1
Do you know if the new PaymentIntents with Subscriptions have been released yet?
– ThomasArdal
Apr 24 at 8:56
Do you know if the new PaymentIntents with Subscriptions have been released yet?
– ThomasArdal
Apr 24 at 8:56
It is released yet? I have this exact problem right now
– lmaooooo
Apr 24 at 13:11
It is released yet? I have this exact problem right now
– lmaooooo
Apr 24 at 13:11
@ThomasArdal Payment Intents are now live for Subscriptions (look under "Recurring Payments"). There are still some additional features to be done by early July, but the core is there.
– taintedzodiac
Apr 24 at 13:16
@ThomasArdal Payment Intents are now live for Subscriptions (look under "Recurring Payments"). There are still some additional features to be done by early July, but the core is there.
– taintedzodiac
Apr 24 at 13:16
Thank you, Rob!
– ThomasArdal
Apr 25 at 12:53
Thank you, Rob!
– ThomasArdal
Apr 25 at 12:53
|
show 2 more comments
Got a question that you can’t ask on public Stack Overflow? Learn more about sharing private information with Stack Overflow for Teams.
Got a question that you can’t ask on public Stack Overflow? Learn more about sharing private information with Stack Overflow for Teams.
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f55395227%2fusing-stripe-intents-api-with-billing-recurring-subscriptions%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown