Session Expiring Soon
You've been inactive. You will be automatically logged out in:
60
SmartLinkX ISP
Management System

Connect to Supabase

Enter your Supabase credentials. You can find these in your Supabase dashboard under Settings → API.

Settings → API → Project URL
Settings → API → anon public key
Loading…
Dashboard
Active Customers
All active accounts
Monthly Collections
This month's payments
Monthly Expenses
This month's expenses
Open Receivables
Unpaid invoice balances
Assigned Devices
Active device assignments
Due / Overdue
Accounts needing attention
📅 Due Today
AccountNameBalance
⚠️ Overdue Accounts
AccountNameDaysBalance
Internet Plans
Manage service plans
CodePlan NameSpeed ProfileMonthly FeeInstall FeeStatus
Customer Management
All accounts
Account #NameMobilePlanStatusAppliedT&C Accepted
Customer 360°
Full ledger and service history
AccountNamePlanStatus
Bulk Operations
Upload Customers CSV
📄

Click to select CSV

Required: account_no, full_name, service_address, plan_code
Format Guide
account_no,full_name,service_address,
plan_code,mobile_number,email,
company_name,billing_address,
due_day,connection_type

• Minimum: account_no, full_name, service_address, plan_code
• Duplicates are automatically skipped

Bulk Plan Change CSV
🔄

Click to select CSV

Required: account_no, new_plan_code
Rules
account_no,new_plan_code

• Old service deactivated, new one created
• due_day, connection_type, ip_mode preserved
• Upgrade / downgrade auto-detected

Billing Cycles
Invoice generation and billing periods
Cycle CodeMonthBill DateDue DateStatusLockInvoices
Payments & Official Receipts
OR #DateAccountCustomerMethodAmount
Collections & AR Aging
Current
₱0
0
1–30 Days
₱0
0
31–60 Days
₱0
0
61–90 Days
₱0
0
90+ Days
₱0
0
Due Today
AccountNameBalance
Overdue
AccountNameDaysBalance
Device Assignments
ONU, Modem, Router inventory
CustomerTypeBrand/ModelSerial #MACIP AddressAssignedTechnicianStatus
Expenses
Operational cost tracking
This Month
₱0
This Year
₱0
Total Records
0
DatePayeeRef #DescriptionExpense AcctSourceAmountBy
SMS Operations
Configuration
⚠ Edge Function Required
SMS must be sent via a Supabase Edge Function — direct browser calls to Semaphore are blocked by CORS. See the setup guide below.
Send Operations
Message Preview
0 chars
🔧 Edge Function Setup Guide Required to fix SMS
Why SMS fails: Browsers block direct calls to api.semaphore.co due to CORS security policy. A Supabase Edge Function acts as the server-side proxy.
Step 1 — Install Supabase CLI
npm install -g supabase
Step 2 — Create the Edge Function file
Create file: supabase/functions/send-sms/index.ts
import { serve } from "https://deno.land/std@0.168.0/http/server.ts"; const cors = { "Access-Control-Allow-Origin": "*", "Access-Control-Allow-Headers": "authorization, x-client-info, apikey, content-type", }; serve(async (req) => { if (req.method === "OPTIONS") return new Response("ok", { headers: cors }); if (req.method === "GET") return new Response("ok", { headers: cors }); // ping try { const body = await req.json(); const res = await fetch("https://api.semaphore.co/api/v4/messages", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify(body), }); const data = await res.json(); return new Response(JSON.stringify(data), { status: res.status, headers: { ...cors, "Content-Type": "application/json" }, }); } catch (e) { return new Response(JSON.stringify({ error: e.message }), { status: 500, headers: { ...cors, "Content-Type": "application/json" }, }); } });
Step 3 — Deploy to Supabase
supabase login supabase link --project-ref YOUR_PROJECT_REF supabase functions deploy send-sms --no-verify-jwt
• Replace YOUR_PROJECT_REF with the ID from your Supabase URL (e.g. qklbdgprixxnungxyugq)
--no-verify-jwt allows calls from the browser with your anon key
Step 4 — Test the connection
Click the 🔌 Test Connection button in the Configuration card above. A green message confirms SMS will now work.
✓ After deploying: Click 🔄 Retry Failed button in SMS Logs to re-send all previously failed messages automatically.
SMS Logs
Date/TimeAccountMobileTypeMessageStatusError / Response
Accounting
CodeAccount NameTypeNormalActive
JE #DateReferenceDescriptionDebitCredit
DateJE #DescriptionDebitCreditBalance
CodeAccountDebitCredit

Select a period

Select a date