Prep time: ~15 minutes
Prerequisites
MERCHANT_ID, your partner record isn’t payments-enabled. Ask via Support. See Payments for the credential model.
Tasting note -
customer_user_id is the paying member’s UUID. For a member acting on their own behalf, that’s the sub claim on their access token: the same value /users/me returns as id. You don’t read it from a /users/{id} path; resolve it from the token.confirm to succeed.
What you will use
POST /flynet/v1/payment_intentsPOST /flynet/v1/payment_intents/{id}/confirmGET /flynet/v1/payment_intents/{id}- Optionally:
POST /flynet/v1/payment_intents/{id}/refund
Step 1: Create the intent
id. You need it in the next step.
Tasting note - Use your own order ID as the idempotency key in production so network retries land on the same intent. Here we use a timestamp so re-running the recipe creates fresh intents. See Idempotency.
Step 2: Confirm
flynet@blackbird.xyz.
Step 3: Verify
status: "paid" and a populated paid_at.
Step 4: Refund
refunded. Refunds are full-only in v1.
What’s next
- Read Payments for the idempotency contract.
- Handle insufficient FLY in your UI before calling
confirm; seepayment0030. - List merchant intents with
GET /flynet/v1/payment_intents?payee_account_balance_id={uuid}.