diff --git a/app/api/bill-pay/bills/[id]/initiate-payment/route.ts b/app/api/bill-pay/bills/[id]/initiate-payment/route.ts new file mode 100644 index 0000000..a8759f4 --- /dev/null +++ b/app/api/bill-pay/bills/[id]/initiate-payment/route.ts @@ -0,0 +1,6 @@ +import { NextRequest } from "next/server"; +import { proxyRequest } from "@/lib/backend"; + +export async function POST(req: NextRequest, { params }: { params: { id: string } }) { + return proxyRequest(req, `bill-pay/bills/${params.id}/initiate-payment`); +} diff --git a/app/bills/page.tsx b/app/bills/page.tsx index a61055c..ab354d0 100644 --- a/app/bills/page.tsx +++ b/app/bills/page.tsx @@ -138,6 +138,24 @@ export default function BillsPage() { await load(); }; + const initiatePayment = async (bill: Bill) => { + const res = await apiFetch(`/api/bill-pay/bills/${bill.id}/initiate-payment`, { + method: "POST", + body: JSON.stringify({ + amount: Number(bill.amount), + scheduledFor: new Date().toISOString(), + method: "ach", + memo: `LedgerOne payment for ${bill.name}`, + }), + }); + if (res.error) { + setStatus(res.error.message ?? "Unable to initiate payment."); + return; + } + setStatus(`${bill.name} payment initiated.`); + await load(); + }; + const updateStatus = async (bill: Bill, nextStatus: Bill["status"]) => { const res = await apiFetch(`/api/bill-pay/bills/${bill.id}`, { method: "PATCH", @@ -283,7 +301,10 @@ export default function BillsPage() {
{bill.status !== "paid" && ( - + + )} + {bill.status !== "paid" && ( + )} {bill.status !== "skipped" && bill.status !== "paid" && (