A panel for collecting recurring fees at a law firm
Monthly fee
Ended- Client
- Marc Puig Vidal
- Amount
- €45 a month
- Start
- 1 March 2026
- End
- 31 December 2026
- Payment link
- By email
Payment link
marc.puig@example.com
1 March
Paid
1 April
Payment failed
Retry on 4 April
4 April
Paid
A private panel for setting up monthly fees with a start and end date, connected to a payment gateway. Each fee is charged automatically, failed payments are retried and the subscription ends on its date.
- Client
- Law firm
- In use since
- February 2026
- Tools
- Next.js, PostgreSQL, Prisma, Docker
Client work, published without the client’s name.
Get in touchWhat happens each month
Each notification from the gateway updates the fee’s status in the panel on its own. Sample data.
Gateway25 February
Subscription created
Payment link sent by email to marc.puig@example.com
Your panelMarc Puig Vidal
Pending
- Amount
- €45 a month
- First charge
- 1 March
- End
- 31 December
Gateway1 March
Payment received
€45, the fee’s first charge.
Your panelMarc Puig Vidal
Active
- Amount
- €45 a month
- March charge
- Paid
- Next charge
- 1 April
Gateway1 April
Payment failed
The client’s bank declined the €45 charge.
Your panelMarc Puig Vidal
Active
- Amount
- €45 a month
- April charge
- Payment failed
- Retry
- 4 April
Gateway4 April
Payment received
€45, on the scheduled retry.
Your panelMarc Puig Vidal
Active
- Amount
- €45 a month
- April charge
- Paid
- Next charge
- 1 May
Gateway31 December
Subscription cancelled
It reached its end date.
Your panelMarc Puig Vidal
Ended
- Amount
- €45 a month
- Last charge
- 1 December
- Next charge
- None
What it looks like in the panel
Real captures of the panel, with sample data.


The brief
An internal web tool to charge the firm's clients monthly fees that start and end on a set date, without creating each payment by hand.
What I built
It is a single screen: you create a fee on the left and see all of them, with their status, on the right.
- To set up a fee you only need the name, email, monthly amount, and start and end dates. The panel creates the subscription in the payment gateway and the client receives the payment link by email, SMS or WhatsApp.
- The subscription ends by itself on the end date. If it starts later, nothing is charged until that day.
- If a payment fails, it is retried automatically.
- Each fee's status (pending, active or cancelled) updates itself from the gateway's notifications.
A search of its own
Type part of the name, email, phone number or ID and the client's fee appears, with its status and dates.
What changed for the firm
Fees are no longer created or collected by hand: each one is set up once, with its start and end dates, and every month's charge goes out on its own. If a charge fails it is retried without anyone having to notice, and the status of each fee updates from the payment gateway's notifications. When a subscription reaches its end date it stops by itself. Finding a fee takes typing part of the client's name or email.
The contract with the firm does not allow publishing figures about its business, so this case describes the work and not its results.
After delivery
I host it on a private server, with backups, monitoring and up-to-date certificates.