From 7ffabe9b0ad8f05bb10454c8e0f35844e3679ba5 Mon Sep 17 00:00:00 2001 From: Jeff Emmett Date: Mon, 2 Mar 2026 18:55:59 -0800 Subject: [PATCH] fix: use source 'card' and require funnelId for Flow Service deposit Flow Service expects source to be wallet|card|bank, not 'transak'. funnelId falls back to FUNNEL_ID env var when not in partnerOrderId. Co-Authored-By: Claude Opus 4.6 --- modules/rfunds/mod.ts | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/modules/rfunds/mod.ts b/modules/rfunds/mod.ts index 1490f38..c019857 100644 --- a/modules/rfunds/mod.ts +++ b/modules/rfunds/mod.ts @@ -183,9 +183,11 @@ routes.post("/api/transak/webhook", async (c) => { return c.json({ error: "Invalid webhook data" }, 400); } - // partnerOrderId format: "flowId" or "flowId:funnelId" + // partnerOrderId format: "flowId:funnelId" or "flowId" (uses env default) const [flowId, funnelId] = partnerOrderId.split(":"); if (!flowId) return c.json({ error: "Missing flowId in partnerOrderId" }, 400); + const resolvedFunnelId = funnelId || process.env.FUNNEL_ID || ""; + if (!resolvedFunnelId) return c.json({ error: "Missing funnelId" }, 400); // Convert crypto amount to USDC units (6 decimals) const amountUnits = Math.round(parseFloat(cryptoAmount) * 1e6).toString(); @@ -196,8 +198,8 @@ routes.post("/api/transak/webhook", async (c) => { headers: { "Content-Type": "application/json" }, body: JSON.stringify({ amount: amountUnits, - source: "transak", - ...(funnelId ? { funnelId } : {}), + source: "card", + funnelId: resolvedFunnelId, }), });