Customer account

/v1/me is the buyer's own view of their commerce data. Every endpoint here is authorized by a customer session secret, and the identity in that credential decides whose data is returned.

There is no customer_id argument anywhere in this namespace. A customer_id in the query string, or nested anywhere in the request body, is rejected with ME_CUSTOMER_ID_FORBIDDEN rather than ignored. A resource that exists but belongs to another buyer returns 404, not 403, so the namespace does not confirm that someone else's order ID is real.

Use this when you build your own account UI. Flint keeps enforcing access on the server, so a bug in your front end cannot show one buyer another buyer's order.

What the buyer can do#

JobEndpoints
Profile and emailGET/PATCH /v1/me, email change request and confirm
Email preferencesGet and update the optional email categories the buyer's address receives
OrdersOrders, order activity, receipt resend
MoneyPayments, refunds
Gift cardsSave with possession proof, list, get balance, list anonymous history, remove saved access
DeliveryFulfillments, shipments, packages
InvoicesList, get, PDF, and a checkout session to pay one
SubscriptionsList, get, pause, resume, cancel, reactivate, change payment method, start and get a payment retry
Saved payment methodsList, get, add, remove, set default
AddressesList, create, get, update, delete, set default
ReturnsEligibility check, create, get, cancel, POST /v1/me/return-resolutions/{return_resolution_id}/checkout-session
Account closureRequest deletion, list requests, get one request's status

A narrowed projection, not an alias#

These are not the merchant endpoints with a filter applied. Reads are trimmed to what a buyer should see, and writes are limited to what a buyer should be able to do to their own account.

Returns are the clearest case: a Return read through a customer session carries a narrower supported_actions and completion_blockers than the same Return read with a merchant key, because a buyer cannot receive, inspect, or approve their own Return. See self-serve Returns.

expand is not available here. Subscription reads include subscription_plan without it: the plan's current summary, or null for a subscription created without a plan.

Writes that move money#

Paying an invoice and paying a Return resolution both go through a checkout session rather than a direct charge. The buyer's own account never carries payment authority, and Flint's hosted payment surface handles the card. This is the same for a merchant-hosted account as for Flint's.

Gift card access follows possession#

Saved gift cards use the full customer session to identify the buyer's collection, and a current gift card code or private recipient link to prove access. Saving does not confer exclusive ownership or checkout spending authority. Several buyers can save one card, and each sees its balance and anonymous history. The full code, other holders' identities, and merchant provenance stay private. Replacing a code invalidates saved access until fresh proof is provided.

Get the current buyer profile#

GET/v1/me

Requires CustomerSessionBearer

Uses the customer identity fixed by the customer session. The request cannot select a customer_id. Returns a single customer by ID.

Response · 200

dataobjectRequired
metaobject
request_idstring
curl https://api.withflintpay.com/v1/me \
  -H "Flint-Version: 2026-09-07" \
  -H "Authorization: Bearer YOUR_API_KEY"
JSON
{
  "data": {
    "billing_address": {
      "city": "New York",
      "country": "US",
      "line1": "123 Main St",
      "postal_code": "10001",
      "state": "NY"
    },
    "created_at": "2026-03-17T14:30:00Z",
    "customer_id": "cus_123",
    "email": "jane@example.com",
    "group_id": "vip",
    "is_verified": true,
    "merchant_id": "mer_123",
    "metadata": {
      "crm_id": "crm_123"
    },
    "name": "Jane Doe",
    "phone": "+14155552671",
    "tax_exempt": true,
    "tax_identity": null,
    "updated_at": "2026-03-17T14:30:00Z",
    "version": 0
  },
  "request_id": "bce56cba-0827-44aa-bb56-4f200ba15ee6"
}
curl -X PATCH https://api.withflintpay.com/v1/me \
  -H "Flint-Version: 2026-09-07" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: a-unique-key" \
  -d '{
    "name": "Ada Lovelace",
    "phone": "+14155550123"
  }'

List the current buyer's addresses#

GET/v1/me/addresses

Requires CustomerSessionBearer

Uses the customer identity fixed by the customer session. The request cannot select a customer_id. Lists the customer's saved addresses with billing and shipping default flags.

Query parameters

page_sizeinteger

Number of addresses to return.

page_tokenstring

Opaque token returned by the previous page.

Response · 200

dataarray of objectRequired
metaobject
next_page_tokenstring
request_idstring
curl https://api.withflintpay.com/v1/me/addresses \
  -H "Flint-Version: 2026-09-07" \
  -H "Authorization: Bearer YOUR_API_KEY"

Create an address for the current buyer#

POST/v1/me/addressesIdempotent

Requires CustomerSessionBearer

Uses the customer identity fixed by the customer session. The request cannot select a customer_id. Creates a stable saved address. The first address becomes both the billing and shipping default. A saved default becomes the customer's effective address for the corresponding role.

Request body

addressobjectRequired
is_default_billingboolean
is_default_shippingboolean
labelstring
phonestring
recipient_namestringRequired

Response · 201

dataobjectRequired
metaobject
request_idstring
curl -X POST https://api.withflintpay.com/v1/me/addresses \
  -H "Flint-Version: 2026-09-07" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: a-unique-key" \
  -d '{
    "address": {
      "city": "",
      "country": "US",
      "line1": "",
      "postal_code": "",
      "state": ""
    },
    "recipient_name": ""
  }'

Get one of the current buyer's addresses#

GET/v1/me/addresses/{customer_address_id}

Requires CustomerSessionBearer

Uses the customer identity fixed by the customer session. The request cannot select a customer_id. Returns one saved address owned by the customer.

Path parameters

customer_address_idstringRequired

Flint customer address ID.

Response · 200

Same response as Create an address for the current buyer.

curl https://api.withflintpay.com/v1/me/addresses/{customer_address_id} \
  -H "Flint-Version: 2026-09-07" \
  -H "Authorization: Bearer YOUR_API_KEY"

Update one of the current buyer's addresses#

PATCH/v1/me/addresses/{customer_address_id}Idempotent

Requires CustomerSessionBearer

Uses the customer identity fixed by the customer session. The request cannot select a customer_id. Applies a sparse update to a saved address. Updating a default address also updates the customer's effective address for that role.

Path parameters

customer_address_idstringRequired

Flint customer address ID.

Request body

addressobject
labelstring
phonestring
recipient_namestring

Response · 200

Same response as Create an address for the current buyer.

curl -X PATCH https://api.withflintpay.com/v1/me/addresses/{customer_address_id} \
  -H "Flint-Version: 2026-09-07" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: a-unique-key" \
  -d '{
    "address": {
      "city": "",
      "country": "US",
      "line1": "",
      "postal_code": "",
      "state": ""
    },
    "label": "",
    "phone": "",
    "recipient_name": ""
  }'

Delete one of the current buyer's addresses#

DELETE/v1/me/addresses/{customer_address_id}Idempotent

Requires CustomerSessionBearer

Uses the customer identity fixed by the customer session. The request cannot select a customer_id. Deletes a saved address and moves any default designation to the newest remaining address.

Path parameters

customer_address_idstringRequired

Flint customer address ID.

Response · 200

dataobjectRequired
metaobject
request_idstring
curl -X DELETE https://api.withflintpay.com/v1/me/addresses/{customer_address_id} \
  -H "Flint-Version: 2026-09-07" \
  -H "Authorization: Bearer YOUR_API_KEY"

Set a default address for the current buyer#

POST/v1/me/addresses/{customer_address_id}/set-defaultIdempotent

Requires CustomerSessionBearer

Uses the customer identity fixed by the customer session. The request cannot select a customer_id. Sets the address as the billing default, shipping default, or both and makes it the customer's effective address for each selected role.

Path parameters

customer_address_idstringRequired

Flint customer address ID.

Request body

default_forenumRequired
  • billing
  • shipping
  • both

Response · 200

Same response as Create an address for the current buyer.

curl -X POST https://api.withflintpay.com/v1/me/addresses/{customer_address_id}/set-default \
  -H "Flint-Version: 2026-09-07" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: a-unique-key" \
  -d '{
    "default_for": "billing"
  }'

List the current buyer's deletion requests#

GET/v1/me/deletion-requests

Requires CustomerSessionBearer

Uses the customer identity fixed by the customer session. Lists the current buyer's deletion requests in the selected merchant environment, newest first by requested_at.

Query parameters

statusenum

Only return requests in this lifecycle state.

  • pending_review
  • processing
  • completed
  • rejected
  • failed
page_sizeinteger

Number of deletion requests to return.

page_tokenstring

Opaque token returned by the previous page.

Response · 200

dataarray of objectRequired
metaobject
next_page_tokenstring
request_idstring
curl https://api.withflintpay.com/v1/me/deletion-requests \
  -H "Flint-Version: 2026-09-07" \
  -H "Authorization: Bearer YOUR_API_KEY"

Request deletion of the current buyer's account#

POST/v1/me/deletion-requestsIdempotent

Requires CustomerSessionBearer

Uses the customer identity fixed by the customer session. The request cannot select a customer_id. Creates or returns the pending tracked deletion request. Required commerce records are retained until the deletion workflow resolves their legal retention requirements.

Response · 202

dataobjectRequired
metaobject
request_idstring
curl -X POST https://api.withflintpay.com/v1/me/deletion-requests \
  -H "Flint-Version: 2026-09-07" \
  -H "Authorization: Bearer YOUR_API_KEY"

Get the current buyer's deletion request#

GET/v1/me/deletion-requests/{customer_deletion_request_id}

Requires CustomerSessionBearer

Uses the customer identity fixed by the customer session. The request cannot select a customer_id. Returns the current status of a tracked deletion request.

Path parameters

customer_deletion_request_idstringRequired

Flint customer deletion request ID.

Response · 200

Same response as Request deletion of the current buyer's account.

curl https://api.withflintpay.com/v1/me/deletion-requests/{customer_deletion_request_id} \
  -H "Flint-Version: 2026-09-07" \
  -H "Authorization: Bearer YOUR_API_KEY"

Request an email change#

POST/v1/me/email-change-requestsIdempotent

Requires CustomerSessionBearer

Sends short-lived confirmation codes to the current and new email addresses. If the account has no current email, only the new address must be confirmed. The customer email does not change until confirmation succeeds.

Request body

new_emailstringRequired

Response · 201

dataobjectRequired
metaobject
request_idstring
curl -X POST https://api.withflintpay.com/v1/me/email-change-requests \
  -H "Flint-Version: 2026-09-07" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: a-unique-key" \
  -d '{
    "new_email": ""
  }'

Confirm an email change#

POST/v1/me/email-change-requests/{email_change_request_id}/confirmIdempotent

Requires CustomerSessionBearer

Confirms possession of the current and new email addresses, then atomically updates the customer account in the selected merchant environment. Omit current_email_code only when current_email_confirmation_required is false.

Path parameters

email_change_request_idstringRequired

Flint email change request ID.

Request body

current_email_codestring
new_email_codestringRequired

Response · 200

Same response as Request an email change.

curl -X POST https://api.withflintpay.com/v1/me/email-change-requests/{email_change_request_id}/confirm \
  -H "Flint-Version: 2026-09-07" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: a-unique-key" \
  -d '{
    "new_email_code": ""
  }'

Get the current buyer's email preferences#

GET/v1/me/email-preferences

Requires CustomerSessionBearer

Uses the customer identity fixed by the customer session. Returns which of the merchant's optional email categories the customer's current email receives in the selected merchant environment. A category the buyer never changed is on. Email preferences exist only for a customer with an email: without one, the read answers 404 with CUSTOMER_EMAIL_REQUIRED. Receipts and other transactional email always send.

Response · 200

dataobjectRequired
metaobject
request_idstring
curl https://api.withflintpay.com/v1/me/email-preferences \
  -H "Flint-Version: 2026-09-07" \
  -H "Authorization: Bearer YOUR_API_KEY"
JSON
{
  "data": {
    "checkout_reminders": false,
    "customer_id": "cus_123",
    "shipping_updates": true
  },
  "request_id": "bce56cba-0827-44aa-bb56-4f200ba15ee6"
}

Update the current buyer's email preferences#

PATCH/v1/me/email-preferencesIdempotent

Requires CustomerSessionBearer

Uses the customer identity fixed by the customer session. Turns the optional email categories in the body on or off for the customer's current email at this merchant in the selected merchant environment, and leaves the others as they are. The setting follows the email address, so it also covers guest checkouts with the same email. A customer without an email has no email preferences, and the change answers 404 with CUSTOMER_EMAIL_REQUIRED.

Request body

checkout_remindersboolean

A reminder after leaving checkout without paying.

shipping_updatesboolean

Emails about shipments and deliveries, such as shipped, out for delivery, and delivered.

Response · 200

Same response as Get the current buyer's email preferences.

curl -X PATCH https://api.withflintpay.com/v1/me/email-preferences \
  -H "Flint-Version: 2026-09-07" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: a-unique-key" \
  -d '{
    "checkout_reminders": false
  }'

List cards saved with Flint for this store#

GET/v1/me/flint-wallet/payment-methods

Requires CustomerSessionBearer

Returns the current buyer's usable wallet cards in newest-first order. Each id is an opaque per-store handle. store_payment_method_id is null until this store holds a copy. Requires a customer session minted from a live email-code buyer login at a Flint-hosted store account, including a login narrowed to a custom domain. Email links, checkout sessions, grants, merchant-created sessions, and API keys receive 404. Live and sandbox wallets are isolated. The full card collection is returned; has_more is false. Flint wallet support must be enabled.

Response · 200

dataarray of objectRequired
has_moreenumRequired

Always false. This operation returns the full usable card collection.

  • false
metaobject
request_idstringRequired
curl https://api.withflintpay.com/v1/me/flint-wallet/payment-methods \
  -H "Flint-Version: 2026-09-07" \
  -H "Authorization: Bearer YOUR_API_KEY"
JSON
{
  "data": [
    {
      "brand": "visa",
      "exp_month": 12,
      "exp_year": 2035,
      "id": "fwc_YN5NSFVRK5MS4VOE5RPXM4BEXZZZE3UVCNJGTGR4TBV4VOHS6WRA",
      "last4": "4242",
      "store_payment_method_id": null
    }
  ],
  "has_more": false,
  "request_id": "req_example"
}

Set up a Flint wallet card at this store#

POST/v1/me/flint-wallet/payment-methods/{id}/store-setupsIdempotent

Requires CustomerSessionBearer

Records the buyer's consent to save an independent store copy for off-session payments, including subscriptions. Call only after the buyer agrees. Requires a live email-code buyer login and an enabled Flint wallet at a Flint-hosted store account. Supply an id from listMeFlintWalletPaymentMethods. Confirm client_setup with Stripe.js confirmSetup, then poll GET /v1/me/payment-methods/{payment_method_id} until active before changing a subscription through /v1/me/subscriptions/{subscription_id}/payment-method. Setup may request authentication. Removing the platform card or revoking store consent blocks the copy immediately. Idempotency-Key is required and scoped to the store, customer, card handle, and key. Responses are retained for 24 hours. After a copy is revoked, retries with any key bound to that copy are refused. Get new consent and use a new key to create another copy. Retry a lost response with the same key. Concurrent requests for the same card at this store share one copy and setup. A failed off-session charge can still require the buyer to return through the existing card-update link. Accept an empty body or {}.

Path parameters

idstringRequired

The card's handle at this store.

Response · 201

dataobjectRequired
metaobject
request_idstringRequired
curl -X POST https://api.withflintpay.com/v1/me/flint-wallet/payment-methods/{id}/store-setups \
  -H "Flint-Version: 2026-09-07" \
  -H "Authorization: Bearer YOUR_API_KEY"

List the current buyer's fulfillment events#

GET/v1/me/fulfillment-events

Requires CustomerSessionBearer

Lists fulfillment events for an order owned by the current buyer, ordered by occurred_at descending. Internal merchant fields are omitted. order_id is required.

Query parameters

order_idstringRequired

Required buyer-owned order ID.

fulfillment_idstring

Filter by fulfillment ID.

shipment_idstring

Filter by shipment ID.

package_idstring

Filter by package ID.

page_sizeinteger

Page size, default 20, max 100.

page_tokenstring

Opaque pagination token.

Response · 200

dataarray of objectRequired
metaobject
next_page_tokenstring
request_idstring
curl https://api.withflintpay.com/v1/me/fulfillment-events \
  -H "Flint-Version: 2026-09-07" \
  -H "Authorization: Bearer YOUR_API_KEY"

List the current buyer's fulfillments#

GET/v1/me/fulfillments

Requires CustomerSessionBearer

Uses the customer identity fixed by the customer session. The request cannot select a customer_id. Returns fulfillments for operational queue and order-detail views. Results default to newest created first.

Query parameters

order_idstring

Filter by order ID.

page_sizeinteger

Page size, default 20, max 100.

page_tokenstring

Cursor returned by the previous list response.

external_reference_idstring

Exact-match filter on the caller-owned external reference ID.

querystring

Search across fulfillment_id and external_reference_id. Also matches an exact order number. Text fields match any part of the value, and %, _ and \ are ordinary characters, not wildcards. IDs match from the start and need the type prefix, such as ord_01.

statusenum

Filter by the projected value returned in Fulfillment.status. Fulfillments with request_status accepted project to status pending. Fulfillments with outcome.outcome_type no_show project to status failed. A fulfillment with active_hold projects to its public work status from before the hold.

  • pending
  • in_progress
  • ready
  • completed
  • canceled
  • failed
  • scheduled
  • preparing
  • picked
  • packed
  • dispatched
typeenum

Filter by fulfillment type.

  • shipment
  • pickup
  • local_delivery
  • digital
  • service
location_idstring

Filter by assigned Location ID.

created_afterstring

Lower bound for created_at.

created_beforestring

Upper bound for created_at.

updated_afterstring

Lower bound for updated_at.

updated_beforestring

Upper bound for updated_at.

sort_directionenum

Sort direction for created_at. Defaults to desc.

  • asc
  • desc

Response · 200

dataarray of objectRequired
metaobject
next_page_tokenstring
request_idstring
curl https://api.withflintpay.com/v1/me/fulfillments \
  -H "Flint-Version: 2026-09-07" \
  -H "Authorization: Bearer YOUR_API_KEY"
JSON
{
  "data": [
    {
      "completed_at": "2026-05-13T14:30:00Z",
      "created_at": "2026-05-13T09:45:00Z",
      "fulfillment_id": "ful_01ABCDEFGHIJKLMNOPQRSTUVWX",
      "line_items": [
        {
          "order_line_item_id": "li_123",
          "quantity": 1
        }
      ],
      "metadata": {
        "source": "dispatch"
      },
      "order_id": "ord_01ABCDEFGHIJKLMNOPQRSTUVWX",
      "request_status": "accepted",
      "status": "completed",
      "supported_actions": [],
      "type": "shipment",
      "updated_at": "2026-05-13T14:30:00Z",
      "version": 4
    }
  ],
  "next_page_token": "example",
  "request_id": "bce56cba-0827-44aa-bb56-4f200ba15ee6"
}

List your saved gift cards#

GET/v1/me/gift-cards

Requires CustomerSessionBearer

Requires a full customer session. Saved access requires possession of a current code or recipient link. Customer associations and purchase history do not authorize access. Replacing a code invalidates saved access; save again with fresh proof. Saved access does not permit spending or reveal a full code. Lists valid saved cards by saved time then card ID, descending.

Query parameters

page_sizeinteger

Number of records to return.

page_tokenstring

Opaque continuation token bound to this buyer and the same request parameters.

Response · 200

dataarray of objectRequired
metaobject
next_page_tokenstring
request_idstring
curl https://api.withflintpay.com/v1/me/gift-cards \
  -H "Flint-Version: 2026-09-07" \
  -H "Authorization: Bearer YOUR_API_KEY"

Save a gift card to your account#

POST/v1/me/gift-cardsIdempotent

Requires CustomerSessionBearer

Requires a full customer session. Saved access requires possession of a current code or recipient link. Customer associations and purchase history do not authorize access. Replacing a code invalidates saved access; save again with fresh proof. Saved access does not permit spending or reveal a full code.

Request body

Send exactly one of these

codestringRequired
credential_typeenumRequired
  • code

Response · 200

dataobjectRequired
metaobject
request_idstring
curl -X POST https://api.withflintpay.com/v1/me/gift-cards \
  -H "Flint-Version: 2026-09-07" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: a-unique-key" \
  -d '{}'

Get a saved gift card#

GET/v1/me/gift-cards/{gift_card_id}

Requires CustomerSessionBearer

Requires a full customer session. Saved access requires possession of a current code or recipient link. Customer associations and purchase history do not authorize access. Replacing a code invalidates saved access; save again with fresh proof. Saved access does not permit spending or reveal a full code.

Path parameters

gift_card_idstringRequired

Flint gift card ID.

Response · 200

Same response as Save a gift card to your account.

curl https://api.withflintpay.com/v1/me/gift-cards/{gift_card_id} \
  -H "Flint-Version: 2026-09-07" \
  -H "Authorization: Bearer YOUR_API_KEY"

Remove a saved gift card#

DELETE/v1/me/gift-cards/{gift_card_id}Idempotent

Requires CustomerSessionBearer

Requires a full customer session. Saved access requires possession of a current code or recipient link. Customer associations and purchase history do not authorize access. Replacing a code invalidates saved access; save again with fresh proof. Saved access does not permit spending or reveal a full code. Removes only this buyer's saved access without changing funds or other holders' access. Repeated removals succeed.

Path parameters

gift_card_idstringRequired

Flint gift card ID.

Response · 200

Same response as Delete one of the current buyer's addresses.

curl -X DELETE https://api.withflintpay.com/v1/me/gift-cards/{gift_card_id} \
  -H "Flint-Version: 2026-09-07" \
  -H "Authorization: Bearer YOUR_API_KEY"

List a saved gift card's balance history#

GET/v1/me/gift-cards/{gift_card_id}/transactions

Requires CustomerSessionBearer

Requires a full customer session. Saved access requires possession of a current code or recipient link. Customer associations and purchase history do not authorize access. Replacing a code invalidates saved access; save again with fresh proof. Saved access does not permit spending or reveal a full code. Lists the full anonymous balance-change history by per-card sequence, descending. Other holders' identities and order references are omitted.

Path parameters

gift_card_idstringRequired

Flint gift card ID.

Query parameters

page_sizeinteger

Number of records to return.

page_tokenstring

Opaque continuation token bound to this buyer and the same request parameters.

Response · 200

dataarray of objectRequired
metaobject
next_page_tokenstring
request_idstring
curl https://api.withflintpay.com/v1/me/gift-cards/{gift_card_id}/transactions \
  -H "Flint-Version: 2026-09-07" \
  -H "Authorization: Bearer YOUR_API_KEY"

List the current buyer's invoices#

GET/v1/me/invoices

Requires CustomerSessionBearer

Uses the customer identity fixed by the customer session. The request cannot select a customer_id. Returns a paginated list of invoices for the authenticated merchant.

Query parameters

page_sizeinteger

Page size, default 20, max 100.

page_tokenstring

Cursor returned by the previous list response.

statusarray of enum

Filter by invoice status. Repeat the parameter or pass comma-separated values to match multiple statuses.

  • draft
  • open
  • partially_paid
  • paid
  • void
  • uncollectible
  • credited
order_idstring

Filter by Flint order ID.

external_reference_idstring

Exact-match filter on the caller-owned external reference ID.

created_afterstring

RFC3339 lower bound for created_at.

created_beforestring

RFC3339 upper bound for created_at.

due_afterstring

RFC3339 lower bound for due_at.

due_beforestring

RFC3339 upper bound for due_at.

is_overdueboolean

Filter by whether the invoice is overdue.

has_amount_dueboolean

Filter by whether the invoice has a remaining amount due.

sort_byenum

Sort field.

  • created_at
  • updated_at
  • due_at
  • invoice_number
  • outstanding_money
sort_directionenum

Sort direction.

  • asc
  • desc
querystring

Search across invoice_id, invoice_number, external_reference_id, recipient_email, reference, and the customer name and email on the invoice. Text fields match any part of the value, and %, _ and \ are ordinary characters, not wildcards. IDs match from the start and need the type prefix, such as ord_01.

Response · 200

dataarray of objectRequired
metaobject
next_page_tokenstring
request_idstring
curl https://api.withflintpay.com/v1/me/invoices \
  -H "Flint-Version: 2026-09-07" \
  -H "Authorization: Bearer YOUR_API_KEY"
JSON
{
  "data": [
    {
      "buyer_actions": [
        {
          "due_at": "2026-03-31T23:59:59Z",
          "is_available": true,
          "is_required": true,
          "kind": "pay"
        }
      ],
      "cc_emails": [
        "owner@example.com"
      ],
      "collection_block_status": "",
      "created_at": "2026-03-21T15:03:00Z",
      "credit_money": {
        "amount": 0,
        "currency": "USD"
      },
      "currently_due_money": {
        "amount": 15000,
        "currency": "USD"
      },
      "customer_id": "cus_01J00000000000000000000000",
      "due_at": "2026-03-31T23:59:59Z",
      "invoice_id": "inv_01J00000000000000000000000",
      "invoice_number": "1042",
      "is_overdue": false,
      "issued_at": "2026-03-21T15:04:05Z",
      "late_fees": null,
      "merchant_id": "mer_01J00000000000000000000000",
      "order_id": "ord_01J00000000000000000000000",
      "outstanding_money": {
        "amount": 15000,
        "currency": "USD"
      },
      "paid_money": {
        "amount": 0,
        "currency": "USD"
      },
      "recipient_email": "buyer@example.com",
      "reference": "PO-1042",
      "refund_status": "none",
      "refunded_money": {
        "amount": 0,
        "currency": "USD"
      },
      "snapshot": {
        "buyer_tax_identity": null,
        "customer_display_name": "Avery Buyer",
        "customer_email": "buyer@example.com",
        "line_items": [
          {
            "base_subtotal_money": {
              "amount": 15000,
              "currency": "USD"
            },
            "discount_money": {
              "amount": 0,
              "currency": "USD"
            },
            "invoice_line_item_id": "",
            "modifier_total_money": {
              "amount": 0,
              "currency": "USD"
            },
            "name": "Consulting session",
            "quantity": 1,
            "subtotal_money": {
              "amount": 15000,
              "currency": "USD"
            },
            "tax_money": {
              "amount": 0,
              "currency": "USD"
            },
            "total_money": {
              "amount": 15000,
              "currency": "USD"
            },
            "unit_price_money": {
              "amount": 15000,
              "currency": "USD"
            }
          }
        ],
        "memo": "Payment due within 10 days.",
        "merchant_display_name": "Flint Services",
        "pricing_amounts": {
          "charge_money": {
            "amount": 0,
            "currency": "USD"
          },
          "discount_money": {
            "amount": 0,
            "currency": "USD"
          },
          "requested_tip_money": {
            "amount": 0,
            "currency": "USD"
          },
          "subtotal_money": {
            "amount": 15000,
            "currency": "USD"
          },
          "tax_money": {
            "amount": 0,
            "currency": "USD"
          },
          "total_money": {
            "amount": 15000,
            "currency": "USD"
          }
        },
        "seller_tax_identity": null
      },
      "status": "open",
      "updated_at": "2026-03-21T15:04:05Z",
      "version": 1
    }
  ],
  "next_page_token": "example",
  "request_id": "bce56cba-0827-44aa-bb56-4f200ba15ee6"
}

Get one of the current buyer's invoices#

GET/v1/me/invoices/{invoice_id}

Requires CustomerSessionBearer or InvoiceAccessTokenBearer

Uses the customer identity fixed by the customer session. The request cannot select a customer_id. Returns a single invoice by ID.

Path parameters

invoice_idstringRequired

Flint invoice ID.

Response · 200

dataobjectRequired
metaobject
request_idstring
curl https://api.withflintpay.com/v1/me/invoices/inv_01J00000000000000000000000 \
  -H "Flint-Version: 2026-09-07" \
  -H "Authorization: Bearer YOUR_API_KEY"
JSON
{
  "data": {
    "buyer_actions": [
      {
        "due_at": "2026-03-31T23:59:59Z",
        "is_available": true,
        "is_required": true,
        "kind": "pay"
      }
    ],
    "cc_emails": [
      "owner@example.com"
    ],
    "collection_block_status": "",
    "created_at": "2026-03-21T15:03:00Z",
    "credit_money": {
      "amount": 0,
      "currency": "USD"
    },
    "currently_due_money": {
      "amount": 15000,
      "currency": "USD"
    },
    "customer_id": "cus_01J00000000000000000000000",
    "due_at": "2026-03-31T23:59:59Z",
    "invoice_id": "inv_01J00000000000000000000000",
    "invoice_number": "1042",
    "is_overdue": false,
    "issued_at": "2026-03-21T15:04:05Z",
    "late_fees": null,
    "merchant_id": "mer_01J00000000000000000000000",
    "order_id": "ord_01J00000000000000000000000",
    "outstanding_money": {
      "amount": 15000,
      "currency": "USD"
    },
    "paid_money": {
      "amount": 0,
      "currency": "USD"
    },
    "recipient_email": "buyer@example.com",
    "reference": "PO-1042",
    "refund_status": "none",
    "refunded_money": {
      "amount": 0,
      "currency": "USD"
    },
    "snapshot": {
      "buyer_tax_identity": null,
      "customer_display_name": "Avery Buyer",
      "customer_email": "buyer@example.com",
      "line_items": [
        {
          "base_subtotal_money": {
            "amount": 15000,
            "currency": "USD"
          },
          "discount_money": {
            "amount": 0,
            "currency": "USD"
          },
          "invoice_line_item_id": "",
          "modifier_total_money": {
            "amount": 0,
            "currency": "USD"
          },
          "name": "Consulting session",
          "quantity": 1,
          "subtotal_money": {
            "amount": 15000,
            "currency": "USD"
          },
          "tax_money": {
            "amount": 0,
            "currency": "USD"
          },
          "total_money": {
            "amount": 15000,
            "currency": "USD"
          },
          "unit_price_money": {
            "amount": 15000,
            "currency": "USD"
          }
        }
      ],
      "memo": "Payment due within 10 days.",
      "merchant_display_name": "Flint Services",
      "pricing_amounts": {
        "charge_money": {
          "amount": 0,
          "currency": "USD"
        },
        "discount_money": {
          "amount": 0,
          "currency": "USD"
        },
        "requested_tip_money": {
          "amount": 0,
          "currency": "USD"
        },
        "subtotal_money": {
          "amount": 15000,
          "currency": "USD"
        },
        "tax_money": {
          "amount": 0,
          "currency": "USD"
        },
        "total_money": {
          "amount": 15000,
          "currency": "USD"
        }
      },
      "seller_tax_identity": null
    },
    "status": "open",
    "updated_at": "2026-03-21T15:04:05Z",
    "version": 1
  },
  "request_id": "bce56cba-0827-44aa-bb56-4f200ba15ee6"
}

Create an invoice checkout session for the current buyer#

POST/v1/me/invoices/{invoice_id}/checkout-sessionIdempotent

Requires CustomerSessionBearer or InvoiceAccessTokenBearer

Uses the customer identity fixed by the customer session. The request cannot select a customer_id. Returns the current open invoice checkout session and aligned card attempt when they still match the invoice balance and collection run. A newly created session and attempt share the fixed expiration of the active invoice public-link generation. Unexpired sessions are reused regardless of remaining lifetime; active payment work returns a resolving conflict instead of creating competing collection. When the invoice's order has items to deliver, a new session offers the delivery methods in settings.checkout.default_delivery_method_ids, and the request fails with a validation error when those methods cannot deliver every item. return_url sets where the checkout sends the buyer after paying. A reused session takes a new return_url only until a payment starts on it, and keeps the one it has after that.

Path parameters

invoice_idstringRequired

Flint invoice ID.

Request body

invoice_schedule_entry_idstring
page_originstring

Origin of the page where you render this embedded checkout, such as https://shop.example.com. Only this origin can show the checkout's gift card challenge and receive its result. It does not let the browser call the Flint API. Accepted only when surface is embedded. Use HTTPS and a lowercase DNS hostname. Do not include a path, query, fragment, or default port. In test mode, localhost, names ending in .localhost, and 127.0.0.1 also work over HTTP or HTTPS.

redirectsobject

Buyer destinations. Embedded checkout requires success_redirect_url when a redirect payment option is offered. Keep return_url and redirects.success_redirect_url consistent when sending both.

return_urlstring

Where the checkout sends the buyer after paying, such as the invoice's page in the customer account. It must be an HTTPS address of the merchant's customer account: /{merchant_id} on Flint's account host, the merchant's active custom account domain, or the host of customer_account.merchant_account_url when the merchant hosts the account. HTTP is accepted only for localhost in test mode. Anything else fails with INVALID_RETURN_URL.

surfaceenum

Defaults to hosted. The same surface reuses the open checkout. A different surface replaces it only while no payment is in progress; otherwise the request returns CHECKOUT_SURFACE_CHANGE_NOT_ALLOWED.

  • hosted
  • embedded

Response · 200

dataobjectRequired
metaobject
request_idstring
curl -X POST https://api.withflintpay.com/v1/me/invoices/inv_01J00000000000000000000000/checkout-session \
  -H "Flint-Version: 2026-09-07" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: a-unique-key" \
  -d '{
    "invoice_schedule_entry_id": "",
    "page_origin": "",
    "redirects": {
      "cancel_redirect_url": "",
      "success_redirect_url": ""
    },
    "return_url": "",
    "surface": "hosted"
  }'

List credit notes for one of the current buyer's invoices#

GET/v1/me/invoices/{invoice_id}/credit-notes

Requires CustomerSessionBearer or InvoiceAccessTokenBearer

Uses the customer identity fixed by the customer session. The request cannot select a customer_id. Returns credit notes for the authenticated merchant, newest first. Filter by invoice_id to see everything credited against one invoice.

Path parameters

invoice_idstringRequired

Flint invoice ID.

Query parameters

page_sizeinteger

Page size, default 20, max 100.

page_tokenstring

Page token.

Response · 200

dataarray of objectRequired
metaobject
next_page_tokenstring
request_idstring
curl https://api.withflintpay.com/v1/me/invoices/inv_01J00000000000000000000000/credit-notes \
  -H "Flint-Version: 2026-09-07" \
  -H "Authorization: Bearer YOUR_API_KEY"

Get a credit note for one of the current buyer's invoices#

GET/v1/me/invoices/{invoice_id}/credit-notes/{credit_note_id}

Requires CustomerSessionBearer or InvoiceAccessTokenBearer

Uses the customer identity fixed by the customer session. The request cannot select a customer_id. Returns one credit note with its lines, total, and the credit still available to allocate.

Path parameters

invoice_idstringRequired

Flint invoice ID.

credit_note_idstringRequired

Flint credit note ID.

Response · 200

dataobjectRequired

The buyer-visible view of a credit note. Drafts are never returned, and how much credit is left to allocate is omitted.

metaobject
request_idstring
curl https://api.withflintpay.com/v1/me/invoices/inv_01J00000000000000000000000/credit-notes/{credit_note_id} \
  -H "Flint-Version: 2026-09-07" \
  -H "Authorization: Bearer YOUR_API_KEY"

Download a credit note for one of the current buyer's invoices#

GET/v1/me/invoices/{invoice_id}/credit-notes/{credit_note_id}/pdf

Requires CustomerSessionBearer or InvoiceAccessTokenBearer

Uses the customer identity fixed by the customer session. The request cannot select a customer_id. Returns the credit note document as application/pdf rather than a JSON envelope. The PDF exists from issue onward and carries your branding, the credited lines, and the invoice it corrects.

Path parameters

invoice_idstringRequired

Flint invoice ID.

credit_note_idstringRequired

Flint credit note ID.

curl https://api.withflintpay.com/v1/me/invoices/inv_01J00000000000000000000000/credit-notes/{credit_note_id}/pdf \
  -H "Flint-Version: 2026-09-07" \
  -H "Authorization: Bearer YOUR_API_KEY"

Download one of the current buyer's invoices#

GET/v1/me/invoices/{invoice_id}/pdf

Requires CustomerSessionBearer or InvoiceAccessTokenBearer

Uses the customer identity fixed by the customer session. The request cannot select a customer_id. Downloads the merchant-authenticated PDF artifact generated from the invoice snapshot.

Path parameters

invoice_idstringRequired

Flint invoice ID.

curl https://api.withflintpay.com/v1/me/invoices/inv_01J00000000000000000000000/pdf \
  -H "Flint-Version: 2026-09-07" \
  -H "Authorization: Bearer YOUR_API_KEY"

List the current buyer's orders#

GET/v1/me/orders

Requires CustomerSessionBearer

Uses the customer identity fixed by the customer session. The request cannot select a customer_id. Returns a paginated list of orders for the authenticated merchant.

Query parameters

page_sizeinteger

Page size, default 20, max 100.

page_tokenstring

Cursor returned by the previous list response.

statusenum

Filter by workflow status.

  • open
  • closed
payment_statusany of

Filter by settled collection status. Repeat the parameter or pass comma-separated values to match any of several statuses.

refund_statusarray of enum

Filter by refund progress. Repeat the parameter to OR multiple statuses.

  • none
  • partially_refunded
  • refunded
fulfillment_statusarray of enum

Filter by aggregate order fulfillment status. Repeat the parameter to OR multiple statuses.

  • not_fulfilled
  • partially_fulfilled
  • fulfilled
  • canceled
order_numberstring

Filter by merchant-visible order number.

external_reference_idstring

Exact-match filter on the caller-owned external reference ID.

originenum

Filter by order origin.

  • virtual_terminal
  • payment_link
  • checkout
  • api
  • subscription
querystring

Search across order_id, order number, external_reference_id, fulfillment external_reference_id, buyer email, notes, and line item names. Text fields match any part of the value, and %, _ and \ are ordinary characters, not wildcards. IDs match from the start and need the type prefix, such as ord_01.

subscription_idstring

Filter by subscription ID.

subscription_delivery_changedboolean

Filter by whether the subscriber changed delivery after this order was paid.

return_idstring

Filter by the Return that created a replacement order.

return_resolution_idstring

Filter by the ReturnResolution that created a replacement order.

min_amountinteger

Inclusive lower bound on the order total in minor units. Requires currency.

max_amountinteger

Inclusive upper bound on the order total in minor units. Requires currency.

currencystring

ISO 4217 currency for min_amount and max_amount.

sort_byenum

Sort field.

  • created_at
  • updated_at
  • outstanding_money
  • total
sort_directionenum

Sort direction.

  • asc
  • desc
created_afterstring

RFC3339 lower bound for created_at.

created_beforestring

RFC3339 upper bound for created_at.

updated_afterstring

RFC3339 lower bound for updated_at.

updated_beforestring

RFC3339 upper bound for updated_at.

Response · 200

dataarray of objectRequired
metaobject
next_page_tokenstring
request_idstring
curl https://api.withflintpay.com/v1/me/orders \
  -H "Flint-Version: 2026-09-07" \
  -H "Authorization: Bearer YOUR_API_KEY"
JSON
{
  "data": [
    {
      "buyer_actions": [
        {
          "is_available": false,
          "is_required": false,
          "kind": "resend_receipt",
          "unavailable_reason": "not_in_state"
        }
      ],
      "created_at": "2026-03-17T14:30:00Z",
      "customer_id": "cus_123",
      "line_items": [
        {
          "base_subtotal_money": {
            "amount": 5000,
            "currency": "USD"
          },
          "discount_money": {
            "amount": 0,
            "currency": "USD"
          },
          "inventory_snapshot": null,
          "metadata": {
            "ticket_type": "ga"
          },
          "modifier_total_money": {
            "amount": 0,
            "currency": "USD"
          },
          "name": "General Admission",
          "order_line_item_id": "li_123",
          "quantity": 2,
          "refunded_money": {
            "amount": 0,
            "currency": "USD"
          },
          "refunded_quantity": 0,
          "subtotal_money": {
            "amount": 5000,
            "currency": "USD"
          },
          "tax_money": {
            "amount": 0,
            "currency": "USD"
          },
          "total_money": {
            "amount": 5000,
            "currency": "USD"
          },
          "unit_price_money": {
            "amount": 2500,
            "currency": "USD"
          },
          "version": 1
        }
      ],
      "merchant_id": "mer_123",
      "metadata": {
        "event_id": "evt_123"
      },
      "order_id": "ord_123",
      "order_number": "1001",
      "origin": "api",
      "payment_status": "unpaid",
      "pricing_amounts": {
        "charge_money": {
          "amount": 0,
          "currency": "USD"
        },
        "discount_money": {
          "amount": 0,
          "currency": "USD"
        },
        "requested_tip_money": {
          "amount": 0,
          "currency": "USD"
        },
        "subtotal_money": {
          "amount": 5000,
          "currency": "USD"
        },
        "tax_money": {
          "amount": 0,
          "currency": "USD"
        },
        "total_money": {
          "amount": 5000,
          "currency": "USD"
        }
      },
      "refund_status": "none",
      "settlement_amounts": {
        "balance_money": {
          "amount": 5000,
          "currency": "USD"
        },
        "credit_money": {
          "amount": 0,
          "currency": "USD"
        },
        "net_collected_money": {
          "amount": 0,
          "currency": "USD"
        },
        "outstanding_money": {
          "amount": 5000,
          "currency": "USD"
        },
        "paid_money": {
          "amount": 0,
          "currency": "USD"
        },
        "refunded_money": {
          "amount": 0,
          "currency": "USD"
        },
        "settled_tip_money": {
          "amount": 0,
          "currency": "USD"
        }
      },
      "status": "open",
      "tax": {
        "enabled": false,
        "mode": "automatic",
        "status": "not_required",
        "taxability_reason": "tax_disabled"
      },
      "updated_at": "2026-03-17T14:30:00Z"
    }
  ],
  "next_page_token": "example",
  "request_id": "bce56cba-0827-44aa-bb56-4f200ba15ee6"
}

Get one of the current buyer's orders#

GET/v1/me/orders/{order_id}

Requires CustomerSessionBearer

Uses the customer identity fixed by the customer session. The request cannot select a customer_id. Returns a single order by ID.

Path parameters

order_idstringRequired

Flint order ID.

Response · 200

dataobjectRequired
metaobject
request_idstring
curl https://api.withflintpay.com/v1/me/orders/ord_123 \
  -H "Flint-Version: 2026-09-07" \
  -H "Authorization: Bearer YOUR_API_KEY"
JSON
{
  "data": {
    "buyer_actions": [
      {
        "is_available": false,
        "is_required": false,
        "kind": "start_return",
        "unavailable_reason": "not_in_state"
      },
      {
        "is_available": false,
        "is_required": false,
        "kind": "resend_receipt",
        "unavailable_reason": "not_in_state"
      }
    ],
    "created_at": "2026-03-17T14:30:00Z",
    "customer_id": "cus_123",
    "line_items": [
      {
        "base_subtotal_money": {
          "amount": 5000,
          "currency": "USD"
        },
        "discount_money": {
          "amount": 0,
          "currency": "USD"
        },
        "inventory_snapshot": null,
        "metadata": {
          "ticket_type": "ga"
        },
        "modifier_total_money": {
          "amount": 0,
          "currency": "USD"
        },
        "name": "General Admission",
        "order_line_item_id": "li_123",
        "quantity": 2,
        "refunded_money": {
          "amount": 0,
          "currency": "USD"
        },
        "refunded_quantity": 0,
        "subtotal_money": {
          "amount": 5000,
          "currency": "USD"
        },
        "tax_money": {
          "amount": 0,
          "currency": "USD"
        },
        "total_money": {
          "amount": 5000,
          "currency": "USD"
        },
        "unit_price_money": {
          "amount": 2500,
          "currency": "USD"
        },
        "version": 1
      }
    ],
    "merchant_id": "mer_123",
    "metadata": {
      "event_id": "evt_123"
    },
    "order_id": "ord_123",
    "order_number": "1001",
    "origin": "api",
    "payment_status": "unpaid",
    "pricing_amounts": {
      "charge_money": {
        "amount": 0,
        "currency": "USD"
      },
      "discount_money": {
        "amount": 0,
        "currency": "USD"
      },
      "requested_tip_money": {
        "amount": 0,
        "currency": "USD"
      },
      "subtotal_money": {
        "amount": 5000,
        "currency": "USD"
      },
      "tax_money": {
        "amount": 0,
        "currency": "USD"
      },
      "total_money": {
        "amount": 5000,
        "currency": "USD"
      }
    },
    "refund_status": "none",
    "settlement_amounts": {
      "balance_money": {
        "amount": 5000,
        "currency": "USD"
      },
      "credit_money": {
        "amount": 0,
        "currency": "USD"
      },
      "net_collected_money": {
        "amount": 0,
        "currency": "USD"
      },
      "outstanding_money": {
        "amount": 5000,
        "currency": "USD"
      },
      "paid_money": {
        "amount": 0,
        "currency": "USD"
      },
      "refunded_money": {
        "amount": 0,
        "currency": "USD"
      },
      "settled_tip_money": {
        "amount": 0,
        "currency": "USD"
      }
    },
    "status": "open",
    "tax": {
      "enabled": false,
      "mode": "automatic",
      "status": "not_required",
      "taxability_reason": "tax_disabled"
    },
    "updated_at": "2026-03-17T14:30:00Z"
  },
  "request_id": "bce56cba-0827-44aa-bb56-4f200ba15ee6"
}

List activity for one of the current buyer's orders#

GET/v1/me/orders/{order_id}/activities

Requires CustomerSessionBearer

Uses the customer identity fixed by the customer session. The request cannot select a customer_id. Returns a read-only, human-readable history log for an order. Use it to render timelines and debug what happened, not as a source of truth, ledger, or webhook replacement. Read the owning resource for authoritative state: the order for balances and status, the payment for payment state, the refund for refund outcomes, and the checkout session for checkout state. Do not sum balance_delta_money to compute an order balance. Informational rows such as payment_failed, refund_failed, and checkout_session_expired have a zero balance delta. The default order is newest first. Use sort_direction=asc for chronological timeline rendering. A typical chronological log might show created, payment_failed, payment, refund, then refund_failed; each row gives one reference to click through for the authoritative resource.

Path parameters

order_idstringRequired

Flint order ID.

Query parameters

page_sizeinteger

Page size, default 20, max 100.

page_tokenstring

Cursor returned by the previous list response.

sort_directionenum

Sort direction.

  • asc
  • desc
typearray of enum

Filter by activity type. Repeat the parameter or pass comma-separated values to OR multiple types.

  • created
  • line_item_added
  • line_item_updated
  • line_item_removed
  • discount_applied
  • discount_removed
  • tax_updated
  • requested_tip_added
  • requested_tip_updated
  • requested_tip_removed
  • charge_added
  • charge_updated
  • charge_removed
  • charge_fulfillment_updated
  • order_updated
  • adjustment
  • closed
  • payment
  • payment_failed
  • refund
  • refund_failed
  • checkout_session_created
  • checkout_session_expired
  • checkout_session_invalidated
  • fulfillment_created
  • fulfillment_updated
  • fulfillment_state_changed

Response · 200

dataarray of objectRequired
metaobject
next_page_tokenstring
request_idstring
curl https://api.withflintpay.com/v1/me/orders/ord_123/activities \
  -H "Flint-Version: 2026-09-07" \
  -H "Authorization: Bearer YOUR_API_KEY"
JSON
{
  "data": [
    {
      "activity_type": "payment",
      "balance_delta_money": {
        "amount": -5000,
        "currency": "USD"
      },
      "created_at": "2026-03-17T14:35:00Z",
      "description": "Payment received",
      "order_activity_id": "act_123",
      "payment_intent_id": "pi_123",
      "running_balance_money": {
        "amount": 0,
        "currency": "USD"
      }
    }
  ],
  "next_page_token": "example",
  "request_id": "bce56cba-0827-44aa-bb56-4f200ba15ee6"
}
curl -X POST https://api.withflintpay.com/v1/me/orders/ord_123/send-receipt \
  -H "Flint-Version: 2026-09-07" \
  -H "Authorization: Bearer YOUR_API_KEY"

List the current buyer's packages#

GET/v1/me/packages

Requires CustomerSessionBearer

Uses the customer identity fixed by the customer session. The request cannot select a customer_id. Lists package records, newest created first.

Query parameters

shipment_idstring

Optional shipment ID filter.

fulfillment_idstring

Optional fulfillment ID filter.

order_idstring

Optional order ID filter.

page_sizeinteger

Page size, default 20, max 100.

page_tokenstring

Cursor returned by the previous list response.

external_systemstring

Filter by external system identifier.

external_reference_idstring

Exact-match filter on the caller-owned external reference ID.

querystring

Search across package ID, external reference ID, and tracking number. Text fields match any part of the value, and %, _ and \ are ordinary characters, not wildcards. IDs match from the start and need the type prefix, such as ord_01.

Response · 200

dataarray of objectRequired
metaobject
next_page_tokenstring
request_idstring
curl https://api.withflintpay.com/v1/me/packages \
  -H "Flint-Version: 2026-09-07" \
  -H "Authorization: Bearer YOUR_API_KEY"
JSON
{
  "data": [
    {
      "carrier": "ups",
      "created_at": "2026-05-13T16:01:00Z",
      "dimensions": {
        "height": 4,
        "length": 8,
        "unit": "in",
        "width": 6
      },
      "external_reference_id": "pkg_789",
      "external_system": "merchant_wms",
      "fulfillment_id": "ful_01ABCDEFGHIJKLMNOPQRSTUVWX",
      "metadata": {
        "box": "small"
      },
      "order_id": "ord_01ABCDEFGHIJKLMNOPQRSTUVWX",
      "package_id": "pkg_01ABCDEFGHIJKLMNOPQRSTUVWX",
      "service_code": "ground",
      "shipment_id": "shp_01ABCDEFGHIJKLMNOPQRSTUVWX",
      "status": "created",
      "supported_actions": [
        "mark_packed",
        "mark_shipped",
        "mark_in_transit",
        "mark_out_for_delivery",
        "mark_delivered",
        "mark_delivery_attempted",
        "mark_exception"
      ],
      "tracking_number": "1Z999AA10123456784",
      "tracking_url": "https://track.example.com/1Z999AA10123456784",
      "updated_at": "2026-05-13T16:01:00Z",
      "version": 1,
      "weight": {
        "unit": "pound",
        "value": 1.2
      }
    }
  ],
  "next_page_token": "example",
  "request_id": "bce56cba-0827-44aa-bb56-4f200ba15ee6"
}

List the current buyer's payment methods#

GET/v1/me/payment-methods

Requires CustomerSessionBearer

Uses the customer identity fixed by the customer session. The request cannot select a customer_id. Returns saved payment methods for the merchant, optionally filtered to a customer. By default, only active payment methods are returned. Filter by usage off_session to list the payment methods a subscription, automatic invoice, or default payment method can use.

Query parameters

page_sizeinteger

Page size, default 20, max 100.

page_tokenstring

Cursor returned by the previous list response.

typeenum

Filter by payment method type.

  • card
statusenum

Filter by payment method status.

  • active
  • pending
  • expired
  • removed
  • failed
usageenum

Filter by usage: off_session payment methods can be charged without the buyer; on_session ones were saved by buyers for faster checkout.

  • on_session
  • off_session

Response · 200

dataarray of objectRequired
metaobject
next_page_tokenstring
request_idstring
curl https://api.withflintpay.com/v1/me/payment-methods \
  -H "Flint-Version: 2026-09-07" \
  -H "Authorization: Bearer YOUR_API_KEY"
JSON
{
  "data": [
    {
      "card": {
        "brand": "visa",
        "exp_month": 12,
        "exp_year": 2030,
        "last4": "4242"
      },
      "created_at": "2026-03-17T14:30:00Z",
      "customer_id": "cus_123",
      "merchant_id": "mer_123",
      "payment_method_id": "pm_123",
      "status": "active",
      "type": "card",
      "updated_at": "2026-03-17T14:30:00Z",
      "usage": ""
    }
  ],
  "next_page_token": "example",
  "request_id": "bce56cba-0827-44aa-bb56-4f200ba15ee6"
}

Add a payment method for the current buyer#

POST/v1/me/payment-methodsIdempotent

Requires CustomerSessionBearer

Uses the customer identity fixed by the customer session. The request cannot select a customer_id. Initiates saving a payment method and returns the client setup payload needed to complete setup on the frontend.

Request body

typeenum
  • card

Response · 201

dataobjectRequired
metaobject
request_idstring
curl -X POST https://api.withflintpay.com/v1/me/payment-methods \
  -H "Flint-Version: 2026-09-07" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: a-unique-key" \
  -d '{
    "type": "card"
  }'

Get one of the current buyer's payment methods#

GET/v1/me/payment-methods/{payment_method_id}

Requires CustomerSessionBearer

Uses the customer identity fixed by the customer session. The request cannot select a customer_id. Returns a single payment method by ID.

Path parameters

payment_method_idstringRequired

Flint payment method ID.

Response · 200

dataobjectRequired
metaobject
request_idstring
curl https://api.withflintpay.com/v1/me/payment-methods/pm_01JAAAAAAAAAAAAAAAAAAAAAAA \
  -H "Flint-Version: 2026-09-07" \
  -H "Authorization: Bearer YOUR_API_KEY"
JSON
{
  "data": {
    "card": {
      "brand": "visa",
      "exp_month": 12,
      "exp_year": 2030,
      "last4": "4242"
    },
    "created_at": "2026-03-17T14:30:00Z",
    "customer_id": "cus_123",
    "merchant_id": "mer_123",
    "payment_method_id": "pm_123",
    "status": "active",
    "type": "card",
    "updated_at": "2026-03-17T14:30:00Z",
    "usage": ""
  },
  "request_id": "bce56cba-0827-44aa-bb56-4f200ba15ee6"
}

Remove one of the current buyer's payment methods#

DELETE/v1/me/payment-methods/{payment_method_id}Idempotent

Requires CustomerSessionBearer

Uses the customer identity fixed by the customer session. The request cannot select a customer_id. Soft-removes a saved payment method so it can no longer be used for future payments.

Path parameters

payment_method_idstringRequired

Flint payment method ID.

Response · 200

Same response as Delete one of the current buyer's addresses.

curl -X DELETE https://api.withflintpay.com/v1/me/payment-methods/pm_01JAAAAAAAAAAAAAAAAAAAAAAA \
  -H "Flint-Version: 2026-09-07" \
  -H "Authorization: Bearer YOUR_API_KEY"

Set the current buyer's default payment method#

POST/v1/me/payment-methods/{payment_method_id}/set-defaultIdempotent

Requires CustomerSessionBearer

Uses the customer identity fixed by the customer session. The request cannot select a customer_id. Sets the default payment method for the payment method's owning customer. Subscriptions and automatic invoices charge the default without the buyer, so the payment method's usage must be off_session.

Path parameters

payment_method_idstringRequired

Flint payment method ID.

Response · 200

Same response as Get one of the current buyer's payment methods.

curl -X POST https://api.withflintpay.com/v1/me/payment-methods/pm_01JAAAAAAAAAAAAAAAAAAAAAAA/set-default \
  -H "Flint-Version: 2026-09-07" \
  -H "Authorization: Bearer YOUR_API_KEY"

List the current buyer's payments#

GET/v1/me/payments

Requires CustomerSessionBearer

Uses the customer identity fixed by the customer session. The request cannot select a customer_id. Returns a paginated list of payment intents for the authenticated merchant.

Query parameters

page_sizeinteger

Page size, default 20, max 100.

page_tokenstring

Cursor returned by the previous list response.

order_idstring

Filter by order ID.

invoice_idstring

Filter by invoice ID.

statusenum

Filter by payment intent status.

  • requires_payment_method
  • requires_confirmation
  • requires_action
  • processing
  • requires_capture
  • canceled
  • succeeded
  • expired
originenum

Filter by payment origin.

  • virtual_terminal
  • payment_link
  • checkout
  • api
  • subscription
risk_levelarray of enum

Filter by the latest completed risk assessment. Repeat or comma-separate values.

  • normal
  • elevated
  • highest
  • not_assessed
payment_flowarray of enum

Filter by immutable payment flow. Repeat or comma-separate values.

  • checkout
  • payment_link
  • invoice
  • subscription_initial
  • subscription_renewal
  • virtual_terminal
  • api
external_reference_idstring

Exact-match filter on the caller-owned external reference ID.

return_idstring

Filter by linked Return ID.

return_resolution_idstring

Filter by linked ReturnResolution ID.

querystring

Search across payment_intent_id, external_reference_id, and receipt_email. Text fields match any part of the value, and %, _ and \ are ordinary characters, not wildcards. IDs match from the start and need the type prefix, such as ord_01.

min_amountinteger

Inclusive lower bound in minor units. Requires currency.

max_amountinteger

Inclusive upper bound in minor units. Requires currency.

currencystring

ISO 4217 currency for min_amount and max_amount.

refund_statusarray of enum

Exact match on refund_status. Repeat keys or comma-separate values to match any selected status. Combined with dispute_status, both filters must match.

  • none
  • partially_refunded
  • refunded
dispute_statusarray of enum

Exact match on dispute_status. Repeat keys or comma-separate values to match any selected status. Combined with refund_status, both filters must match.

  • none
  • warning_needs_response
  • warning_under_review
  • warning_closed
  • needs_response
  • under_review
  • won
  • lost
  • prevented
sort_byenum

Sort field.

  • created_at
  • updated_at
  • amount
sort_directionenum

Sort direction.

  • asc
  • desc
created_afterstring

RFC3339 lower bound for created_at.

created_beforestring

RFC3339 upper bound for created_at.

updated_afterstring

RFC3339 lower bound for updated_at.

updated_beforestring

RFC3339 upper bound for updated_at.

Response · 200

dataarray of objectRequired
metaobject
next_page_tokenstring
request_idstring
curl https://api.withflintpay.com/v1/me/payments \
  -H "Flint-Version: 2026-09-07" \
  -H "Authorization: Bearer YOUR_API_KEY"
JSON
{
  "data": [
    {
      "amount_money": {
        "amount": 5000,
        "currency": "USD"
      },
      "capture_method": "automatic",
      "created_at": "2026-03-17T14:30:00Z",
      "customer_id": "cus_123",
      "external_reference_id": "cart_123",
      "last_payment_error": null,
      "merchant_id": "mer_123",
      "metadata": {
        "channel": "web"
      },
      "origin": "api",
      "payment_flow": "",
      "payment_intent_id": "pi_123",
      "payment_options": [
        "card",
        "apple_pay"
      ],
      "receipt_email": "buyer@example.com",
      "refund_status": "none",
      "risk": null,
      "settlement_status": "none",
      "status": "requires_confirmation",
      "support_reference": "",
      "updated_at": "2026-03-17T14:30:00Z"
    }
  ],
  "next_page_token": "example",
  "request_id": "bce56cba-0827-44aa-bb56-4f200ba15ee6"
}

List the current buyer's refunds#

GET/v1/me/refunds

Requires CustomerSessionBearer

Uses the customer identity fixed by the customer session. The request cannot select a customer_id. Returns a paginated list of refunds for the authenticated merchant.

Query parameters

page_sizeinteger

Page size, default 20, max 100.

page_tokenstring

Cursor returned by the previous list response.

order_idstring

Filter by order ID.

payment_intent_idstring

Filter by payment intent ID.

statusenum

Filter by refund status.

  • pending
  • in_transit
  • succeeded
  • failed
  • requires_action
  • canceled
  • partially_succeeded
reasonarray of enum

Repeat the parameter to filter by multiple refund reasons.

  • duplicate
  • fraudulent
  • requested_by_customer
  • defective_product
  • wrong_item_shipped
  • never_received
  • not_as_described
  • arrived_too_late
  • customer_changed_mind
  • better_price_found
  • accidental_order
  • other
refund_methodenum

Filter by refund method.

  • original_payment
min_amountinteger

Inclusive lower bound in minor units. Requires currency.

max_amountinteger

Inclusive upper bound in minor units. Requires currency.

currencystring

ISO 4217 currency for min_amount and max_amount.

external_reference_idstring

Exact-match filter on the caller-owned external reference ID.

return_idstring

Filter by linked Return ID.

return_resolution_idstring

Filter by linked ReturnResolution ID.

querystring

Search across refund_id, external_reference_id, and reason_message. Text fields match any part of the value, and %, _ and \ are ordinary characters, not wildcards. IDs match from the start and need the type prefix, such as ord_01.

sort_byenum

Sort field.

  • created_at
  • updated_at
  • amount
sort_directionenum

Sort direction.

  • asc
  • desc
created_afterstring

RFC3339 lower bound for created_at.

created_beforestring

RFC3339 upper bound for created_at.

updated_afterstring

RFC3339 lower bound for updated_at.

updated_beforestring

RFC3339 upper bound for updated_at.

Response · 200

dataarray of objectRequired
metaobject
next_page_tokenstring
request_idstring
curl https://api.withflintpay.com/v1/me/refunds \
  -H "Flint-Version: 2026-09-07" \
  -H "Authorization: Bearer YOUR_API_KEY"
JSON
{
  "data": [
    {
      "amount_money": {
        "amount": 1000,
        "currency": "USD"
      },
      "created_at": "2026-03-17T14:30:00Z",
      "customer_id": "cus_123",
      "merchant_id": "mer_123",
      "metadata": {
        "ticket_id": "tkt_123"
      },
      "order_id": "ord_123",
      "payment_intent_id": "pi_123",
      "payment_refunds": [
        {
          "amount_money": {
            "amount": 1000,
            "currency": "USD"
          },
          "payment_intent_id": "pi_123",
          "refunded_tip_money": {
            "amount": 100,
            "currency": "USD"
          },
          "status": "succeeded"
        }
      ],
      "reason": "requested_by_customer",
      "refund_id": "ref_123",
      "refund_method": "original_payment",
      "refunded_tip_money": {
        "amount": 100,
        "currency": "USD"
      },
      "status": "succeeded",
      "updated_at": "2026-03-17T14:30:00Z"
    }
  ],
  "next_page_token": "example",
  "request_id": "bce56cba-0827-44aa-bb56-4f200ba15ee6"
}

Preview Return eligibility or resolution amounts for the current buyer#

POST/v1/me/return-previews

Requires CustomerSessionBearer

Uses the customer identity fixed by the customer session. The request cannot select a customer_id. Preview return eligibility or resolution amounts without creating a Return or reserving quantity. Set mode to eligibility or resolution and send the matching input object.

Request body

Send exactly one of these

eligibilityobjectRequired
modeenumRequired
  • eligibility

Response · 200

dataone ofRequired
metaobject
request_idstring
curl -X POST https://api.withflintpay.com/v1/me/return-previews \
  -H "Flint-Version: 2026-09-07" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "mode": "eligibility"
  }'

Create a Return resolution checkout session for the current buyer#

POST/v1/me/return-resolutions/{return_resolution_id}/checkout-sessionIdempotent

Requires CustomerSessionBearer

Uses the customer identity fixed by the customer session. The request cannot select a customer_id. Create or reuse a hosted or embedded checkout session for the buyer's balance on a replacement order linked to this return resolution. Omit surface to use hosted. The same surface reuses the open session; changing surface replaces an idle session and returns CHECKOUT_SURFACE_CHANGE_NOT_ALLOWED while a payment is in progress. Use redirects to set where the buyer goes after paying or canceling. The return_url field is an alias for redirects.success_redirect_url and must be an address of the merchant's customer account. A reused session takes a new success destination only until a payment starts, then keeps its existing destination.

Path parameters

return_resolution_idstringRequired

Flint return resolution id.

Request body

page_originstring

Origin of the page where you render this embedded checkout, such as https://shop.example.com. Only this origin can show the checkout's gift card challenge and receive its result. It does not let the browser call the Flint API. Accepted only when surface is embedded. Use HTTPS and a lowercase DNS hostname. Do not include a path, query, fragment, or default port. In test mode, localhost, names ending in .localhost, and 127.0.0.1 also work over HTTP or HTTPS.

redirectsobject

Buyer destinations. Embedded checkout requires success_redirect_url when a redirect payment option is offered. Keep return_url and redirects.success_redirect_url consistent when sending both.

return_urlstring

Where the checkout sends the buyer after paying, such as the Return's page in the customer account. It must be an HTTPS address of the merchant's customer account: /{merchant_id} on Flint's account host, the merchant's active custom account domain, or the host of customer_account.merchant_account_url when the merchant hosts the account. HTTP is accepted only for localhost in test mode. Anything else fails with INVALID_RETURN_URL.

surfaceenum

Defaults to hosted. The same surface reuses the open checkout. A different surface replaces it only while no payment is in progress; otherwise the request returns CHECKOUT_SURFACE_CHANGE_NOT_ALLOWED.

  • hosted
  • embedded

Response · 201

dataobjectRequired

The checkout session and the credential to operate it. For hosted checkout, send the buyer to checkout_session.url. For embedded checkout, pass checkout_access.checkout_auth_token to your checkout client.

metaobject
request_idstring
curl -X POST https://api.withflintpay.com/v1/me/return-resolutions/{return_resolution_id}/checkout-session \
  -H "Flint-Version: 2026-09-07" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: a-unique-key" \
  -d '{
    "page_origin": "",
    "redirects": {
      "cancel_redirect_url": "",
      "success_redirect_url": ""
    },
    "return_url": "",
    "surface": "hosted"
  }'

List the current buyer's Returns#

GET/v1/me/returns

Requires CustomerSessionBearer

Uses the customer identity fixed by the customer session. The request cannot select a customer_id. List Returns for the merchant, filtered by order, customer, status, decision, merchandise, resolution, or creation window. Filter by idempotency_key to recover a create whose response never arrived.

Query parameters

created_afterstring

RFC3339 created after filter.

created_beforestring

RFC3339 created before filter.

decision_statusarray of enum

Filter by decision status.

  • pending
  • approved
  • partially_approved
  • declined
external_reference_idstring

Exact-match filter on the caller-owned external reference ID.

merchandise_statusarray of enum

Filter by merchandise status.

  • not_required
  • awaiting_handoff
  • in_transit
  • partially_received
  • received
  • inspection_required
  • partially_inspected
  • inspection_review_required
  • disposition_required
  • resolved
  • exception
order_idstring

Filter by order id.

page_sizeinteger

Page size. Defaults to 20 and is capped at 100.

page_tokenstring

Opaque cursor returned by the previous page.

querystring

Search by return ID, return number, external reference ID, the order's number, or the buyer's email.

receiving_location_idstring

Filter by receiving location id.

resolution_statusarray of enum

Filter by resolution status.

  • not_selected
  • pending
  • partially_fulfilled
  • requires_action
  • fulfilled
  • failed
resolution_typearray of enum

Filter by resolution type.

  • refund
  • exchange
  • replacement
  • no_monetary_action
  • correction
return_numberstring

Filter by return number.

return_reason_idstring

Filter by return reason id.

statusarray of enum

Filter by status.

  • requested
  • open
  • completed
  • declined
  • canceled
updated_afterstring

RFC3339 updated after filter.

updated_beforestring

RFC3339 updated before filter.

work_typearray of enum

Filter by work type. Matches only returns that are still requested or open.

  • decision
  • handoff
  • receipt
  • inspection
  • disposition
  • resolution
  • exception

Response · 200

dataarray of objectRequired
metaobject
next_page_tokenstring
request_idstring
curl https://api.withflintpay.com/v1/me/returns \
  -H "Flint-Version: 2026-09-07" \
  -H "Authorization: Bearer YOUR_API_KEY"

Create a Return for the current buyer#

POST/v1/me/returnsIdempotent

Requires CustomerSessionBearer

Uses the customer identity fixed by the customer session. The request cannot select a customer_id. Create a requested Return. When no policy matches, the Return remains available for merchant review rather than failing creation.

Request body

external_reference_idstring

Caller-owned identifier for this resource in an external system.

line_itemsarray of objectRequired
metadatamap of string
order_idstringRequired

Response · 201

dataobjectRequired
metaobject
request_idstring
curl -X POST https://api.withflintpay.com/v1/me/returns \
  -H "Flint-Version: 2026-09-07" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: a-unique-key" \
  -d '{
    "line_items": [
      {
        "order_line_item_id": "",
        "requested_quantity": 0,
        "return_reason_id": ""
      }
    ],
    "order_id": ""
  }'

Get one of the current buyer's Returns#

GET/v1/me/returns/{return_id}

Requires CustomerSessionBearer

Uses the customer identity fixed by the customer session. The request cannot select a customer_id. Retrieve a Return with its line items, policy evaluation, financial summary, and completion blockers. Supports expand for the order, the customer, and each line item's reason and fulfillment.

Path parameters

return_idstringRequired

Flint return id.

Response · 200

Same response as Create a Return for the current buyer.

curl https://api.withflintpay.com/v1/me/returns/ret_01K0P7W6A4N9F3J2T8Q5R1C6XM \
  -H "Flint-Version: 2026-09-07" \
  -H "Authorization: Bearer YOUR_API_KEY"
JSON
{
  "data": {
    "customer_id": "cus_01K1CUSTOMER00000000000",
    "line_items": [
      {
        "fulfillment_id": "ful_01K1FULFILLMENT000000000",
        "return_line_item_id": "retli_01K1LINE000000000000000",
        "return_reason_id": "rrsn_01K1REASON000000000000"
      }
    ],
    "order_id": "ord_01K1ORDER000000000000000",
    "return_id": "ret_01K1RETURN000000000000000"
  },
  "request_id": "req_123"
}

Cancel one of the current buyer's Returns#

POST/v1/me/returns/{return_id}/cancelIdempotent

Requires CustomerSessionBearer

Uses the customer identity fixed by the customer session. The request cannot select a customer_id. Cancel a Return before any merchandise or value work commits. Cancellation is refused once a receipt, inspection, disposition, or resolution exists.

Path parameters

return_idstringRequired

Flint return id.

Request body

expected_versioninteger
reasonenumRequired
  • buyer_request
  • merchant_request
  • duplicate
  • expired
  • created_in_error
  • other
reason_messagestring

Response · 200

Same response as Create a Return for the current buyer.

curl -X POST https://api.withflintpay.com/v1/me/returns/ret_01K0P7W6A4N9F3J2T8Q5R1C6XM/cancel \
  -H "Flint-Version: 2026-09-07" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: a-unique-key" \
  -d '{
    "reason": "buyer_request"
  }'

List the current buyer's shipments#

GET/v1/me/shipments

Requires CustomerSessionBearer

Uses the customer identity fixed by the customer session. The request cannot select a customer_id. Lists shipment execution records, newest created first.

Query parameters

order_idstring

Optional order ID filter.

fulfillment_idstring

Optional fulfillment ID filter.

page_sizeinteger

Page size, default 20, max 100.

page_tokenstring

Cursor returned by the previous list response.

external_systemstring

Filter by external system identifier.

external_reference_idstring

Exact-match filter on the caller-owned external reference ID.

querystring

Search across shipment ID, external reference ID, and tracking number. Text fields match any part of the value, and %, _ and \ are ordinary characters, not wildcards. IDs match from the start and need the type prefix, such as ord_01.

return_idstring

Filter by linked Return ID.

handed_off_afterstring

RFC3339 lower bound for handed_off_at.

handed_off_beforestring

RFC3339 upper bound for handed_off_at.

created_afterstring

RFC3339 lower bound for created_at.

created_beforestring

RFC3339 upper bound for created_at.

Response · 200

dataarray of objectRequired
metaobject
next_page_tokenstring
request_idstring
curl https://api.withflintpay.com/v1/me/shipments \
  -H "Flint-Version: 2026-09-07" \
  -H "Authorization: Bearer YOUR_API_KEY"
JSON
{
  "data": [
    {
      "created_at": "2026-05-13T15:59:00Z",
      "direction": "outbound",
      "external_reference_id": "ship_789",
      "external_system": "merchant_wms",
      "fulfillment_id": "ful_01ABCDEFGHIJKLMNOPQRSTUVWX",
      "metadata": {
        "warehouse": "east"
      },
      "order_id": "ord_01ABCDEFGHIJKLMNOPQRSTUVWX",
      "package_count": 1,
      "shipment_id": "shp_01ABCDEFGHIJKLMNOPQRSTUVWX",
      "shipped_at": "2026-05-13T16:10:00Z",
      "status": "shipped",
      "updated_at": "2026-05-13T16:10:01Z",
      "version": 4
    }
  ],
  "next_page_token": "example",
  "request_id": "bce56cba-0827-44aa-bb56-4f200ba15ee6"
}

List the current buyer's subscriptions#

GET/v1/me/subscriptions

Requires CustomerSessionBearer

Uses the customer identity fixed by the customer session. The request cannot select a customer_id. Returns a paginated list of subscriptions for the authenticated merchant. subscription_plan is always included without expand: the plan's current summary, or null when the subscription has no plan.

Query parameters

page_sizeinteger

Page size, default 20, max 100.

page_tokenstring

Cursor returned by the previous list response.

statusarray of enum

Filter by subscription status. Repeat the parameter or pass comma-separated values to match multiple statuses.

  • trialing
  • active
  • paused
  • past_due
  • canceled
  • incomplete
billing_schedule_ownerenum

Filter by the system that supplies billing dates.

  • flint
  • external
awaiting_billing_scheduleboolean

Filter external schedules by whether they need another billing date.

cancel_at_period_endboolean

When true, returns subscriptions scheduled to cancel at the end of the current period that are not yet canceled. When false, returns every other subscription.

delivery_method_idstring

Filter by the subscription's selected delivery method.

hold_reasonenum

Filter by the reason of the current delivery_hold. Does not match upcoming delivery issues.

  • method_unavailable
  • destination_not_served
  • rate_unavailable
subscription_offer_idstring

Filter by Flint subscription offer ID.

subscription_plan_idstring

Filter by Flint subscription plan ID.

sort_byenum

Sort field.

  • created_at
  • updated_at
  • next_billing_at
sort_directionenum

Sort direction.

  • asc
  • desc
created_afterstring

RFC3339 lower bound for created_at.

created_beforestring

RFC3339 upper bound for created_at.

updated_afterstring

RFC3339 lower bound for updated_at.

updated_beforestring

RFC3339 upper bound for updated_at.

next_billing_at_afterstring

RFC3339 lower bound for next_billing_at.

next_billing_at_beforestring

RFC3339 upper bound for next_billing_at.

needs_attentionboolean

True matches subscriptions with a delivery hold, an upcoming delivery hold, or a delivery-action-required pause, plus past_due, incomplete, or active subscriptions with next_billing_at more than 24 hours ago. False is the exact complement. Other filters still apply.

Response · 200

dataarray of objectRequired
metaobject
next_page_tokenstring
request_idstring
curl https://api.withflintpay.com/v1/me/subscriptions \
  -H "Flint-Version: 2026-09-07" \
  -H "Authorization: Bearer YOUR_API_KEY"
JSON
{
  "data": [
    {
      "billing_anchor_day": 15,
      "billing_interval": "monthly",
      "billing_interval_count": 1,
      "billing_schedule_owner": "flint",
      "buyer_actions": [
        {
          "is_available": true,
          "is_required": false,
          "kind": "cancel"
        },
        {
          "is_available": true,
          "is_required": false,
          "kind": "pause"
        },
        {
          "is_available": false,
          "is_required": false,
          "kind": "resume",
          "unavailable_reason": "not_in_state"
        },
        {
          "is_available": false,
          "is_required": false,
          "kind": "reactivate",
          "unavailable_reason": "not_in_state"
        },
        {
          "is_available": true,
          "is_required": false,
          "kind": "update_payment_method"
        },
        {
          "is_available": false,
          "is_required": false,
          "kind": "retry_payment",
          "unavailable_reason": "not_in_state"
        },
        {
          "is_available": false,
          "is_required": false,
          "kind": "update_delivery",
          "unavailable_reason": "not_in_state"
        },
        {
          "is_available": false,
          "is_required": false,
          "kind": "skip",
          "unavailable_reason": "not_in_state"
        },
        {
          "is_available": false,
          "is_required": false,
          "kind": "update_billing_interval",
          "unavailable_reason": "store_policy"
        },
        {
          "is_available": false,
          "is_required": false,
          "kind": "update_quantity",
          "unavailable_reason": "store_policy"
        },
        {
          "is_available": false,
          "is_required": false,
          "kind": "swap_items",
          "unavailable_reason": "store_policy"
        },
        {
          "is_available": false,
          "is_required": false,
          "kind": "renew",
          "unavailable_reason": "not_in_state"
        }
      ],
      "cancel_at_period_end": false,
      "completed_cycles": 0,
      "created_at": "2026-03-17T14:30:00Z",
      "current_period_end": "2026-04-17T14:30:00Z",
      "current_period_start": "2026-03-17T14:30:00Z",
      "customer_id": "cus_123",
      "merchant_id": "mer_123",
      "metadata": {
        "source": "api"
      },
      "next_billing_at": "2026-04-17T14:30:00Z",
      "next_retry_at": null,
      "payment_method_id": "pm_123",
      "quantity": 0,
      "recurring_amount_money": {
        "amount": 4500,
        "currency": "USD"
      },
      "status": "active",
      "subscription_id": "sub_123",
      "subscription_plan": {
        "billing_interval": "monthly",
        "billing_interval_count": 1,
        "created_at": "2026-03-17T14:30:00Z",
        "currency": "USD",
        "line_items": [
          {
            "name": "Membership",
            "quantity": 1,
            "subscription_plan_line_item_id": "spli_123",
            "swap_variant_ids": [],
            "unit_price_money": {
              "amount": 2500,
              "currency": "USD"
            }
          }
        ],
        "name": "Monthly Membership",
        "status": "active",
        "subscription_plan_id": "plan_123",
        "updated_at": "2026-03-17T14:30:00Z"
      },
      "subscription_plan_id": "plan_123",
      "updated_at": "2026-03-17T14:30:00Z",
      "version": 0
    }
  ],
  "next_page_token": "example",
  "request_id": "bce56cba-0827-44aa-bb56-4f200ba15ee6"
}

Get one of the current buyer's subscriptions#

GET/v1/me/subscriptions/{subscription_id}

Requires CustomerSessionBearer

Uses the customer identity fixed by the customer session. The request cannot select a customer_id. Returns a single subscription by ID. A paid checkout session's credential can retrieve only the subscription created by its source order. Checkout credentials cannot expand related resources. subscription_plan is always included without expand: the plan's current summary, or null when the subscription has no plan.

Path parameters

subscription_idstringRequired

Flint subscription ID.

Response · 200

dataobjectRequired
metaobject
request_idstring
curl https://api.withflintpay.com/v1/me/subscriptions/sub_123 \
  -H "Flint-Version: 2026-09-07" \
  -H "Authorization: Bearer YOUR_API_KEY"
JSON
{
  "data": {
    "billing_anchor_day": 15,
    "billing_interval": "monthly",
    "billing_interval_count": 1,
    "billing_schedule_owner": "flint",
    "buyer_actions": [
      {
        "is_available": true,
        "is_required": false,
        "kind": "cancel"
      },
      {
        "is_available": true,
        "is_required": false,
        "kind": "pause"
      },
      {
        "is_available": false,
        "is_required": false,
        "kind": "resume",
        "unavailable_reason": "not_in_state"
      },
      {
        "is_available": false,
        "is_required": false,
        "kind": "reactivate",
        "unavailable_reason": "not_in_state"
      },
      {
        "is_available": true,
        "is_required": false,
        "kind": "update_payment_method"
      },
      {
        "is_available": false,
        "is_required": false,
        "kind": "retry_payment",
        "unavailable_reason": "not_in_state"
      },
      {
        "is_available": false,
        "is_required": false,
        "kind": "update_delivery",
        "unavailable_reason": "not_in_state"
      },
      {
        "is_available": false,
        "is_required": false,
        "kind": "skip",
        "unavailable_reason": "not_in_state"
      },
      {
        "is_available": false,
        "is_required": false,
        "kind": "update_billing_interval",
        "unavailable_reason": "store_policy"
      },
      {
        "is_available": false,
        "is_required": false,
        "kind": "update_quantity",
        "unavailable_reason": "store_policy"
      },
      {
        "is_available": false,
        "is_required": false,
        "kind": "swap_items",
        "unavailable_reason": "store_policy"
      },
      {
        "is_available": false,
        "is_required": false,
        "kind": "renew",
        "unavailable_reason": "not_in_state"
      }
    ],
    "cancel_at_period_end": false,
    "completed_cycles": 0,
    "created_at": "2026-03-17T14:30:00Z",
    "current_period_end": "2026-04-17T14:30:00Z",
    "current_period_start": "2026-03-17T14:30:00Z",
    "customer_id": "cus_123",
    "merchant_id": "mer_123",
    "metadata": {
      "source": "api"
    },
    "next_billing_at": "2026-04-17T14:30:00Z",
    "next_retry_at": null,
    "payment_method_id": "pm_123",
    "quantity": 0,
    "recurring_amount_money": {
      "amount": 4500,
      "currency": "USD"
    },
    "status": "active",
    "subscription_id": "sub_123",
    "subscription_plan": {
      "billing_interval": "monthly",
      "billing_interval_count": 1,
      "created_at": "2026-03-17T14:30:00Z",
      "currency": "USD",
      "line_items": [
        {
          "name": "Membership",
          "quantity": 1,
          "subscription_plan_line_item_id": "spli_123",
          "swap_variant_ids": [],
          "unit_price_money": {
            "amount": 2500,
            "currency": "USD"
          }
        }
      ],
      "name": "Monthly Membership",
      "status": "active",
      "subscription_plan_id": "plan_123",
      "updated_at": "2026-03-17T14:30:00Z"
    },
    "subscription_plan_id": "plan_123",
    "updated_at": "2026-03-17T14:30:00Z",
    "version": 0
  },
  "request_id": "bce56cba-0827-44aa-bb56-4f200ba15ee6"
}

Cancel one of the current buyer's subscriptions#

POST/v1/me/subscriptions/{subscription_id}/cancelIdempotent

Requires CustomerSessionBearer

Uses the customer identity fixed by the customer session. The request cannot select a customer_id. Cancels a subscription immediately or at period end, and records who asked, why, and when in cancellation_details. A buyer's cancellation follows the store's customer_account.buyer_capabilities.

Path parameters

subscription_idstringRequired

Flint subscription ID.

Request body

cancel_immediatelyboolean

When true, ends the subscription now instead of at the end of the billing period. A buyer, in Flint's buyer account or with a customer session, may send it only when the store's customer_account.buyer_capabilities.cancellation_timing is buyer_chooses; otherwise the request returns CANCEL_IMMEDIATELY_NOT_ALLOWED. A trialing, paused, or incomplete subscription, or one whose first paid period never started, ends now either way.

cancellation_commentstring

Free text about the cancellation, up to 500 characters after surrounding spaces are trimmed. Recorded in cancellation_details.comment, which only merchant credentials read.

cancellation_reason_codeenum

Optional. Why the subscription is being canceled. When the store lists customer_account.buyer_capabilities.cancellation_reasons, a reason a buyer sends must be one of them; merchant credentials may send any code. Recorded in cancellation_details.reason_code.

  • too_expensive
  • missing_features
  • switched_service
  • unused
  • customer_service
  • too_complex
  • low_quality
  • other

Response · 200

Same response as Get one of the current buyer's subscriptions.

curl -X POST https://api.withflintpay.com/v1/me/subscriptions/sub_123/cancel \
  -H "Flint-Version: 2026-09-07" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: a-unique-key" \
  -d '{
    "cancel_immediately": false,
    "cancellation_reason_code": "too_expensive"
  }'

Pause one of the current buyer's subscriptions#

POST/v1/me/subscriptions/{subscription_id}/pauseIdempotent

Requires CustomerSessionBearer

Uses the customer identity fixed by the customer session. The request cannot select a customer_id. Pauses a subscription immediately, optionally for a fixed number of billing cycles. A buyer's pause follows the store's customer_account.buyer_capabilities.

Path parameters

subscription_idstringRequired

Flint subscription ID.

Request body

pause_duration_cyclesinteger

Billing cycles to pause for. Omit it to pause until the subscription is resumed. When the store's customer_account.buyer_capabilities.pause.max_cycles is set, a buyer must send a value from 1 to that limit.

Response · 200

Same response as Get one of the current buyer's subscriptions.

curl -X POST https://api.withflintpay.com/v1/me/subscriptions/sub_123/pause \
  -H "Flint-Version: 2026-09-07" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: a-unique-key" \
  -d '{
    "pause_duration_cycles": 2
  }'

Change the payment method for one of the current buyer's subscriptions#

POST/v1/me/subscriptions/{subscription_id}/payment-methodIdempotent

Requires CustomerSessionBearer

Uses the customer identity fixed by the customer session. The request cannot select a customer_id. Changes the subscription to an active payment method owned by the same customer. The payment method's usage must be off_session.

Path parameters

subscription_idstringRequired

Flint subscription ID.

Request body

payment_method_idstringRequired

Response · 200

Same response as Get one of the current buyer's subscriptions.

curl -X POST https://api.withflintpay.com/v1/me/subscriptions/sub_123/payment-method \
  -H "Flint-Version: 2026-09-07" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: a-unique-key" \
  -d '{
    "payment_method_id": "pm_123"
  }'

Retry the failed payment on one of the current buyer's subscriptions#

POST/v1/me/subscriptions/{subscription_id}/payment-retriesIdempotent

Requires CustomerSessionBearer

Uses the customer identity fixed by the customer session. Starts one manual collection attempt on a past-due subscription. Send no body, or an empty object. Poll the returned retry for the outcome. Only one retry may be in progress at a time. Buyers can start a retry while fewer than 3 retries have been created for the current billing period, counting the store's retries too. subscription_card_update email-link sessions can start retries.

Path parameters

subscription_idstringRequired

Flint subscription ID.

Response · 201

dataobjectRequired

A retry of a past-due payment on the buyer's subscription. Includes, when available, the buyer's order and a failure they can act on. Omits the store's idempotency keys and payment attempt IDs.

metaobject
request_idstring
curl -X POST https://api.withflintpay.com/v1/me/subscriptions/sub_123/payment-retries \
  -H "Flint-Version: 2026-09-07" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: a-unique-key" \
  -d '{}'

Get a payment retry for one of the current buyer's subscriptions#

GET/v1/me/subscriptions/{subscription_id}/payment-retries/{subscription_payment_retry_id}

Requires CustomerSessionBearer

Uses the customer identity fixed by the customer session. Returns one durable manual subscription payment retry.

Path parameters

subscription_idstringRequired

Flint subscription ID.

subscription_payment_retry_idstringRequired

Flint subscription payment retry ID.

curl https://api.withflintpay.com/v1/me/subscriptions/sub_123/payment-retries/spr_123 \
  -H "Flint-Version: 2026-09-07" \
  -H "Authorization: Bearer YOUR_API_KEY"
JSON
{
  "data": {
    "created_at": "2026-04-17T14:31:00Z",
    "status": "pending",
    "subscription_id": "sub_123",
    "subscription_payment_retry_id": "spr_123",
    "updated_at": "2026-04-17T14:31:00Z"
  },
  "request_id": "bce56cba-0827-44aa-bb56-4f200ba15ee6"
}

Reactivate one of the current buyer's subscriptions#

POST/v1/me/subscriptions/{subscription_id}/reactivateIdempotent

Requires CustomerSessionBearer

Uses the customer identity fixed by the customer session. The request cannot select a customer_id. Clears a pending period-end cancellation without changing the current billing period.

Path parameters

subscription_idstringRequired

Flint subscription ID.

Response · 200

Same response as Get one of the current buyer's subscriptions.

curl -X POST https://api.withflintpay.com/v1/me/subscriptions/sub_123/reactivate \
  -H "Flint-Version: 2026-09-07" \
  -H "Authorization: Bearer YOUR_API_KEY"

Resume one of the current buyer's subscriptions#

POST/v1/me/subscriptions/{subscription_id}/resumeIdempotent

Requires CustomerSessionBearer

Uses the customer identity fixed by the customer session. The request cannot select a customer_id. Requests resumption of a paused subscription. Processing is asynchronous, so the response can still show paused. Retrieve the subscription to follow its status. Paid access resumes only when the subscription is active; overdue payment must be collected first.

Path parameters

subscription_idstringRequired

Flint subscription ID.

Response · 200

Same response as Get one of the current buyer's subscriptions.

curl -X POST https://api.withflintpay.com/v1/me/subscriptions/sub_123/resume \
  -H "Flint-Version: 2026-09-07" \
  -H "Authorization: Bearer YOUR_API_KEY"

Was this helpful?