Grosso

01 — Ask · Payment requests for AI agents

Let your AI agent
take payments
in iMessage.

Grosso lets your agent send a payment request in the conversation. Customers check the total and pay with Apple Pay without leaving the thread, and funds settle directly to your Stripe account.

Fee
0.1% per payment, first $50k free
Settles to
Your Stripe account
Paid with
Apple Pay, or any card

4:02

RB

Rossi Bakery

›

iMessage

Today 3:58 PM

Hi! Could I get a chocolate birthday cake for Thursday? 8 inch, please.

Happy to! An 8 in chocolate is $42, and delivery Thu 4–6 pm is $6. Shall I send the request?

Yes please

Read 4:01 PM

Rossi Bakery asks you to pay

$48

.00

Birthday cake + delivery

Grosso · Tap to pay

Tap the card to pay with Apple Pay.

Message

1 / 4 · Tap the card

Step 1 of 4: Tap the card

Fig. 1 — Rossi Bakery, Thu 4:02 PM. Example conversation.

02 — The line · Payment lifecycle

Built for the whole payment, not just the checkout.

  1. Requested

    Your agent creates the request. Link previews can’t trigger a charge.

  2. Checked

    Customers see the business, each line item and the total before they pay.

    Expired

    Unpaid requests expire after 24 hours, or whenever you set. Only one checkout is live at a time, so no one pays twice.

  3. Paid

    Apple Pay, right in iMessage. No app to download, no redirect.

    Refunded

    Refunds an agent asks for wait for the owner’s approval. Our fee is refunded with them.

  4. Settled

    The money is in the business’s Stripe balance, with our fee already taken.

    Disputed

    The business and its agent are notified as soon as Stripe opens a dispute.

  5. Paid out

    Stripe sends it to the bank on its normal schedule. Grosso never holds funds.

How to read this

Main line: the expected path.

Branches: what happens when something goes wrong.

Created, paid, refunded and disputed each send a signed webhook.

03 — Build · API preview

Add payments to your agent with one API call.

Create a payment request with line items for a payee. Your agent drops it in the thread; Grosso collects the payment and sends a webhook when it’s paid.

  • Idempotent requests

    Safely retry any request with an idempotency key.

  • Test mode

    Build end to end with Stripe test cards.

  • Signed webhooks

    Verify every event. Failed deliveries retry with backoff.

Read the API reference →
POST /v1/payment_requestscURL
curl https://pay.grosso.ai/v1/payment_requests \
  -H "Authorization: Bearer $GROSSO_API_KEY" \
  -H "idempotency-key: order_rossi_0001" \
  -d '{
    "payee_id": "payee_7Qk2",
    "description": "Birthday cake + delivery",
    "goods_type": "physical",
    "line_items": [
      { "name": "Chocolate birthday cake, 8 in", "quantity": 1, "unit_amount": 4200 },
      { "name": "Delivery, Thu 4–6 pm", "quantity": 1, "unit_amount": 600 }
    ]
  }'
Response · 200JSON
{
  "id": "pr_9fK2x",
  "object": "payment_request",
  "status": "open",
  "amount": 4800,
  "application_fee_amount": 4,
  "currency": "usd",
  "native_apple_pay_eligible": true,
  "checkout_url": "https://pay.grosso.ai/pay/pr_9fK2x",
  "expires_at": 1793212052
}
Webhook · payment_request.paidPOST
{
  "id": "evt_4tP8a",
  "object": "event",
  "type": "payment_request.paid",
  "livemode": false,
  "created": 1793128981,
  "data": {
    "id": "pr_9fK2x",
    "object": "payment_request",
    "status": "paid",
    "amount": 4800,
    "application_fee_amount": 4
  }
}

Example values. IDs and keys are illustrative.

04 — Terms

(a)
You stay the merchant.
Payments are created on your own Stripe account. Grosso never holds your funds.
(b)
Transparent pricing.
Free on your first $50k, then 0.1% per successful payment. No setup or monthly fees. Standard Stripe processing fees apply.
(c)
Limits you control.
Set a maximum per request and per day, up to your account’s tier, so your agent can only ask for what you allow.