I’m trying to create a Stripe Checkout Session for subscriptions, but I’m encountering an error stating “Received unknown parameter: subscription_data[backdate_start_date]”. Here is the relevant part of my code:
public function createCheckoutSession($customerId, $priceId, $isSubscription = false)
{
$now = Carbon::parse('2024-03-01');
$financialYearStart = Carbon::createFromDate($now->year, 7, 1);
$financialYearEnd = Carbon::createFromDate($now->year + 1, 6, 30);
$sessionParams = [
'payment_method_types' => ['card'],
'customer' => $customerId,
'line_items' => [[
'price' => $priceId,
'quantity' => 1,
]],
'success_url' => url('https://test/payment/success?session_id={CHECKOUT_SESSION_ID}'),
'cancel_url' => url('https://test/payment/cancel'),
'mode' => $isSubscription ? 'subscription' : 'payment',
'subscription_data' => [],
];
if ($isSubscription) {
if ($now->month == 6) {
// User starts in June, calculate remaining days in June for trial period
$trialEndDate = Carbon::createFromDate($now->year, 6, 30)->endOfDay();
$sessionParams['subscription_data']['trial_end'] = $trialEndDate->timestamp;
} else {
// User starts before June, set the backdate start date
$backdateStartDate = $financialYearStart->subYear()->timestamp;
$billingCycleAnchor = $financialYearStart->timestamp;
$sessionParams['subscription_data']['backdate_start_date'] = $backdateStartDate;
$sessionParams['subscription_data']['billing_cycle_anchor'] = $billingCycleAnchor;
Log::info('Setting backdate_start_date and billing_cycle_anchor for before June:', [
'backdate_start_date' => $sessionParams['subscription_data']['backdate_start_date'],
'billing_cycle_anchor' => $sessionParams['subscription_data']['billing_cycle_anchor']
]);
}
}
Log::info('Stripe session params:', ['sessionParams' => $sessionParams]);
return $this->stripe->checkout->sessions->create($sessionParams);
}
Error Log:
Error processing payment: Received unknown parameter: subscription_data[backdate_start_date]
According to the Stripe documentation, backdate_start_date is a valid parameter when creating a subscription. Why am I receiving this error, and how can I correctly set a past start date for a subscription using Stripe’s Checkout Session?
3RS GT is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.