Braintree customer billing lookup for support agents
One screen where support agents see a customer's payments, disputes and tickets, then refund, void or email them without opening Braintree.
Build me an internal billing lookup console for my support agents, so they can answer "where is my refund" style questions without logging into the Braintree Control Panel. It is one screen per customer: the billing history and the support conversation together, plus the buttons to act on both.
Landing view: a single search box where an agent types an email address, a name, or a customer ID, backed by Braintree Search Customers. Show the matches as a compact list with name, email, customer ID and created date. Picking one opens the customer screen. Keep the search box available at the top of the customer screen so agents can jump to the next person without going back.
Customer screen header: name, email, customer ID, and quick totals (lifetime amount charged, amount refunded, number of transactions). If this customer has ever filed a dispute, show a persistent warning badge in the header, for example "Has filed disputes (2)", using a semantic warning style rather than a raw color, and keep it visible no matter which panel the agent is looking at.
Billing timeline: the main panel, from Braintree Search Transactions scoped to this customer, newest first, with load-more paging. Each row shows date, amount and currency, status (authorized, submitted for settlement, settled, settling, voided, refunded, failed, gateway rejected), the payment method used with card brand and last four, and the order ID if there is one. Style the status as a labelled badge so an agent can scan the column. Mark any row whose transaction is tied to a dispute with an inline flag.
Side panels on the same screen, each collapsible so the page stays readable. Disputes, from Braintree Search Disputes for this customer: status (open, won, lost, accepted), reason, amount, case number, received date and reply-by date, split into open and resolved. Card checks, from Braintree Search Verifications: the recent verification attempts with status, processor response and date, so an agent can tell a genuinely dead card from a one-off decline. Cards on file: the payment methods currently in this customer's vault as returned with the customer record, showing brand, last four, expiration and whether it is the default.
Support conversation panel: Zendesk Search Tickets using the customer's email address, showing the ten most recent tickets with subject, status, requester, created and updated dates. Expanding a ticket loads its latest comment through Zendesk List Ticket Comments, with the author and timestamp, plus a link out to the ticket in Zendesk. The point is that the agent never has to alt-tab mid-chat, so load these alongside the billing data rather than behind a separate tab.
Actions available from the same screen. On a settled transaction, Refund, which opens a dialog with a full-or-partial choice, an amount field defaulting to the full amount and validated against it, and a required reason field, then calls Braintree Refund Transaction. On an unsettled transaction, Void, with a required reason, calling Braintree Void Transaction. Show only the action that applies to that transaction's status. On a card in the vault, Remove card, with a required reason, calling Braintree Delete Payment Method From Vault, behind a confirm step because it is permanent. The submit button stays disabled until the reason field has content, on every one of these dialogs.
Refund threshold: keep a configurable amount in app settings, default 250 in your account currency, editable from a small settings panel in the app. A refund at or above that amount requires a second confirmation step after the reason dialog: a summary of what is about to happen (customer, transaction, amount, reason) and a confirm field where the agent retypes the refund amount before the button enables. Below the threshold, the single dialog is enough. This is in-app behaviour rather than a permissions model, and the same applies to the mandatory reason.
After any successful refund, void or card removal, post to a configurable support channel with Slack Send a Message: the acting agent's name, the customer name and email, the action taken, the amount, the transaction or payment method ID, the reason text, and the timestamp. Format it so finance can read the channel as an audit log. If the Braintree call fails, surface the error inline on the row and do not post to Slack.
Customer confirmation email: after a refund or a void, offer to email the customer with Gmail Send a Message, prefilled from an editable template that states what was done, the amount, the payment it relates to and roughly when the money will land. The agent can edit the subject and body before sending, and can skip the email. Default the offer to on for refunds and voids, and off for card removals.
Persistence and identity: store an action log in the app (customer, action, amount, reason, acting agent, timestamp, resulting IDs, whether an email was sent) and show the recent actions for that customer at the bottom of their screen, so the next agent sees what a colleague already did. Handlers run as the app owner, so identify the acting agent from the signed-in app user where available, and otherwise have each agent pick their name once from a configurable roster and remember it for their session. Do not design this around platform viewer or approver roles.
General behaviour: everything is one screen with panels, not a wizard. Show loading states per panel so the billing timeline is usable while tickets are still loading, and handle the case where a customer exists in Braintree but has no tickets, no disputes or no vaulted cards with a quiet empty state rather than an error.
What does this prompt do?
- Search any customer by email or name and get their whole billing history on one screen, with the status, amount and date of every payment.
- Shows open and resolved disputes, recent card checks and the cards on file, and flags anyone who has ever filed a dispute so agents handle them carefully.
- Pulls in the customer's recent support tickets with the latest reply on each, so the money and the conversation sit side by side.
- Lets agents refund a charge in full or in part, cancel a charge that has not gone through yet, remove a dead card, and email the customer a confirmation without leaving the page.
- Posts every action to a Slack channel with the agent's name, the customer, the amount and the reason, so finance has an audit trail.
What do I need to use this?
- A Braintree merchant account and the keys from your Braintree settings page
- A Zendesk account where your support tickets live
- A Google account for sending confirmation emails to customers
- A Slack workspace with a channel for support and finance audit posts
- A decision on your refund limit, the amount above which a second confirmation is required
How can I customize it?
- Set the refund amount that triggers the extra confirmation step, and raise or lower it as your team gets comfortable
- Choose which Slack channel receives audit posts and what each post includes
- Edit the wording of the customer confirmation email, or skip the email for certain actions
- Change how far back the billing timeline and the ticket list reach
FAQs
Do my support agents need Braintree logins?
Can an agent refund more than they should?
What is the difference between refunding and voiding a charge?
How does it know which support tickets belong to the customer?
Will it work with a Braintree test account?
Related templates
Search creators for free, shortlist the best with your team, and spend an audit credit only when you decide someone is worth a closer look.
One screen showing invited, completed, and shortlisted counts for every open role, plus the stalled invites that have quietly gone nowhere.
A calibration board that lines up every candidate's answer to the same question, hides names until your panel has scored, and writes the agreed rating back.
Search three months of global coverage on your topic, rank the outlets actually writing about it, and draft a tailored pitch for each one.
Open one board every morning to see every outstanding quote by age and value, decide on each one, and send follow-ups only after you approve them.
Open one board each morning to see which of your facilities, suppliers and shipping lanes are sitting near trouble in the news right now.
Get your support team out of the Braintree Control Panel.
Give agents one screen with the payments, the disputes and the conversation, plus the buttons to fix it while the customer is still on the chat.