Checkout.com billing lookup console for support agents

Paste an email, order reference or payment id and see the whole payment story, then refund or void it safely without a Checkout.com login.

App
Checkout.comZendeskSlack BotCustomer SupportFinanceNotifications & Alerts
PromptCreate

Build me an internal billing lookup console my support agents can open instead of asking someone with a Checkout.com login. It is a tool humans work one customer at a time, so nothing runs on a schedule and nothing decides a refund on the agent's behalf.

The landing view is a single search box. An agent pastes a customer email address, an order reference or a Checkout.com payment id, and the app works out which one it received. A value starting with pay_ goes straight to Get Payment Details. A client reference goes to Get Payment Lists to pull the payments recorded against that reference, falling back to Search Payments when nothing matches. An email goes to Get Customer Details to resolve the customer, then Search Payments for their payments. Results render in a table showing amount, currency, status, card brand and last four digits, and the payment date, newest first, using the cursor pagination Search Payments returns so long histories keep loading.

Clicking a row opens the payment. The heart of that screen is a plain-English timeline built from Get Payment Actions, so the agent reads lines like "Authorized 12 Mar for 45.00 GBP", "Captured 13 Mar" and "Refunded 10.00 GBP on 2 Apr" rather than raw action records. Show the authorization, the capture, every partial refund already issued and any void. Beside the timeline show the customer record and their stored cards from Get Customer Details and Get Instrument Details, and check Get Disputes filtered to this payment so an attached dispute is visible before anyone touches a refund.

From that screen the agent can act, and which action is offered is derived from the payment status rather than showing both buttons and letting the API reject one. A payment that is authorized but not yet captured offers Void a Payment. A captured payment offers Refund a Payment, either in full or for an amount the agent types. Every action requires a reason picked from a short configurable list such as duplicate charge, item not received, goodwill or cancelled order. A free-text note is optional on top of the reason, never instead of it.

Get the money handling exactly right. Checkout.com amounts are integers in the currency's minor unit, so the partial refund box must accept a normal amount like 12.50 and convert it for the payment's currency, allowing for zero-decimal currencies such as JPY and three-decimal ones such as KWD. Validate the typed amount against how much is still refundable after earlier partial refunds, and block anything over that with a clear message in the form.

Refunds and voids return 202 Accepted with an action id and complete asynchronously, so never report success the moment the call returns. Show a pending state, then poll Get Payment Actions until the matching action reaches a final status, and update the timeline in place when it does. Send an Idempotency-Key on every refund and void so a double-click, a page refresh or a retry cannot issue the refund twice. That is the single most damaging bug in a tool like this, so also disable the action button the moment it is pressed.

If the agent has a Zendesk ticket open, the console finds it with Search Tickets by requester email or ticket number, shows the recent comments from List Ticket Comments beside the payment for context, and after a completed refund or void writes an internal note back with Update Ticket recording exactly what was refunded, how much, why, and which agent did it. The note must be internal, never a public reply to the customer.

An admin sets a refund approval threshold in a settings screen. Refunds at or below it are executed by the agent directly. Refunds above it are not executed at all. Instead the console posts an approval request to a Slack channel with the Slack Bot integration, naming the agent, the customer, the payment, the amount and the reason, and holds the request in a pending approvals list inside the app until a supervisor approves or declines it there. Every completed action posts to the same channel too, so the channel reads as a running audit trail.

Persist a record of every action attempt: the signed-in agent, the payment, the amount, the reason, the linked ticket, the resulting status and the timestamp. That record powers the pending approvals list and an audit log view an admin can filter by agent or by date. Attribute actions to whoever is signed in rather than to a shared account, since naming the agent is the whole point of the audit trail.

Keep the console focused on human lookup and action. It is where escalated refund requests get worked by a person, so do not build automatic triage rules into it.

What does this prompt do?

  • One search box takes a customer email, an order reference or a payment id and returns the matching payments with amount, currency, status, card brand and last four, and date
  • Opening a payment shows a plain English timeline of what already happened to it: the authorization, the capture, any refunds already issued and any dispute attached, next to the customer record and their saved cards
  • Agents can void a payment that has not been captured yet, or refund a captured one in full or for an amount they type, always with a reason from a short list
  • Large refunds are held for a supervisor to approve in Slack instead of being issued, and every completed action posts to the same channel as a running audit trail
  • When the agent is working a Zendesk ticket, the console pulls up the recent conversation and writes an internal note recording what was refunded, how much, why and by whom

What do I need to use this?

  • A Checkout.com account, with a key that can view payments and issue refunds and voids
  • A Slack workspace and a channel for refund approvals and the audit trail
  • A Zendesk account if you want ticket context and automatic notes, which is optional
  • A refund approval limit your team agrees on, and the short list of refund reasons agents pick from

How can I customize it?

  • Set the approval limit: refunds at or under it go through, anything above it waits for a supervisor in Slack
  • Edit the list of refund reasons so it matches how your team already categorizes refunds
  • Choose which Slack channel receives approval requests and the audit trail, and whether ticket notes are written automatically

FAQs

Do my support agents need their own Checkout.com login?
No, and that is the point. The console connects once with your account, and agents only ever see the payment lookup screen and the actions you allow. Nobody needs access to the payment dashboard itself, so you are not handing out logins that come with far more power than a refund button.
Can an agent accidentally refund more than the customer paid?
No. The app works out how much is still refundable after any earlier partial refunds and checks the typed amount against it, so an over-refund is blocked with a clear message before anything is sent.
What stops a double click from refunding the customer twice?
Every refund and void is sent with a unique key that tells Checkout.com to treat a repeated request as the same one, and the button disables itself the moment it is pressed. A double click, a page refresh or a retry cannot issue two refunds.
How do large refunds get approved?
You set the limit. Anything above it is not issued by the agent at all. The console posts a request to your Slack channel naming the agent, the customer, the amount and the reason, and holds it in a pending list until a supervisor approves it.
Why does the refund button sometimes show as pending?
Checkout.com processes refunds and voids in the background rather than instantly, so the app shows a pending state and keeps checking until the payment record confirms the outcome. It never tells an agent a refund succeeded before it actually has.
We already use the automatic refund triage workflow. Does this replace it?
No, the two work together. The triage workflow settles the small clear cut refunds on its own and escalates the rest. This console is where a human works those escalations, with the full payment history in front of them.

Related templates

Share of voice dashboard for your brand and competitors

See how your brand's news coverage and sentiment stack up against four competitors, then let an assistant write the weekly report for you.

GDELT
Notion
Slack Bot
App
Approval war room for every social post awaiting sign-off

One screen showing every social post waiting on approval, sorted by deadline, so reviewers can approve or reject without leaving the page.

Hootsuite
Slack Bot
App
Turn champion job changes into new pipeline in Attio

Every Monday, find the past champions and closed-won contacts who changed jobs, update Attio, and get the moves worth chasing in Slack.

Boomerang
Attio
Slack Bot
Agentic Task
Collect social post requests and schedule them in Hootsuite

Staff submit what happened, your social manager edits the copy, picks the accounts and puts it on the calendar without a single spreadsheet.

Hootsuite
Slack Bot
General Input Database
App
Voice agent QA review board for your Hume EVI calls

Open one board each morning, see which voice calls went badly, replay the exact moment the caller got frustrated, and file the fix.

Hume
Linear
Slack Bot
App
Clear your Guru verification backlog in one weekly app

A personal queue of every overdue Guru card, sorted by how late it is, with one-click verify, reassign, comment, and an agent that drafts the refresh for you.

Guru
Slack Bot
App

Stop handing out payment dashboard logins.

Give your support team one safe screen to look up a Checkout.com payment and reverse it, with approval limits and an audit trail built in.