Stripe Checkout Developer Needed for On-Site Subscription Plan Selector

Please login or register as jobseeker to apply for this job.

TYPE OF WORK

Gig

SALARY

$300 Project

HOURS PER WEEK

TBD

DATE UPDATED

Mar 11, 2026

JOB OVERVIEW

I’m looking for a developer to help me build a custom Stripe subscription checkout on my website.

I do not want customers redirected to a separate Stripe-hosted payment page. I want the full experience to happen on my website.

The flow I want is:

Customer lands on my checkout page

Customer fills out a few basic form fields

Customer chooses a service plan

Based on that selection, the correct Stripe subscription setup is used

Customer enters payment info directly on my website

Payment is collected immediately

Subscription is created successfully in Stripe

I already have products set up in Stripe, but I need help with the actual implementation.

What I need built:

A custom plan selector on my website

Stripe Payment Element or custom Stripe checkout embedded on-site

Backend logic to create the correct Stripe Checkout Session based on selected plan

Subscription setup using the correct Stripe recurring prices

Basic order summary / selected plan display

Proper error handling for failed payments

A success / confirmation page

Webhook setup so I can reliably know when a subscription/payment is successful

Ideal experience:

Strong Stripe experience

Has built subscription checkout flows before

Experience with Stripe Checkout Sessions

Experience with Stripe Payment Element

Experience with Stripe webhooks

Comfortable with frontend + backend implementation

Bonus if you have experience with service business checkout flows

Please send:

Examples of similar Stripe projects you’ve completed

What stack/frameworks you’ve worked with

How you would approach this build

Estimated timeline

Your hourly rate or fixed price

Important:
Please only apply if you have real experience with Stripe subscriptions, not just basic one-time payment forms.

Scope note:
I want a working, clean, simple version first. It does not need to be fancy. It just needs to work properly and keep the customer on my website for the full checkout process.

Here’s a shorter version too, if you want something more direct for OnlineJobs or Upwork:

Short Version:

Need a developer to build a custom on-site Stripe subscription checkout for my website.

I already have products in Stripe. I need help building:

plan selector on my site

embedded Stripe payment form

recurring subscription checkout

backend session creation

webhook setup

success page

I do not want a redirect to a Stripe-hosted checkout page. I want the payment form directly on my site.

Must have experience with:

Stripe subscriptions

Stripe Payment Element

Checkout Sessions

Webhooks

Please send examples of similar work, your rate, and how you’d approach the project.

VIEW OTHER JOB POSTS FROM:
SHARE THIS POST
facebook linkedin
  BENCHMARKS  
Loading Time: Base Classes  0.0008
Controller Execution Time ( Jobseekers / Job )  0.0165
Total Execution Time  0.0178
  GET DATA  
No GET data exists
  MEMORY USAGE  
1,501,144 bytes
  POST DATA  
No POST data exists
  URI STRING  
jobseekers/job/Stripe-Checkout-Developer-Needed-for-On-Site-Subscription-Plan-Selector-1598713
  CLASS/METHOD  
jobseekers/job
  DATABASE:  onlinejobs (Jobseekers:$db)   QUERIES: 13 (0.0111 seconds)  (Hide)
0.0004   SELECT *
                                
FROM exrates
                                WHERE rate_name 
'USD-PHP' 
0.0010   SELECT *
FROM `employer_jobs`
WHERE `job_id` = 1598713
 LIMIT 1 
0.0009   SELECT *
FROM `employers`
WHERE `employer_id` = 875360
 LIMIT 1 
0.0009   SELECT COUNT(*) AS `numrows`
FROM `t_thread` `t`
LEFT JOIN `t_thread_misc` `miscON `t`.`id` = `misc`.`thread_id`
WHERE `t`.`job_id` = 1598713
AND `misc`.`idIS NULL 
0.0010   SELECT e.business_namee.logoe.websitee.rebill_datee.date_added member_datehitsDATEDIFF('2026-04-15',ej.date_added) duration_daysDATEDIFF('2026-04-15',e.rebill_date) duration_rebillej.*, e.deactivate FROM employers eemployer_jobs ej WHERE e.employer_id ej.employer_id AND
                                   ((
e.user_level >= '500' AND ej.date_added <= e.rebill_date)
                                   OR 
e.employer_id '' OR (ej.date_approved <> '2000-01-01' and DATEDIFF('2026-04-15',ej.date_added) <= 14 ))
                                   AND 
e.deactivate != AND ej.deleted AND job_id '1598713' 
0.0003   SELECT *
FROM `employer_jobs_skills` `ejs`
LEFT JOIN `skills_categories` `scON `ejs`.`skill_id` = `sc`.`id`
WHERE `job_id` = 1598713 
0.0009   UPDATE employer_jobs SET hit_counts '***Mar-11-2026=152***Mar-12-2026=31***Mar-13-2026=16***Mar-14-2026=15***Mar-15-2026=5***Mar-16-2026=3***Mar-17-2026=7***Mar-18-2026=3***Mar-19-2026=3***Mar-21-2026=1***Mar-22-2026=2***Mar-23-2026=3***Mar-24-2026=1***Mar-25-2026=2***Mar-26-2026=4***Mar-27-2026=1***Mar-29-2026=4***Mar-30-2026=3***Mar-31-2026=3***Apr-01-2026=1***Apr-03-2026=5***Apr-04-2026=1***Apr-05-2026=4***Apr-06-2026=3***Apr-09-2026=1***Apr-10-2026=7***Apr-11-2026=6***Apr-15-2026=1' WHERE job_id'1598713'  
0.0006   UPDATE employer_jobs SET monthly_hits '***Mar-2026=259***Apr-2026=29' WHERE job_id'1598713'  
0.0014   SELECT date_sent FROM jobseeker_sent_emails WHERE jobseeker_id '' AND job_id '1598713' AND status LIKE 'sent%' ORDER BY id DESC  
0.0003   SELECT *
FROM `employer_jobs_skills` `ejs`
LEFT JOIN `skills_categories` `scON `ejs`.`skill_id` = `sc`.`id`
WHERE `job_id` = 1598713 
0.0027   SELECT COUNT(*) AS `numrows`
FROM `employer_jobs`
WHERE `employer_id` = '875360'
AND `date_added` >= '2022-06-08' 
0.0004   select from teasers 
0.0002   SELECT FROM skill_categories WHERE skill_cat_id='' 
  HTTP HEADERS  (Show)
  SESSION DATA  (Show)
  CONFIG VARIABLES  (Show)