Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.waffo.ai/llms.txt

Use this file to discover all available pages before exploring further.

Overview

Every purchase in Waffo Pancake creates an order and an associated payment record. Orders represent the customer’s intent to buy, while payments track the actual money movement.

Order Statuses

Orders have different status sets depending on the product type.

One-Time Orders

StatusDescription
pendingOrder created, awaiting payment
paidPayment succeeded, order fulfilled
canceledOrder was canceled before completion

Subscription Orders

StatusDescription
pendingSubscription created, awaiting first payment
activeSubscription is live and billing normally
trialingCustomer is in a free trial period
past_duePayment failed, retrying
cancelingCancellation requested, active until period end
canceledSubscription canceled (access continues until period end)
expiredSubscription expired
closedNever activated — payment timed out

Payment Statuses

Pending

Payment initiated, awaiting processing.

Processing

Payment is being processed.

Succeeded

Payment completed successfully.

Failed

Payment failed during processing.

Canceled

Payment was canceled (timeout, merchant action, or buyer cancellation before processing).

Refunded

Full refund has been processed.

Partially Refunded

A partial refund has been processed.
processing may appear in the Dashboard UI but is not returned by the API or GraphQL. Payment statuses from the API are: pending, succeeded, failed, canceled.
Refund status is tracked separately via the refundStatus field on Payment (none / pending / refunded / failed), not as a payment status value.

Payment List

View all payments in a table with the following columns:
ColumnDescription
DateTransaction timestamp
AmountPayment amount as a display format string
Tax AmountTax collected on the transaction
StatusCurrent payment status
Payment Methodcard, bank_transfer, or wallet
CustomerCustomer email address
CurrencyISO 4217 currency code

Filtering

FilterOptions
Statuspending, processing, succeeded, failed, refunded, partially_refunded
Date RangeCustom start and end dates

Payment Details

Click any payment to view its full record.

Transaction Info

FieldDescription
Payment IDUUID v4 identifier
Order IDAssociated order
Store IDStore that received the payment
AmountGross payment amount (display format string)
CurrencyISO 4217 currency code
StatusCurrent payment status
Created AtISO 8601 timestamp
Updated AtISO 8601 timestamp

Amount Details

FieldDescription
amountTotal charged amount
taxAmountTax portion of the amount
settlementCurrencyCurrency used for settlement
settlementAmountAmount in settlement currency (display format string)
refundedAmountTotal amount refunded so far

Billing Detail

FieldDescription
countryCustomer’s billing country
stateBilling state or region
postcodeBilling postal code
isBusinessWhether this is a business purchase
businessNameBusiness name (if applicable)
taxIdTax ID (if applicable)

Payment Method

Payments record which method was used:
MethodValue
Credit/Debit Cardcard
Bank Transferbank_transfer
Digital Walletwallet
Additional method-specific details may be available in the paymentMethodDetails field. The structure of this field varies by payment method.

Supported Payment Methods

Card

Credit and debit card payments.

Bank Transfer

Direct bank-to-bank transfers.

Wallet

Digital wallet payments (Apple Pay, Google Pay, etc.).

Refunds

Refund requests are handled through a separate ticket-based workflow. Buyers submit a refund ticket specifying the payment and reason, and merchants review and approve or reject the request.
For full details on the refund process, statuses, and policies, see the Refunds page.
Key rules:
  • One-time product refunds must be requested within 7 days of payment
  • Subscription cancellations take effect at the end of the current billing period
  • Refund tickets track their own status: pending, approved, rejected, processing, succeeded, failed

API Reference

Creating Orders

Orders are created through a two-step checkout session flow: Step 1: Create a checkout session (API Key or Store Slug auth)
curl -X POST https://api.waffo.ai/v1/actions/checkout/create-session \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_API_KEY_TOKEN" \
  -d '{
    "storeId": "store-uuid",
    "productId": "product-uuid",
    "productType": "onetime",
    "currency": "USD"
  }'
This returns a sessionId, checkoutUrl, and expiresAt. The session locks the product version and price snapshot for 7 days. Step 2: Create the order (API Key auth)
curl -X POST https://api.waffo.ai/v1/actions/onetime-order/create-order \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_API_KEY_TOKEN" \
  -d '{
    "checkoutSessionId": "session-uuid",
    "billingDetail": {
      "country": "US",
      "isBusiness": false,
      "state": "CA"
    }
  }'
Both endpoints return a checkoutUrl that the buyer should be redirected to for payment.

Querying Payments

Use the GraphQL endpoint to query payment records:
query {
  payments(storeId: "store-uuid", limit: 20) {
    id
    orderId
    amount
    currency
    status
    paymentMethod
    amountDetails {
      amount
      taxAmount
      settlementCurrency
      settlementAmount
      refundedAmount
    }
    billingDetail {
      country
      state
      postcode
      isBusiness
      businessName
      taxId
    }
    createdAt
  }
}
All amounts are display format strings. For example, "29.00" in USD means $29.00. For zero-decimal currencies like JPY, "4500" means 4500 yen.