← All use cases

Expense & purchase approvals

Sign off on spend from your phone, with the decision on the record.

9:41
Roundtrip
Pending

New $1,200/yr software subscription

Over the $1,000 auto-approve limit — needs a manager's yes.

Amount
$1,200/yr
Requested by
Lena O.
Vendor
Linear
Budget
Engineering
The round trip

A notification that opens into a decision

Every Roundtrip request is one loop: something happens, a person decides on their phone, and the decision lands back in your app, signed.

  1. 1
    Trigger

    The trigger

    Someone submits an expense, a new subscription, or a purchase that crosses a threshold. It needs a manager's decision before it goes through — the kind of thing that usually waits in an inbox for days.

  2. 2
    Ask

    The ask

    The approver gets a card with the amount, who's asking, and what it's for, plus Approve / Decline. No spreadsheet to open, no separate tool to log into — just the decision, where they already are.

  3. 3
    Response

    What comes back

    The verdict returns to your system, signed, so the purchase is unblocked or rejected automatically and the approval is logged against the request — not buried in a thread.

The API

One request out, one signed response back

The card on the phone is rendered straight from the request body, not a mockup. When the recipient responds, Roundtrip POSTs a signed event to your webhook and retries until it lands.

POST /roundtrip/v1/requests200 OK
{
  "channels": [
    "approvals"
  ],
  "notification": {
    "title": "Expense · approval",
    "body": "New $1,200/yr subscription is over the limit — needs your yes."
  },
  "content": {
    "title": "New $1,200/yr software subscription",
    "description": "Over the $1,000 auto-approve limit — needs a manager's yes.",
    "status": {
      "label": "Pending",
      "tone": "warning"
    },
    "sections": [
      {
        "type": "keyvalue",
        "columns": 2,
        "items": [
          {
            "label": "Amount",
            "value": "$1,200/yr",
            "mono": true
          },
          {
            "label": "Requested by",
            "value": "Lena O."
          },
          {
            "label": "Vendor",
            "value": "Linear"
          },
          {
            "label": "Budget",
            "value": "Engineering"
          }
        ]
      }
    ],
    "actions": [
      {
        "id": "approve",
        "label": "Approve",
        "style": "primary"
      },
      {
        "id": "decline",
        "label": "Decline",
        "style": "destructive"
      }
    ]
  },
  "response": {
    "mode": "required",
    "webhook": "https://api.example.com/roundtrip"
  }
}
9:41
Roundtrip
Pending

New $1,200/yr software subscription

Over the $1,000 auto-approve limit — needs a manager's yes.

Amount
$1,200/yr
Requested by
Lena O.
Vendor
Linear
Budget
Engineering
POST https://api.example.com/roundtripsigned · tap
{
  "requestId": "req_8Kx2…",
  "channel": "approvals",
  "kind": "tap",
  "action": "approve",
  "respondedAt": "2026-06-20T16:41:09Z"
}

Wire up Expense & purchase approvals

Get an API key and send your first request in the next few minutes.

More use cases