Back to jobs
Trigger: Webhook
Every time a Stripe account is updated, a corresponding Supabase table is updated.
/src/supabaseStripeUpdateDatabase
Payments
Databases
1import { SupabaseManagement, Supabase } from "@trigger.dev/supabase";2import { Stripe } from "@trigger.dev/stripe";3import { TriggerClient } from "@trigger.dev/sdk";45const client = new TriggerClient({ id: "jobs-showcase" });67export const stripe = new Stripe({8id: "stripe",9apiKey: process.env.STRIPE_API_KEY!,10});1112const supabase = new Supabase({13id: "supabase",14supabaseUrl: process.env.SUPABASE_PUBLIC_URL!,15supabaseKey: process.env.SUPABASE_SERVICE_ROLE_KEY!,16});1718// Use OAuth to authenticate with Supabase Management API19const supabaseManagement = new SupabaseManagement({20id: "supabase-management",21});2223// Update a Supabase table when a Stripe account is updated24client.defineJob({25id: "supabase-stripe-update-database",26name: "Supabase: update database when Stripe account is updated",27version: "1.0.0",28integrations: {29stripe,30supabase,31},32trigger: stripe.onAccountUpdated({ connect: true }),33run: async (payload, io, ctx) => {34const stripeAccountId = payload.id;35const { payouts_enabled, charges_enabled, details_submitted } = payload;3637const updatedAt = new Date().toISOString();3839await io.supabase.runTask("update-stripe-account", async (database) => {40const { data, error } = await database41.from("accounts")42.update({43payouts_enabled,44charges_enabled,45details_submitted,46updated_at: updatedAt,47})48.eq("stripe_account_id", stripeAccountId);4950if (error) throw error;5152return data;53});54},55});5657// These lines can be removed if you don't want to use express58import { createExpressServer } from "@trigger.dev/express";59createExpressServer(client);