Skip to content

Refund Approval Workflow

Refunds that send money through Plirin, to a card or on-chain, go through an approval step based on the requester’s role and the refund amount. A recorded refund (an offline payment you paid back yourself) is already paid, so it has no approval step.

Requested → Awaiting approval → Approved → Completed
→ Failed (card, with the reason)
→ Rejected

For a card refund, Approved means Plirin sent the refund to Stripe. It then reads Processing at Stripe until Stripe confirms, and Refunded after. See Refunds for every status.

RoleCan requestCan approveApproval limit
OwnerYesYesUnlimited
ManagerYesYesUp to the manager limit for the currency, currently 100.00 in USD and in EUR, and the same 100.00 for any other currency
CashierCard and on-chain refundsNoMust be approved by a manager or owner

A cashier cannot record an offline refund. That needs permission to manage invoices, which owners and managers have.

  1. Anyone who can request a refund submits one, from a paid invoice or the Refunds page.
  2. For a card refund, if the requester can also approve and the amount is within their limit, the refund is approved in the same step. The dashboard calls this Refund now. An on-chain refund is never one-step: even an owner sees Request refund, and approves it from the Refunds page.
  3. Otherwise it waits as Awaiting approval, with its credit note drafted against the invoice, until a manager or owner approves or rejects it.
  4. When it is approved, a card refund is sent to Stripe. An on-chain refund waits for you to send the transfer and mark it complete.
  5. Rejecting a request voids its credit note. The invoice stays paid and nothing is sent.

A manager who asks for a refund above their limit is told so, and the button becomes Request refund: it waits for an owner.

The approval rules are enforced by Plirin itself, not only by the dashboard, so the API and the dashboard behave the same way.

  • Stripe refused it or it failed: the refund shows Failed with the reason, its credit note is voided and the invoice’s balance goes back to what it was. You are emailed.
  • Stripe could not be reached: if Plirin knows the request never left, the refund returns to Awaiting approval and can be approved again. If it may have left, it shows Sent to Stripe, outcome not confirmed yet. Do not approve it again: Plirin checks with Stripe on its own and never sends the same refund twice.
  • The same money was already refunded in Stripe: approving is refused, and the request should be rejected. See Refunds made directly in Stripe.
  • The payment is under dispute: a card payment with an open dispute cannot be refunded. See Disputes.

An on-chain refund is completed once the transfer is sent, with its transaction hash recorded against the original payment. A card refund completes by itself when Stripe confirms it. A recorded refund is complete when you record it. Card and recorded refunds cannot be completed by hand.