---
title: "Create transaction pay mini app"
method: POST
path: "/v2/farcaster/frame/transaction/pay/"
tags: ["Agents"]
---

# Create transaction pay mini app

`POST /v2/farcaster/frame/transaction/pay/`

Creates a new transaction pay mini app that can be used to collect payments through a mini app

## Request body

- FramePayTransactionReqBody
  - `config` TransactionFrameConfig, required
    - `action` TransactionFrameAction — Action button for primary CTA on the transaction mini app
      - `button_color` string — Custom button color for action button
      - `text` string — Custom text for action button
      - `text_color` string — Custom text color for action button
    - `allowlist_fids` Fid[] — Optional list of FIDs that are allowed to use this transaction mini app
    - `line_items` TransactionFrameLineItem[], required — List of items included in the transaction
      - `description` string, required — Description of the line item in transaction
      - `image` string — Optional image URL for the line item in transaction
      - `name` string, required — Name of the line item in transaction
  - `idem` string — An Idempotency key is a unique identifier for the request. **Note:** 1) This is used to prevent duplicate requests. Use the same idem key on retry attempts. 2) This should be a unique identifier for each request. 3) Recommended format is a 16-character string generated by the developer at the time of making this request.
  - `transaction` object, required
    - `to` TransactionFrameDestination, required
      - `address` string, required — Ethereum address
      - `amount` number, required — Amount to send (must be greater than 0)
      - `network` 'ethereum' | 'optimism' | 'base' | 'arbitrum' | 'robinhood', required — A blockchain network e.g. "ethereum", "optimism", "base", "arbitrum", "robinhood"
      - `token_contract_address` string, required — Token contract address for the payment (e.g. 0x833589fcd6edb6e08f4c7c32d4f71b54bda02913 is USDC on Base)

## Response `200`

Success

- TransactionFrameResponse
  - `transaction_frame` TransactionFrame, required
    - `config` TransactionFrameConfig, required
      - `action` TransactionFrameAction — Action button for primary CTA on the transaction mini app
        - `button_color` string — Custom button color for action button
        - `text` string — Custom text for action button
        - `text_color` string — Custom text color for action button
      - `allowlist_fids` Fid[] — Optional list of FIDs that are allowed to use this transaction mini app
      - `line_items` TransactionFrameLineItem[], required — List of items included in the transaction
        - `description` string, required — Description of the line item in transaction
        - `image` string — Optional image URL for the line item in transaction
        - `name` string, required — Name of the line item in transaction
    - `id` string, required — Unique identifier for the transaction mini app
    - `status` 'created' | 'completed', required
    - `transaction` object, required
      - `to` TransactionFrameDestination, required
        - `address` string, required — Ethereum address
        - `amount` number, required — Amount to send (must be greater than 0)
        - `network` 'ethereum' | 'optimism' | 'base' | 'arbitrum' | 'robinhood', required — A blockchain network e.g. "ethereum", "optimism", "base", "arbitrum", "robinhood"
        - `token_contract_address` string, required — Token contract address for the payment (e.g. 0x833589fcd6edb6e08f4c7c32d4f71b54bda02913 is USDC on Base)
    - `type` 'pay', required — Type of transaction mini app
    - `url` string, uri, required — URL that can be used to access the transaction mini app

## Other responses

- `400` — Bad Request
- `401` — Unauthorized
- `500` — Server Error

---

[API](https://skmtc.dev/neynar/apis/neynar-api.md) · [All operations](https://skmtc.dev/neynar/apis/neynar-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/neynar/neynar-api/revisions/dbb91bfb0d1a/schema)
