ExchangeRebel Election Finance (FEC) API

The Election Finance (FEC) API from ExchangeRebel — 5 operation(s) for election finance (fec).

GitHub OpenAPI

Operations 5

GET /toll/politics/fec/committees Fetch FEC committee profiles by cycle #
GET /toll/politics/fec/committees/{id} Fetch one FEC committee profile + totals #
GET /toll/politics/fec/disbursements Fetch FEC Schedule B disbursements #
GET /toll/politics/fec/independent-expenditures Fetch FEC independent expenditures #
GET /toll/politics/fec/totals Fetch FEC cycle financial totals #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/exchangerebel-com:exchangerebel-com-election-finance-fec-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

exchangerebel-com-election-finance-fec-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: ExchangeRebel — pay-per-call APIs for AI agents (x402 on…
  version: 1.0.0
  contact:
    name: 'ExchangeRebel (operator: Rebel Data)'
    url: https://exchangerebel.com
    email: sound.money.investing@gmail.com
  x-guidance: 'All paid operations use x402 on Solana: call without payment to get a 402 challenge (SOL recipient + USDC token account + fresh memo), pay with the memo attached via the Solana Memo program, then retry with header X-Payment-Tx: <signature> and ?toll_memo=<memo>. Challenges are dual-version: the PAYMENT-REQUIRED header carries the x402 v2 PaymentRequired object and the response body carries the same challenge in x402 v1 form for compatibility. Free operations (security: []) include each service''s /health catalog with full response shapes. Prices in x-payment-info are USD per call unless the summary says otherwise (RPC is per 1,000-request block; Telegram provisioning is per bot-month; transcription is per minute of audio).'
  description: '67 data and utility APIs behind x402 tolls, settled in SOL or USDC on Solana. Call a paid endpoint without payment to receive a 402 x402 challenge (recipient + fresh memo), pay with the memo attached via the Solana Memo program, then retry with the X-Payment-Tx header and toll_memo query parameter. Free catalog/health endpoints are marked without x-payment-info. Full catalogs: GET /toll/discovery and each service''s /health.'
servers:
- url: https://exchangerebel.com
tags:
- name: Election Finance (FEC)
paths:
  /toll/politics/fec/committees:
    get:
      tags:
      - Election Finance (FEC)
      summary: Fetch FEC committee profiles by cycle
      responses:
        '200':
          description: Success. Response shape is documented in the service catalog (GET /health on the service).
          content:
            application/json:
              example:
                cycle: 2026
                count: 4
                total_matching: 4
                limit: 20
                offset: 0
                committees:
                - cmte_id: C90016668
                  cmte_nm: AMERICAN WOMEN LOVE TRUMP INC
                  cmte_tp: O
                  cmte_dsgn: U
                  cmte_pty_affiliation: ''
                  cmte_st: DC
                  cand_id: null
                - cmte_id: C00493783
                  cmte_nm: FRESHMAN AGRICULTURAL REPUBLICAN MEMBERS TRUST AKA FARM TRUST
                  cmte_tp: H
                  cmte_dsgn: B
                  cmte_pty_affiliation: REP
                  cmte_st: KS
                  cand_id: null
                - cmte_id: C00000059
                  cmte_nm: HALLMARK CARDS, INC. PAC (HALLPAC)
                  cmte_tp: Q
                  cmte_dsgn: B
                  cmte_pty_affiliation: ''
                  cmte_st: MO
                  cand_id: null
                - cmte_id: C00832576
                  cmte_nm: PATRIOT PAC
                  cmte_tp: H
                  cmte_dsgn: B
                  cmte_pty_affiliation: REP
                  cmte_st: VA
                  cand_id: null
                source_updated: Mon, 19 Oct 2026 05:42:03 GMT
                freshness_note: Nightly FEC ETL (through 7 pm prior-day filings); source_updated is the HTTP Last-Modified header captured at bulk download. Disbursements (oppexp) refresh on their own ETL cadence and can lag the masters — not a bug, see data_notes.
                attribution: FEC bulk downloads via fec.gov — public domain (U.S. federal government work).
                data_health:
                  as_of: '2026-10-21T21:23:05.252Z'
                  source: fec
                  license: US public domain (U.S. federal government work — FEC)
                  attribution: FEC bulk downloads via fec.gov — public domain (U.S. federal government work).
                  commercial_ok: true
                  checks_passed:
                  - license
                  - schema
                  - freshness
                  error_budget: critical fields <0.1%, other fields <1%
                quality:
                  adversarial_sample: 0/700 row mismatches vs raw bulk files (deterministic seed 20261010)
                  error_budget: critical fields <0.1%, other fields <1%
                  ie_dedupe: 'one row per (spe_id, tran_id): latest amendment kept, dedupe_group_size carried on kept rows'
                  donor_boundary: donor files (indiv/itcont) never downloaded; individual payee identity stripped at ingestion
                paid: true
        '402':
          description: 'Payment Required (x402). The PAYMENT-REQUIRED response header carries the x402 v2 PaymentRequired object (base64 JSON: scheme, CAIP-2 network, amount, asset, payTo, plus the bazaar discovery extension); the response body carries the same challenge in x402 v1 form for compatibility, naming the SOL recipient and USDC token account on Solana plus a fresh memo. To pay on this service''s rail: pay with the memo attached (Solana Memo program), then retry with header ''X-Payment-Tx: <transaction signature>'' and query parameter ''toll_memo=<memo>''.'
      parameters:
      - name: cycle
        in: query
        required: false
        schema:
          type: string
        description: 2024 | 2026 (default 2026)
      - name: name
        in: query
        required: false
        schema:
          type: string
        description: Name substring search
      - name: committee_id
        in: query
        required: false
        schema:
          type: string
        description: Exact committee id
      - name: committee_type
        in: query
        required: false
        schema:
          type: string
        description: Committee type code (e.g. H, S, P)
      - name: limit
        in: query
        required: false
        schema:
          type: string
        description: Page size 1-100 (default 20)
      - name: offset
        in: query
        required: false
        schema:
          type: string
        description: Page offset (default 0)
      x-payment-info:
        protocols:
        - x402
        price:
          mode: fixed
          currency: USD
          amount: '0.05'
      security:
      - x402Payment: []
      operationId: getTollPoliticsFecCommittees
      x-operation-id-source: derived
  /toll/politics/fec/committees/{id}:
    get:
      tags:
      - Election Finance (FEC)
      summary: Fetch one FEC committee profile + totals
      responses:
        '200':
          description: Success. Response shape is documented in the service catalog (GET /health on the service).
          content:
            application/json:
              example:
                cycle: 2026
                committee:
                  cmte_id: C00832576
                  cmte_nm: PATRIOT PAC
                  tres_nm: JONES, ALEX
                  cmte_st1: 9 ELM ST
                  cmte_st2: null
                  cmte_city: ARLINGTON
                  cmte_st: VA
                  cmte_zip: '22201'
                  cmte_dsgn: B
                  cmte_tp: H
                  cmte_pty_affiliation: REP
                  cmte_filing_freq: Q
                  org_tp: ''
                  connected_org_nm: ''
                  cand_id: null
                cycle_totals:
                  ttl_receipts: 472763.33
                  ttl_disb: 400000
                  coh_bop: 1000
                  coh_cop: 73763.33
                  debts_owed_by: 0
                  indv_contrib: 400000
                  other_pol_cmte_contrib: 10000
                  contrib_to_other_cmte: 2000
                  ind_exp: 5000
                  cvg_end_date: '2026-09-30'
                totals_scope: PAC/party committee totals (Form 3X filers); House/Senate campaigns report under candidate totals
                linked_candidates:
                - cand_id: H00000001
                  cand_name: CANDIDATE 1
                  cand_pty_affiliation: REP
                  cand_office: H
                  cand_office_st: VA
                  cand_office_district: '01'
                - cand_id: H00000002
                  cand_name: CANDIDATE 2
                  cand_pty_affiliation: REP
                  cand_office: H
                  cand_office_st: VA
                  cand_office_district: '01'
                - cand_id: H00000003
                  cand_name: CANDIDATE 3
                  cand_pty_affiliation: REP
                  cand_office: H
                  cand_office_st: VA
                  cand_office_district: '01'
                - cand_id: H00000004
                  cand_name: CANDIDATE 4
                  cand_pty_affiliation: REP
                  cand_office: H
                  cand_office_st: VA
                  cand_office_district: '01'
                - cand_id: H00000005
                  cand_name: CANDIDATE 5
                  cand_pty_affiliation: REP
                  cand_office: H
                  cand_office_st: VA
                  cand_office_district: '01'
                source_updated: Mon, 19 Oct 2026 05:42:03 GMT
                freshness_note: Nightly FEC ETL (through 7 pm prior-day filings); source_updated is the HTTP Last-Modified header captured at bulk download. Disbursements (oppexp) refresh on their own ETL cadence and can lag the masters — not a bug, see data_notes.
                attribution: FEC bulk downloads via fec.gov — public domain (U.S. federal government work).
                data_health:
                  as_of: '2026-10-21T21:23:05.255Z'
                  source: fec
                  license: US public domain (U.S. federal government work — FEC)
                  attribution: FEC bulk downloads via fec.gov — public domain (U.S. federal government work).
                  commercial_ok: true
                  checks_passed:
                  - license
                  - schema
                  - freshness
                  error_budget: critical fields <0.1%, other fields <1%
                quality:
                  adversarial_sample: 0/700 row mismatches vs raw bulk files (deterministic seed 20261010)
                  error_budget: critical fields <0.1%, other fields <1%
                  ie_dedupe: 'one row per (spe_id, tran_id): latest amendment kept, dedupe_group_size carried on kept rows'
                  donor_boundary: donor files (indiv/itcont) never downloaded; individual payee identity stripped at ingestion
                paid: true
        '402':
          description: 'Payment Required (x402). The PAYMENT-REQUIRED response header carries the x402 v2 PaymentRequired object (base64 JSON: scheme, CAIP-2 network, amount, asset, payTo, plus the bazaar discovery extension); the response body carries the same challenge in x402 v1 form for compatibility, naming the SOL recipient and USDC token account on Solana plus a fresh memo. To pay on this service''s rail: pay with the memo attached (Solana Memo program), then retry with header ''X-Payment-Tx: <transaction signature>'' and query parameter ''toll_memo=<memo>''.'
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
        description: Committee id (e.g. C00000059)
      - name: cycle
        in: query
        required: false
        schema:
          type: string
        description: 2024 | 2026 (default 2026)
      x-payment-info:
        protocols:
        - x402
        price:
          mode: fixed
          currency: USD
          amount: '0.05'
      security:
      - x402Payment: []
      operationId: getTollPoliticsFecCommitteesById
      x-operation-id-source: derived
  /toll/politics/fec/disbursements:
    get:
      tags:
      - Election Finance (FEC)
      summary: Fetch FEC Schedule B disbursements
      responses:
        '200':
          description: Success. Response shape is documented in the service catalog (GET /health on the service).
          content:
            application/json:
              example:
                cycle: 2026
                committee_id: C00010603
                count: 2
                total_matching: null
                limit: 20
                offset: 0
                disbursements:
                - sub_id: '40712345678901234567'
                  cmte_id: C00010603
                  transaction_date: '2026-10-01'
                  transaction_dt: 10/01/2026
                  transaction_amt: 1250.5
                  purpose: CONSULTING
                  category: CON
                  category_desc: Consulting
                  entity_tp: ORG
                  payee_name: ACME CONSULTING LLC
                  payee_city: WASHINGTON
                  payee_state: DC
                  memo_text: null
                  rpt_yr: '2026'
                  rpt_tp: Q3
                  form_tp_cd: SB
                - sub_id: '40712345678901234568'
                  cmte_id: C00010603
                  transaction_date: '2026-09-15'
                  transaction_dt: 09/15/2026
                  transaction_amt: 300
                  purpose: TRAVEL
                  category: TRA
                  category_desc: Travel
                  entity_tp: IND
                  payee_name: null
                  payee_city: null
                  payee_state: null
                  memo_text: null
                  rpt_yr: '2026'
                  rpt_tp: Q3
                  form_tp_cd: SB
                payee_note: Payee fields are NULL for individual persons (privacy strip at ingestion, 52 U.S.C. § 30111(a)(4)); institutional payees retained.
                source_updated: null
                freshness_note: Nightly FEC ETL (through 7 pm prior-day filings); source_updated is the HTTP Last-Modified header captured at bulk download. Disbursements (oppexp) refresh on their own ETL cadence and can lag the masters — not a bug, see data_notes.
                attribution: FEC bulk downloads via fec.gov — public domain (U.S. federal government work).
                data_health:
                  as_of: '2026-10-21T21:23:05.260Z'
                  source: fec
                  license: US public domain (U.S. federal government work — FEC)
                  attribution: FEC bulk downloads via fec.gov — public domain (U.S. federal government work).
                  commercial_ok: true
                  checks_passed:
                  - license
                  - schema
                  - freshness
                  error_budget: critical fields <0.1%, other fields <1%
                quality:
                  adversarial_sample: 0/700 row mismatches vs raw bulk files (deterministic seed 20261010)
                  error_budget: critical fields <0.1%, other fields <1%
                  ie_dedupe: 'one row per (spe_id, tran_id): latest amendment kept, dedupe_group_size carried on kept rows'
                  donor_boundary: donor files (indiv/itcont) never downloaded; individual payee identity stripped at ingestion
                paid: true
        '402':
          description: 'Payment Required (x402). The PAYMENT-REQUIRED response header carries the x402 v2 PaymentRequired object (base64 JSON: scheme, CAIP-2 network, amount, asset, payTo, plus the bazaar discovery extension); the response body carries the same challenge in x402 v1 form for compatibility, naming the SOL recipient and USDC token account on Solana plus a fresh memo. To pay on this service''s rail: pay with the memo attached (Solana Memo program), then retry with header ''X-Payment-Tx: <transaction signature>'' and query parameter ''toll_memo=<memo>''.'
      parameters:
      - name: cycle
        in: query
        required: false
        schema:
          type: string
        description: 2024 | 2026 (default 2026)
      - name: committee_id
        in: query
        required: true
        schema:
          type: string
        description: Committee id (required)
      - name: limit
        in: query
        required: false
        schema:
          type: string
        description: Page size 1-100 (default 20)
      - name: offset
        in: query
        required: false
        schema:
          type: string
        description: Page offset (default 0)
      x-payment-info:
        protocols:
        - x402
        price:
          mode: fixed
          currency: USD
          amount: '0.05'
      security:
      - x402Payment: []
      operationId: getTollPoliticsFecDisbursements
      x-operation-id-source: derived
  /toll/politics/fec/independent-expenditures:
    get:
      tags:
      - Election Finance (FEC)
      summary: Fetch FEC independent expenditures
      responses:
        '200':
          description: Success. Response shape is documented in the service catalog (GET /health on the service).
          content:
            application/json:
              example:
                cycle: 2026
                count: 4
                total_matching: 4
                limit: 20
                offset: 0
                independent_expenditures:
                - spe_id: C11111111
                  tran_id: T3
                  cand_id: S00000001
                  cand_name: SENATOR X
                  spender_name: SENATE CONSERVATIVES FUND
                  spender_is_committee: 1
                  sup_opp: S
                  exp_amo: 9000
                  agg_amo: 9000
                  exp_date_parsed: '2026-10-05'
                  pur: TV ADS
                  ele_type: G
                  can_office: S
                  can_office_state: TX
                  can_office_dis: '00'
                  dedupe_group_size: 2
                  amndt_ind: A
                - spe_id: C90016668
                  tran_id: T1
                  cand_id: H2AK01158
                  cand_name: PELTOLA, MARY
                  spender_name: AMERICAN WOMEN LOVE TRUMP INC
                  spender_is_committee: 1
                  sup_opp: S
                  exp_amo: 5000
                  agg_amo: 5000
                  exp_date_parsed: '2026-10-01'
                  pur: ADVERTISING
                  ele_type: G
                  can_office: H
                  can_office_state: AK
                  can_office_dis: '00'
                  dedupe_group_size: 1
                  amndt_ind: N
                - spe_id: C00000059
                  tran_id: T2
                  cand_id: H00000001
                  cand_name: CANDIDATE 1
                  spender_name: HALLMARK CARDS, INC. PAC (HALLPAC)
                  spender_is_committee: 1
                  sup_opp: S
                  exp_amo: 3000
                  agg_amo: 3000
                  exp_date_parsed: '2026-09-15'
                  pur: MAIL
                  ele_type: G
                  can_office: H
                  can_office_state: VA
                  can_office_dis: '01'
                  dedupe_group_size: 1
                  amndt_ind: N
                - spe_id: C22222222
                  tran_id: T4
                  cand_id: S00000001
                  cand_name: SENATOR X
                  spender_name: SOME PAC
                  spender_is_committee: 1
                  sup_opp: O
                  exp_amo: 2000
                  agg_amo: 2000
                  exp_date_parsed: '2026-08-01'
                  pur: RADIO
                  ele_type: G
                  can_office: S
                  can_office_state: TX
                  can_office_dis: '00'
                  dedupe_group_size: 1
                  amndt_ind: N
                dedupe_note: 'One row per (spe_id, tran_id): the latest-amendment row is kept; raw-file amendment rows that would double-count are excluded.'
                spender_note: spender_name is NULL when the spender is not a registered committee (privacy strip at ingestion).
                source_updated: Mon, 19 Oct 2026 10:13:29 GMT
                freshness_note: Nightly FEC ETL (through 7 pm prior-day filings); source_updated is the HTTP Last-Modified header captured at bulk download. Disbursements (oppexp) refresh on their own ETL cadence and can lag the masters — not a bug, see data_notes.
                attribution: FEC bulk downloads via fec.gov — public domain (U.S. federal government work).
                data_health:
                  as_of: '2026-10-21T21:23:05.263Z'
                  source: fec
                  license: US public domain (U.S. federal government work — FEC)
                  attribution: FEC bulk downloads via fec.gov — public domain (U.S. federal government work).
                  commercial_ok: true
                  checks_passed:
                  - license
                  - schema
                  - freshness
                  error_budget: critical fields <0.1%, other fields <1%
                quality:
                  adversarial_sample: 0/700 row mismatches vs raw bulk files (deterministic seed 20261010)
                  error_budget: critical fields <0.1%, other fields <1%
                  ie_dedupe: 'one row per (spe_id, tran_id): latest amendment kept, dedupe_group_size carried on kept rows'
                  donor_boundary: donor files (indiv/itcont) never downloaded; individual payee identity stripped at ingestion
                paid: true
        '402':
          description: 'Payment Required (x402). The PAYMENT-REQUIRED response header carries the x402 v2 PaymentRequired object (base64 JSON: scheme, CAIP-2 network, amount, asset, payTo, plus the bazaar discovery extension); the response body carries the same challenge in x402 v1 form for compatibility, naming the SOL recipient and USDC token account on Solana plus a fresh memo. To pay on this service''s rail: pay with the memo attached (Solana Memo program), then retry with header ''X-Payment-Tx: <transaction signature>'' and query parameter ''toll_memo=<memo>''.'
      parameters:
      - name: cycle
        in: query
        required: false
        schema:
          type: string
        description: 2024 | 2026 (default 2026)
      - name: committee_id
        in: query
        required: false
        schema:
          type: string
        description: Spender committee id
      - name: spender
        in: query
        required: false
        schema:
          type: string
        description: Spender name substring search
      - name: support_oppose
        in: query
        required: false
        schema:
          type: string
        description: S (support) | O (oppose)
      - name: limit
        in: query
        required: false
        schema:
          type: string
        description: Page size 1-100 (default 20)
      - name: offset
        in: query
        required: false
        schema:
          type: string
        description: Page offset (default 0)
      x-payment-info:
        protocols:
        - x402
        price:
          mode: fixed
          currency: USD
          amount: '0.05'
      security:
      - x402Payment: []
      operationId: getTollPoliticsFecIndependentExpenditures
      x-operation-id-source: derived
  /toll/politics/fec/totals:
    get:
      tags:
      - Election Finance (FEC)
      summary: Fetch FEC cycle financial totals
      responses:
        '200':
          description: Success. Response shape is documented in the service catalog (GET /health on the service).
          content:
            application/json:
              example:
                cycle: 2026
                count: 1
                results:
                - kind: committee
                  scope: PAC/party committee cycle totals (Form 3X filers)
                  coverage_end: '2026-09-30'
                  cmte_id: C90016668
                  cmte_nm: AMERICAN WOMEN LOVE TRUMP INC
                  cmte_tp: O
                  cmte_dsgn: U
                  ttl_receipts: 1000.5
                  trans_from_aff: 0
                  indv_contrib: 500
                  other_pol_cmte_contrib: 100
                  cand_contrib: 0
                  ttl_disb: 900.25
                  tranf_to_aff: 0
                  coh_bop: 10
                  coh_cop: 110.25
                  debts_owed_by: 0
                  ind_exp: 0
                  pty_coord_exp: 0
                  contrib_to_other_cmte: 0
                  cvg_end_date: '2026-09-30'
                granularity_note: Committee-cycle aggregates only — bulk carries no per-report (individual filing) granularity.
                source_updated: Mon, 19 Oct 2026 05:41:54 GMT
                freshness_note: Nightly FEC ETL (through 7 pm prior-day filings); source_updated is the HTTP Last-Modified header captured at bulk download. Disbursements (oppexp) refresh on their own ETL cadence and can lag the masters — not a bug, see data_notes.
                attribution: FEC bulk downloads via fec.gov — public domain (U.S. federal government work).
                data_health:
                  as_of: '2026-10-21T21:23:05.258Z'
                  source: fec
                  license: US public domain (U.S. federal government work — FEC)
                  attribution: FEC bulk downloads via fec.gov — public domain (U.S. federal government work).
                  commercial_ok: true
                  checks_passed:
                  - license
                  - schema
                  - freshness
                  error_budget: critical fields <0.1%, other fields <1%
                quality:
                  adversarial_sample: 0/700 row mismatches vs raw bulk files (deterministic seed 20261010)
                  error_budget: critical fields <0.1%, other fields <1%
                  ie_dedupe: 'one row per (spe_id, tran_id): latest amendment kept, dedupe_group_size carried on kept rows'
                  donor_boundary: donor files (indiv/itcont) never downloaded; individual payee identity stripped at ingestion
                paid: true
        '402':
          description: 'Payment Required (x402). The PAYMENT-REQUIRED response header carries the x402 v2 PaymentRequired object (base64 JSON: scheme, CAIP-2 network, amount, asset, payTo, plus the bazaar discovery extension); the response body carries the same challenge in x402 v1 form for compatibility, naming the SOL recipient and USDC token account on Solana plus a fresh memo. To pay on this service''s rail: pay with the memo attached (Solana Memo program), then retry with header ''X-Payment-Tx: <transaction signature>'' and query parameter ''toll_memo=<memo>''.'
      parameters:
      - name: cycle
        in: query
        required: false
        schema:
          type: string
        description: 2024 | 2026 (default 2026)
      - name: committee_id
        in: query
        required: false
        schema:
          type: string
        description: Committee id (kind=committee totals)
      - name: candidate_id
        in: query
        required: false
        schema:
          type: string
        description: Candidate id (kind=candidate totals)
      x-payment-info:
        protocols:
        - x402
        price:
          mode: fixed
          currency: USD
          amount: '0.05'
      security:
      - x402Payment: []
      operationId: getTollPoliticsFecTotals
      x-operation-id-source: derived
components:
  securitySchemes:
    x402Payment:
      type: apiKey
      in: header
      name: X-Payment-Tx
      description: 'x402 toll payment proof: the Solana transaction signature of a payment carrying the memo from the 402 challenge; send together with ?toll_memo=<memo>. Payment itself is made on-chain in SOL or USDC to the recipient named in the challenge.'