{
  "data": {
    "a": {
      "slug": "airwallex",
      "name": "Airwallex Spend and Issuing",
      "vendor": "Airwallex",
      "vendorUrl": "https://www.airwallex.com",
      "kind": "http-api",
      "category": "spend-management",
      "summary": "Airwallex is a multi-currency business account with company cards, expense management and bill pay. Its REST API issues and controls cards, reads card transactions and expenses, and creates vendors, purchase orders and bills. A CLI and MCP server use OAuth.",
      "url": "https://www.anchorterminal.com/tools/airwallex",
      "markdownUrl": "https://www.anchorterminal.com/tools/airwallex.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/airwallex.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/airwallex.json",
      "repo": "https://github.com/airwallex/airwallex-marketplace",
      "license": "Proprietary service under Airwallex's service agreement and API terms. The plugin and skills repository is Apache-2.0 and `@airwallex/node-sdk` is MIT",
      "transports": [
        "http"
      ],
      "remoteUrl": "https://api.airwallex.com",
      "packages": [
        {
          "registry": "npm",
          "name": "@airwallex/node-sdk"
        }
      ],
      "auth": "mixed",
      "authNotes": "Access is self-serve in the sandbox and for an Airwallex customer in production. A user with the Owner, Admin or Developer role creates a key in the web app under Developer, then API keys. Scoped keys grant Read or Write per resource and can be tied to IP ranges, and admin keys are unrestricted. A key and client ID exchange at `POST /api/v1/authentication/login` for a bearer token that lasts 30 minutes. Spend resources need organisation-level permissions. The CLI, the MCP servers and partner apps use OAuth 2.0 with 64 scopes, and only Owner, Admin and Finance Admin users can consent. The service agreement says Airwallex must first approve API access, and the CLI guide says card and Issuing commands may need support to enable them.",
      "pricing": "freemium",
      "pricingNotes": "No separate API fee is published. The US pricing page lists Explore at $0 with up to 10 free Spend users, Grow at $12 per active Spend user a month up to 250 users, and Accelerate on request. It lists direct Spend API integration with an ERP under Accelerate and sends platform API and embedded finance use to sales. A sandbox account opens at once from a signup form with no payment card or contract, so an agent's owner can start there. Card, FX and transfer fees are on a separate fee schedule (checked 2026-10-08).",
      "priceSummary": "$12 / seat-mo",
      "where": "hosted",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 in the docs index, the API reference pages read or the pricing page (checked 2026-10-08).",
        "endpoints": []
      },
      "toolCount": null,
      "popularity": {
        "githubStars": 7,
        "npmWeekly": 44464,
        "pypiWeekly": null,
        "asOf": "2026-10-08"
      },
      "docsUrl": "https://www.airwallex.com/docs/",
      "llmsTxt": "https://www.airwallex.com/docs/llms.txt",
      "capabilities": [
        "spend.transactions",
        "spend.cards",
        "spend.expenses",
        "spend.bills",
        "spend.procurement"
      ],
      "tags": [
        "hosted",
        "freemium",
        "api-key",
        "oauth",
        "mcp",
        "cli",
        "llms-txt",
        "webhooks",
        "sandbox",
        "multi-currency",
        "soc2",
        "pci-dss",
        "iso27001",
        "status-page",
        "security-txt",
        "bug-bounty"
      ],
      "lastRelease": "2026-09-30",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 68.3,
        "grade": "B",
        "agentReady": false,
        "rank": 187,
        "ranked": true,
        "rankOf": 722,
        "categoryRank": 1,
        "methodology": "0.4",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 69,
          "maintenance": 66,
          "payments": 25,
          "reliability": 77,
          "schema": 69,
          "security": 84,
          "transparency": 78
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-10-08"
        },
        "negative": 0,
        "verdict": "Scoped API keys split read from write per resource, tokens last 30 minutes, and the sandbox opens at once with no contract. No OpenAPI spec was found, every Spend endpoint read is marked beta, the pricing page lists direct Spend API integration under the custom-priced Accelerate plan, and no SLA was found.",
        "bestFor": "A company already banking with Airwallex in several currencies that wants an agent to issue cards with limits, read card transactions and expenses, load vendors, purchase orders and bills, and sync status to an ERP.",
        "strengths": [
          "Scoped API keys grant Read or Write per resource, can be limited to listed IP ranges, and exchange for bearer tokens that last 30 minutes",
          "A sandbox account opens at once from a signup form, with the full API except Connected Accounts and simulation endpoints for card transactions",
          "Rate limits are published with numbers, 100 requests a second per account and 20 per endpoint in production, with backoff guidance for 429",
          "Create calls such as `POST /api/v1/issuing/cards/create` and `POST /api/v1/spend/bills/create` require a `request_id`, so a retried request isn't applied twice",
          "status.airwallex.com has separate Spend, Issuing, API Gateway and Sandbox components, and none was named in an incident between 27 April and 8 October 2026"
        ],
        "weaknesses": [
          "No OpenAPI spec was found. The reference is a Markdown page per endpoint, and the CLI prints one endpoint's schema at a time",
          "Each Spend endpoint we read (expenses, vendors, bills, purchase orders) is marked beta, and the pricing page lists direct Spend API integration under the custom-priced Accelerate plan",
          "The Spend API reads expenses and sets sync status. No endpoint was found to attach a receipt, code a card expense or approve one",
          "The only server SDK is `@airwallex/node-sdk`, still in beta and last published on 31 December 2025",
          "No SLA was found, and the Security Audit Logs API is open to selected accounts only and covers logins, user changes and key changes, not API calls"
        ],
        "agentNotes": [
          "Exchange `x-client-id` and `x-api-key` at `POST /api/v1/authentication/login` once, then reuse the bearer token for 30 minutes. The login endpoint allows 100 requests a minute per key",
          "Create Spend keys with organisation-level permissions. With a key linked to several accounts, send `x-login-as` at login or the token carries no account permissions",
          "Send a fresh UUID as `request_id` on every create call and reuse the same value when retrying after a timeout",
          "Expect two pagination styles. Spend and card transaction events use the `page` bookmark with `page_after` and `page_before`. Cards and legacy transactions use `page_num` and `has_more`",
          "Card and expense lists default to the last 30 days. Pass both created-at bounds to read further back, and fetch a card singly to see its `authorization_controls`"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 0,
        "avgRating": 0,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "B",
            "methodology": "0.4",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 68.3
          }
        ],
        "editorialScores": {
          "ergonomics": 69,
          "maintenance": 66,
          "payments": 25,
          "reliability": 77,
          "schema": 69,
          "security": 84,
          "transparency": 64
        },
        "provenanceScore": 92
      },
      "connect": {
        "install": "curl -fsSL https://static.airwallex.com/developer-tools/airwallex-cli/install.sh | sh",
        "http": "curl -X POST https://api.sandbox.airwallex.com/api/v1/authentication/login \\\n  -H 'Content-Type: application/json' \\\n  -H 'x-api-key: {{YOUR_API_KEY}}' \\\n  -H 'x-client-id: {{YOUR_CLIENT_ID}}'",
        "claudeCode": "claude mcp add-json airwallex '{ \"type\": \"http\", \"url\": \"https://mcp.airwallex.com/mcp\" }'",
        "config": {
          "mcpServers": {
            "airwallex": {
              "type": "http",
              "url": "https://mcp.airwallex.com/mcp"
            }
          }
        }
      },
      "letme": {
        "capability": "https://letme.dev/spend.transactions",
        "tool": "https://letme.dev/airwallex"
      },
      "area": "domain-data",
      "unitPrices": [
        {
          "item": "Explore plan",
          "unit": "seat-month",
          "usd": 0,
          "note": "Up to 10 free Spend users. No separate API fee is published"
        },
        {
          "item": "Grow plan",
          "unit": "seat-month",
          "usd": 12,
          "note": "Per active Spend user, up to 250. Accelerate, which lists direct Spend API integration, is priced on request"
        }
      ],
      "provenance": {
        "legalEntity": "Airwallex US, LLC",
        "domain": "airwallex.com",
        "domainRegistered": "2015-11-08",
        "endpointOnVendorDomain": true,
        "terms": "https://www.airwallex.com/us/terms/application-programming-interface-terms",
        "privacy": "https://www.airwallex.com/us/terms/privacy-policy-airwallex",
        "statusPage": "https://status.airwallex.com",
        "changelog": "https://www.airwallex.com/docs/api/changelog",
        "securityTxt": "valid",
        "checked": "2026-10-08",
        "notes": [
          "The terms and privacy policy cited are the US ones. The US privacy policy names Airwallex US, LLC among the entities responsible, and the site footer gives Airwallex US, LLC (NMLS #1928093) as the licensed money transmitter. Other regions have their own entities and documents.",
          "The API terms (API Developer Terms and Conditions) are dated 20 June 2025. The service agreement was last updated on 2 December 2025 and took effect on 1 January 2026. The Spend Management Terms are dated 6 December 2023.",
          "The API answers at api.airwallex.com and api.sandbox.airwallex.com, and the MCP servers at mcp.airwallex.com and mcp.sandbox.airwallex.com.",
          "www.airwallex.com/.well-known/security.txt lists bugbounty@airwallex.com and security@airwallex.com and an expiry of 30 June 2030. The timestamp has a space inside it, which isn't the RFC 9116 format.",
          "The US privacy policy shows no last-updated line in the text we read. The global policy at /terms/privacy-policy is dated 26 February 2026.",
          "RDAP for airwallex.com gives a registration date of 2015-11-08."
        ],
        "score": 92
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/airwallex.json",
      "live": {
        "slug": "airwallex",
        "probe": {
          "target": "https://api.airwallex.com",
          "method": "get",
          "lastAt": "2026-10-08T21:12:03.204142811Z",
          "lastOk": true,
          "lastStatus": 404,
          "lastMs": 37,
          "authRequired": false,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 44,
          "p95ms24h": 75,
          "samples24h": 21,
          "samples30d": 21,
          "days": [
            {
              "date": "2026-10-08",
              "probes": 21,
              "ok": 21
            }
          ]
        },
        "vendorStatus": {
          "page": "https://status.airwallex.com",
          "indicator": "none",
          "summary": "All Systems Operational",
          "checkedAt": "2026-10-08T21:05:50.696967861Z"
        },
        "updatedAt": "2026-10-08T21:12:03.204142811Z"
      }
    },
    "answer": "Airwallex Spend and Issuing scores 68.3 (B) on agent readiness against Expensify's 41.1 (E), and leads in 6 of 7 scored categories. Expensify leads on payments \u0026 pricing.",
    "b": {
      "slug": "expensify",
      "name": "Expensify",
      "vendor": "Expensify, Inc.",
      "vendorUrl": "https://www.expensify.com",
      "kind": "http-api",
      "category": "spend-management",
      "summary": "Expensify is an expense management service with receipt scanning, expense reports, approvals, reimbursement and company cards. Its Integration Server API exports report and card data and creates expenses, reports and workspace settings. A hosted MCP server gives read-only search.",
      "url": "https://www.anchorterminal.com/tools/expensify",
      "markdownUrl": "https://www.anchorterminal.com/tools/expensify.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/expensify.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/expensify.json",
      "license": "Proprietary service under the Expensify Terms of Service. The Expensify app client and help articles on GitHub (Expensify/App) are MIT",
      "transports": [
        "http"
      ],
      "remoteUrl": "https://integrations.expensify.com/Integration-Server/ExpensifyIntegrations",
      "packages": [],
      "auth": "mixed",
      "authNotes": "Access is self-serve for anyone with an Expensify account. Signing in at https://www.expensify.com/tools/integrations/ generates a partnerUserID and partnerUserSecret pair, shown once and replaceable on the same page. The pair travels inside the `requestJobDescription` form field and acts with the account's own rights, so domain and workspace admin jobs need an admin's credentials. Creating reports or expenses in other users' accounts needs Expensify to enable it for the domain by email to Concierge. OAuth2 for the API (authorisation code grant, scope `integrations:api`, two-hour access tokens, rotating refresh tokens) is in private beta by request form. The MCP server uses OAuth 2.1 with PKCE and the `mcp:tools` scope.",
      "pricing": "freemium",
      "pricingNotes": "No separate API fee is published. Collect is $5 per unique member a month, pay-per-use. Control is $18 per member a month on an annual subscription or $36 per active member pay-per-use, and as low as $9 with Expensify Card spend. A workspace starts a 30-day free trial, with a payment card asked for when it ends, and a free Submit workspace exists for individuals. An agent can start on the trial without a contract. No sandbox was found, and whether the API works without a paid plan wasn't established (checked 2026-10-08).",
      "priceSummary": "$5 / seat-mo",
      "where": "hosted",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 in the Integration Server reference, the help articles or the pricing article (checked 2026-10-08).",
        "endpoints": []
      },
      "toolCount": null,
      "popularity": {
        "githubStars": null,
        "npmWeekly": null,
        "pypiWeekly": null,
        "asOf": "2026-10-08"
      },
      "docsUrl": "https://integrations.expensify.com/Integration-Server/doc/",
      "capabilities": [
        "spend.transactions",
        "spend.expenses"
      ],
      "tags": [
        "hosted",
        "freemium",
        "api-key",
        "oauth",
        "mcp",
        "soc2",
        "pci-dss"
      ],
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 41.1,
        "grade": "E",
        "agentReady": false,
        "rank": 684,
        "ranked": true,
        "rankOf": 722,
        "categoryRank": 8,
        "methodology": "0.4",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 45,
          "maintenance": 23,
          "payments": 30,
          "reliability": 62,
          "schema": 28,
          "security": 34,
          "transparency": 58
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-10-08"
        },
        "negative": 0,
        "verdict": "One endpoint exports reports through caller-written templates and creates expenses, reports, rules and workspace settings, with limits of 5 requests per 10 seconds published and a status page that tracks the API separately. There is no OpenAPI spec, changelog, SDK, pagination or idempotency key, and one credential pair carries the whole account's rights.",
        "bestFor": "A finance team already on Expensify that wants an agent to export approved reports to an accounting system, create expenses and reports, keep categories, tags and employees in step with an HR system, or mark reports reimbursed.",
        "strengths": [
          "Export templates written in Freemarker let the caller choose every output field, in CSV, XLS, XLSX, TXT, PDF, JSON or XML, filtered by date, state, workspace and report ID",
          "Rate limits are published as 5 requests per 10 seconds and 20 per 60 seconds, with status 429 when exceeded",
          "The status page lists Integration APIs as its own component, and no incident in the 90 days to 8 October 2026 names it",
          "The hosted MCP server at https://www.expensify.com/mcp is read-only and uses OAuth 2.1 with PKCE, the `mcp:tools` scope and a revocation endpoint",
          "Every job in the reference has a curl example, a parameter table with valid values and a sample error response"
        ],
        "weaknesses": [
          "No OpenAPI spec, llms.txt, version number or changelog was found for the Integration Server API",
          "The partnerUserID and partnerUserSecret pair acts with all of the account's rights. No scopes or read-only credential were found for the API",
          "No idempotency key or pagination is documented, and no official SDK was found",
          "Errors arrive as `responseCode` in the body. An invalid credential returned HTTP 200 with `responseCode` 404 when we tried it on 8 October 2026",
          "The Terms of Service allow Expensify to modify or discontinue the service at any time without prior notice, and no SLA was found"
        ],
        "agentNotes": [
          "POST `requestJobDescription` as a form field to the single endpoint. Keep it out of the URL query string, because it carries the secret",
          "Read `responseCode` in the body on every reply. HTTP status can be 200 on failure, and validation errors use 410",
          "Stay under 5 requests per 10 seconds and 20 per 60 seconds. No Retry-After header is documented, so space retries yourself",
          "Export in two calls. A `file` job returns a filename, then a `download` job fetches it. Amounts are in cents",
          "Don't retry a create job blindly. No idempotency key exists, so export and check before resending. Set `dry-run` to true when testing the Advanced Employee Updater"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 0,
        "avgRating": 0,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "E",
            "methodology": "0.4",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 41.1
          }
        ],
        "editorialScores": {
          "ergonomics": 45,
          "maintenance": 23,
          "payments": 30,
          "reliability": 62,
          "schema": 28,
          "security": 34,
          "transparency": 41
        },
        "provenanceScore": 75
      },
      "connect": {
        "http": "curl -X POST 'https://integrations.expensify.com/Integration-Server/ExpensifyIntegrations' \\\n  -d 'requestJobDescription={\"type\":\"get\",\"credentials\":{\"partnerUserID\":\"_REPLACE_\",\"partnerUserSecret\":\"_REPLACE_\"},\"inputSettings\":{\"type\":\"policyList\"}}'"
      },
      "letme": {
        "capability": "https://letme.dev/spend.transactions",
        "tool": "https://letme.dev/expensify"
      },
      "area": "domain-data",
      "unitPrices": [
        {
          "item": "Collect plan, pay-per-use",
          "unit": "seat-month",
          "usd": 5,
          "note": "Per unique member. No separate API fee is published"
        },
        {
          "item": "Control plan, annual subscription",
          "unit": "seat-month",
          "usd": 18,
          "note": "As low as $9 with Expensify Card spend. Active members above the subscription size are $36"
        },
        {
          "item": "Control plan, pay-per-use",
          "unit": "seat-month",
          "usd": 36,
          "note": "Per active member"
        }
      ],
      "provenance": {
        "legalEntity": "Expensify, Inc.",
        "domain": "expensify.com",
        "domainRegistered": "2007-10-26",
        "endpointOnVendorDomain": true,
        "terms": "https://www.expensify.com/terms",
        "privacy": "https://www.expensify.com/privacy",
        "statusPage": "https://status.expensify.com",
        "changelog": "",
        "securityTxt": "none",
        "checked": "2026-10-08",
        "notes": [
          "The Terms of Service (last updated 10 September 2026) name Expensify, Inc., 401 SW 5th Ave, Portland, OR 97204, and govern the Expensify Service including related software and tools. No separate API agreement was found.",
          "The privacy policy (last updated 1 April 2026) is issued for the Expensify group and names Expensify, Inc. as controller.",
          "The API answers at integrations.expensify.com and the MCP server at www.expensify.com/mcp.",
          "https://www.expensify.com/.well-known/security.txt returned 404 on 8 October 2026.",
          "No changelog was found for the Integration Server API.",
          "RDAP for expensify.com gives a registration date of 2007-10-26."
        ],
        "score": 75
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/expensify.json",
      "live": {
        "slug": "expensify",
        "probe": {
          "target": "https://integrations.expensify.com/Integration-Server/ExpensifyIntegrations",
          "method": "get",
          "lastAt": "2026-10-08T21:12:10.129322115Z",
          "lastOk": true,
          "lastStatus": 200,
          "lastMs": 468,
          "authRequired": false,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 448,
          "p95ms24h": 522,
          "samples24h": 41,
          "samples30d": 41,
          "days": [
            {
              "date": "2026-10-08",
              "probes": 41,
              "ok": 41
            }
          ]
        },
        "vendorStatus": {
          "page": "https://status.expensify.com",
          "indicator": "none",
          "summary": "All Systems Operational",
          "checkedAt": "2026-10-08T21:06:04.180428997Z"
        },
        "pages": [
          {
            "url": "https://www.expensify.com/privacy",
            "kind": "privacy",
            "status": 200,
            "checkedAt": "2026-10-08T18:27:38.986175098Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "a6875581ee6f"
          },
          {
            "url": "https://www.expensify.com/terms",
            "kind": "terms",
            "status": 200,
            "checkedAt": "2026-10-08T18:27:41.220273608Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "2df10b1a9dea"
          }
        ],
        "updatedAt": "2026-10-08T21:12:10.129322115Z"
      }
    },
    "facts": [
      {
        "a": "HTTP API",
        "b": "HTTP API",
        "name": "Kind"
      },
      {
        "a": "Airwallex",
        "b": "Expensify, Inc.",
        "name": "Vendor"
      },
      {
        "a": "https://api.airwallex.com",
        "b": "https://integrations.expensify.com/Integration-Server/ExpensifyIntegrations",
        "name": "Hosted endpoint"
      },
      {
        "a": "HTTP",
        "b": "HTTP",
        "name": "Transports"
      },
      {
        "a": "OAuth or key",
        "b": "OAuth or key",
        "name": "Auth"
      },
      {
        "a": "Freemium",
        "b": "Freemium",
        "name": "Pricing"
      },
      {
        "a": "no",
        "b": "no",
        "name": "x402"
      },
      {
        "a": "Proprietary service under Airwallex's service agreement and API terms. The plugin and skills repository is Apache-2.0 and `@airwallex/node-sdk` is MIT",
        "b": "Proprietary service under the Expensify Terms of Service. The Expensify app client and help articles on GitHub (Expensify/App) are MIT",
        "name": "Licence"
      },
      {
        "a": "no",
        "b": "yes",
        "name": "Read-only variant documented"
      },
      {
        "a": "yes",
        "b": "no",
        "name": "llms.txt"
      },
      {
        "a": "2026-09-30",
        "b": "none",
        "name": "Last release"
      },
      {
        "a": "2025-06-20",
        "b": "2026-09-10",
        "name": "Terms last updated"
      },
      {
        "a": "no date given",
        "b": "2026-04-01",
        "name": "Privacy policy last updated"
      },
      {
        "a": "yes",
        "b": "not found in the text",
        "name": "Customer content may train models"
      },
      {
        "a": "yes",
        "b": "yes",
        "name": "Terms restrict automated access"
      },
      {
        "a": "yes",
        "b": "not found in the text",
        "name": "Terms restrict benchmarking"
      },
      {
        "a": "not found in the text",
        "b": "yes",
        "name": "Terms or service can change without notice"
      },
      {
        "a": "not found in the text",
        "b": "yes",
        "name": "Arbitration or class-action waiver"
      },
      {
        "a": "7 stars, 44k npm/wk",
        "b": "none",
        "name": "Popularity"
      }
    ],
    "faq": [
      {
        "answer": "Airwallex Spend and Issuing scores 68.3 (B) on agent readiness against Expensify's 41.1 (E), and leads in 6 of 7 scored categories. Expensify leads on payments \u0026 pricing.",
        "question": "Which is better for AI agents, Airwallex Spend and Issuing or Expensify?"
      },
      {
        "answer": "Both take an API key or an OAuth sign-in.",
        "question": "Do Airwallex Spend and Issuing and Expensify need an API key?"
      },
      {
        "answer": "Yes. Airwallex Spend and Issuing has a hosted endpoint at https://api.airwallex.com and Expensify at https://integrations.expensify.com/Integration-Server/ExpensifyIntegrations.",
        "question": "Can an agent call Airwallex Spend and Issuing and Expensify without installing anything?"
      }
    ],
    "goodFor": [
      {
        "aheadOn": [
          "Reliability, 77 against 62",
          "Schema \u0026 documentation, 69 against 28",
          "Agent ergonomics, 69 against 45",
          "Security \u0026 auth, 84 against 34",
          "Maintenance \u0026 community, 66 against 23",
          "Transparency \u0026 trust, 78 against 58"
        ],
        "also": null,
        "goodFor": "A company already banking with Airwallex in several currencies that wants an agent to issue cards with limits, read card transactions and expenses, load vendors, purchase orders and bills, and sync status to an ERP.",
        "slug": "airwallex",
        "watchFor": "No OpenAPI spec was found. The reference is a Markdown page per endpoint, and the CLI prints one endpoint's schema at a time"
      },
      {
        "aheadOn": [
          "Payments \u0026 pricing, 30 against 25"
        ],
        "also": null,
        "goodFor": "A finance team already on Expensify that wants an agent to export approved reports to an accounting system, create expenses and reports, keep categories, tags and employees in step with an HR system, or mark reports reimbursed.",
        "slug": "expensify",
        "watchFor": "No OpenAPI spec, llms.txt, version number or changelog was found for the Integration Server API"
      }
    ],
    "job": {
      "capability": "spend.transactions",
      "name": "Spend transactions"
    },
    "others": [
      {
        "json": "https://www.anchorterminal.com/compare/airwallex-vs-bill.json",
        "title": "Airwallex Spend and Issuing vs BILL",
        "url": "https://www.anchorterminal.com/compare/airwallex-vs-bill"
      },
      {
        "json": "https://www.anchorterminal.com/compare/airwallex-vs-brex.json",
        "title": "Airwallex Spend and Issuing vs Brex",
        "url": "https://www.anchorterminal.com/compare/airwallex-vs-brex"
      },
      {
        "json": "https://www.anchorterminal.com/compare/airwallex-vs-mercury.json",
        "title": "Airwallex Spend and Issuing vs Mercury API",
        "url": "https://www.anchorterminal.com/compare/airwallex-vs-mercury"
      },
      {
        "json": "https://www.anchorterminal.com/compare/airwallex-vs-pleo.json",
        "title": "Airwallex Spend and Issuing vs Pleo API + MCP",
        "url": "https://www.anchorterminal.com/compare/airwallex-vs-pleo"
      },
      {
        "json": "https://www.anchorterminal.com/compare/airwallex-vs-ramp.json",
        "title": "Airwallex Spend and Issuing vs Ramp",
        "url": "https://www.anchorterminal.com/compare/airwallex-vs-ramp"
      },
      {
        "json": "https://www.anchorterminal.com/compare/airwallex-vs-spendesk.json",
        "title": "Airwallex Spend and Issuing vs Spendesk API + MCP",
        "url": "https://www.anchorterminal.com/compare/airwallex-vs-spendesk"
      },
      {
        "json": "https://www.anchorterminal.com/compare/bill-vs-expensify.json",
        "title": "BILL vs Expensify",
        "url": "https://www.anchorterminal.com/compare/bill-vs-expensify"
      },
      {
        "json": "https://www.anchorterminal.com/compare/brex-vs-expensify.json",
        "title": "Brex vs Expensify",
        "url": "https://www.anchorterminal.com/compare/brex-vs-expensify"
      },
      {
        "json": "https://www.anchorterminal.com/compare/expensify-vs-mercury.json",
        "title": "Expensify vs Mercury API",
        "url": "https://www.anchorterminal.com/compare/expensify-vs-mercury"
      },
      {
        "json": "https://www.anchorterminal.com/compare/expensify-vs-pleo.json",
        "title": "Expensify vs Pleo API + MCP",
        "url": "https://www.anchorterminal.com/compare/expensify-vs-pleo"
      },
      {
        "json": "https://www.anchorterminal.com/compare/expensify-vs-ramp.json",
        "title": "Expensify vs Ramp",
        "url": "https://www.anchorterminal.com/compare/expensify-vs-ramp"
      },
      {
        "json": "https://www.anchorterminal.com/compare/expensify-vs-spendesk.json",
        "title": "Expensify vs Spendesk API + MCP",
        "url": "https://www.anchorterminal.com/compare/expensify-vs-spendesk"
      }
    ],
    "scores": [
      {
        "airwallex": 77,
        "by": 15,
        "edge": "airwallex",
        "expensify": 62,
        "key": "reliability",
        "name": "Reliability",
        "weight": 16
      },
      {
        "key": "performance",
        "name": "Performance",
        "pending": true,
        "weight": 10
      },
      {
        "airwallex": 69,
        "by": 41,
        "edge": "airwallex",
        "expensify": 28,
        "key": "schema",
        "name": "Schema \u0026 documentation",
        "weight": 13
      },
      {
        "airwallex": 69,
        "by": 24,
        "edge": "airwallex",
        "expensify": 45,
        "key": "ergonomics",
        "name": "Agent ergonomics",
        "weight": 13
      },
      {
        "airwallex": 84,
        "by": 50,
        "edge": "airwallex",
        "expensify": 34,
        "key": "security",
        "name": "Security \u0026 auth",
        "weight": 14
      },
      {
        "airwallex": 25,
        "by": 5,
        "edge": "expensify",
        "expensify": 30,
        "key": "payments",
        "name": "Payments \u0026 pricing",
        "weight": 10
      },
      {
        "key": "tasks",
        "name": "Task success",
        "pending": true,
        "weight": 10
      },
      {
        "airwallex": 66,
        "by": 43,
        "edge": "airwallex",
        "expensify": 23,
        "key": "maintenance",
        "name": "Maintenance \u0026 community",
        "weight": 7
      },
      {
        "airwallex": 78,
        "by": 20,
        "edge": "airwallex",
        "expensify": 58,
        "key": "transparency",
        "name": "Transparency \u0026 trust",
        "weight": 7
      }
    ],
    "summary": "Airwallex Spend and Issuing scores 68.3 (B) on agent readiness against Expensify's 41.1 (E), and leads in 6 of 7 scored categories. Expensify leads on payments \u0026 pricing. Both do spend transactions.",
    "verdicts": {
      "airwallex": "Scoped API keys split read from write per resource, tokens last 30 minutes, and the sandbox opens at once with no contract. No OpenAPI spec was found, every Spend endpoint read is marked beta, the pricing page lists direct Spend API integration under the custom-priced Accelerate plan, and no SLA was found.",
      "expensify": "One endpoint exports reports through caller-written templates and creates expenses, reports, rules and workspace settings, with limits of 5 requests per 10 seconds published and a status page that tracks the API separately. There is no OpenAPI spec, changelog, SDK, pagination or idempotency key, and one credential pair carries the whole account's rights."
    }
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/compare/airwallex-vs-expensify",
    "json": "https://www.anchorterminal.com/compare/airwallex-vs-expensify.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/compare/airwallex-vs-expensify.md",
    "slim": "https://www.anchorterminal.com/compare/airwallex-vs-expensify.min.md"
  },
  "markdown": "Airwallex Spend and Issuing scores 68.3 (B) on agent readiness against Expensify's 41.1 (E), and leads in 6 of 7 scored categories. Expensify leads on payments \u0026 pricing. Both do spend transactions.\n\n- Airwallex Spend and Issuing: grade B, 68.3/100, rank #187 of 722. Markdown https://www.anchorterminal.com/tools/airwallex.md · JSON https://www.anchorterminal.com/api/v1/tools/airwallex.json\n- Expensify: grade E, 41.1/100, rank #684 of 722. Markdown https://www.anchorterminal.com/tools/expensify.md · JSON https://www.anchorterminal.com/api/v1/tools/expensify.json\n\n## Which one, for what\n\n### Airwallex Spend and Issuing (B)\n\nGood for: A company already banking with Airwallex in several currencies that wants an agent to issue cards with limits, read card transactions and expenses, load vendors, purchase orders and bills, and sync status to an ERP.\n\nAhead on:\n- Reliability, 77 against 62\n- Schema \u0026 documentation, 69 against 28\n- Agent ergonomics, 69 against 45\n- Security \u0026 auth, 84 against 34\n- Maintenance \u0026 community, 66 against 23\n- Transparency \u0026 trust, 78 against 58\n\nWatch for: No OpenAPI spec was found. The reference is a Markdown page per endpoint, and the CLI prints one endpoint's schema at a time\n\n### Expensify (E)\n\nGood for: A finance team already on Expensify that wants an agent to export approved reports to an accounting system, create expenses and reports, keep categories, tags and employees in step with an HR system, or mark reports reimbursed.\n\nAhead on:\n- Payments \u0026 pricing, 30 against 25\n\nWatch for: No OpenAPI spec, llms.txt, version number or changelog was found for the Integration Server API\n\n\n## Score by category\n\n| Category | Weight | Airwallex Spend and Issuing | Expensify | Edge |\n| --- | --- | --- | --- | --- |\n| Reliability | 16% (20 this run) | 77 | 62 | Airwallex Spend and Issuing +15 |\n| Performance | 10%, pending | pending | pending | not scored in this run |\n| Schema \u0026 documentation | 13% (16.2 this run) | 69 | 28 | Airwallex Spend and Issuing +41 |\n| Agent ergonomics | 13% (16.2 this run) | 69 | 45 | Airwallex Spend and Issuing +24 |\n| Security \u0026 auth | 14% (17.5 this run) | 84 | 34 | Airwallex Spend and Issuing +50 |\n| Payments \u0026 pricing | 10% (12.5 this run) | 25 | 30 | Expensify +5 |\n| Task success | 10%, pending | pending | pending | not scored in this run |\n| Maintenance \u0026 community | 7% (8.8 this run) | 66 | 23 | Airwallex Spend and Issuing +43 |\n| Transparency \u0026 trust | 7% (8.8 this run) | 78 | 58 | Airwallex Spend and Issuing +20 |\n| Negative events | ≤15 | 0 | 0 | |\n| **Total** | | **68.3 · B** | **41.1 · E** | |\n\n## Facts side by side\n\n| Fact | Airwallex Spend and Issuing | Expensify |\n| --- | --- | --- |\n| Kind | HTTP API | HTTP API |\n| Vendor | Airwallex | Expensify, Inc. |\n| Hosted endpoint | `https://api.airwallex.com` | `https://integrations.expensify.com/Integration-Server/ExpensifyIntegrations` |\n| Transports | HTTP | HTTP |\n| Auth | OAuth or key | OAuth or key |\n| Pricing | Freemium | Freemium |\n| x402 | no | no |\n| Licence | Proprietary service under Airwallex's service agreement and API terms. The plugin and skills repository is Apache-2.0 and `@airwallex/node-sdk` is MIT | Proprietary service under the Expensify Terms of Service. The Expensify app client and help articles on GitHub (Expensify/App) are MIT |\n| Read-only variant documented | no | yes |\n| llms.txt | yes | no |\n| Last release | 2026-09-30 | none |\n| Terms last updated | 2025-06-20 | 2026-09-10 |\n| Privacy policy last updated | no date given | 2026-04-01 |\n| Customer content may train models | yes | not found in the text |\n| Terms restrict automated access | yes | yes |\n| Terms restrict benchmarking | yes | not found in the text |\n| Terms or service can change without notice | not found in the text | yes |\n| Arbitration or class-action waiver | not found in the text | yes |\n| Popularity | 7 stars, 44k npm/wk | none |\n\n## Verdicts\n\n**Airwallex Spend and Issuing.** Scoped API keys split read from write per resource, tokens last 30 minutes, and the sandbox opens at once with no contract. No OpenAPI spec was found, every Spend endpoint read is marked beta, the pricing page lists direct Spend API integration under the custom-priced Accelerate plan, and no SLA was found.\n\n**Expensify.** One endpoint exports reports through caller-written templates and creates expenses, reports, rules and workspace settings, with limits of 5 requests per 10 seconds published and a status page that tracks the API separately. There is no OpenAPI spec, changelog, SDK, pagination or idempotency key, and one credential pair carries the whole account's rights.\n\n## Before you call either\n\n### Airwallex Spend and Issuing\n\n1. Exchange `x-client-id` and `x-api-key` at `POST /api/v1/authentication/login` once, then reuse the bearer token for 30 minutes. The login endpoint allows 100 requests a minute per key\n2. Create Spend keys with organisation-level permissions. With a key linked to several accounts, send `x-login-as` at login or the token carries no account permissions\n3. Send a fresh UUID as `request_id` on every create call and reuse the same value when retrying after a timeout\n4. Expect two pagination styles. Spend and card transaction events use the `page` bookmark with `page_after` and `page_before`. Cards and legacy transactions use `page_num` and `has_more`\n5. Card and expense lists default to the last 30 days. Pass both created-at bounds to read further back, and fetch a card singly to see its `authorization_controls`\n\n### Expensify\n\n1. POST `requestJobDescription` as a form field to the single endpoint. Keep it out of the URL query string, because it carries the secret\n2. Read `responseCode` in the body on every reply. HTTP status can be 200 on failure, and validation errors use 410\n3. Stay under 5 requests per 10 seconds and 20 per 60 seconds. No Retry-After header is documented, so space retries yourself\n4. Export in two calls. A `file` job returns a filename, then a `download` job fetches it. Amounts are in cents\n5. Don't retry a create job blindly. No idempotency key exists, so export and check before resending. Set `dry-run` to true when testing the Advanced Employee Updater\n\n## Questions\n\n### Which is better for AI agents, Airwallex Spend and Issuing or Expensify?\n\nAirwallex Spend and Issuing scores 68.3 (B) on agent readiness against Expensify's 41.1 (E), and leads in 6 of 7 scored categories. Expensify leads on payments \u0026 pricing.\n\n### Do Airwallex Spend and Issuing and Expensify need an API key?\n\nBoth take an API key or an OAuth sign-in.\n\n### Can an agent call Airwallex Spend and Issuing and Expensify without installing anything?\n\nYes. Airwallex Spend and Issuing has a hosted endpoint at https://api.airwallex.com and Expensify at https://integrations.expensify.com/Integration-Server/ExpensifyIntegrations.\n\n\n## For agents\n\n- This comparison as JSON: https://www.anchorterminal.com/compare/airwallex-vs-expensify.json, and with the fewest tokens: https://www.anchorterminal.com/compare/airwallex-vs-expensify.min.md\n- Over MCP at https://www.anchorterminal.com/mcp (no key): `compare_tools {\"a\": \"airwallex\", \"b\": \"expensify\"}`. From a terminal: `anchor compare airwallex expensify`\n- Each listing in full: https://www.anchorterminal.com/api/v1/tools/airwallex.json and https://www.anchorterminal.com/api/v1/tools/expensify.json\n\n## Other comparisons with Airwallex Spend and Issuing or Expensify\n\n- [Airwallex Spend and Issuing vs BILL](https://www.anchorterminal.com/compare/airwallex-vs-bill.md)\n- [Airwallex Spend and Issuing vs Brex](https://www.anchorterminal.com/compare/airwallex-vs-brex.md)\n- [Airwallex Spend and Issuing vs Mercury API](https://www.anchorterminal.com/compare/airwallex-vs-mercury.md)\n- [Airwallex Spend and Issuing vs Pleo API + MCP](https://www.anchorterminal.com/compare/airwallex-vs-pleo.md)\n- [Airwallex Spend and Issuing vs Ramp](https://www.anchorterminal.com/compare/airwallex-vs-ramp.md)\n- [Airwallex Spend and Issuing vs Spendesk API + MCP](https://www.anchorterminal.com/compare/airwallex-vs-spendesk.md)\n- [BILL vs Expensify](https://www.anchorterminal.com/compare/bill-vs-expensify.md)\n- [Brex vs Expensify](https://www.anchorterminal.com/compare/brex-vs-expensify.md)\n- [Expensify vs Mercury API](https://www.anchorterminal.com/compare/expensify-vs-mercury.md)\n- [Expensify vs Pleo API + MCP](https://www.anchorterminal.com/compare/expensify-vs-pleo.md)\n- [Expensify vs Ramp](https://www.anchorterminal.com/compare/expensify-vs-ramp.md)\n- [Expensify vs Spendesk API + MCP](https://www.anchorterminal.com/compare/expensify-vs-spendesk.md)\n",
  "meta": {
    "attribution": "Anchor Terminal (https://www.anchorterminal.com)",
    "docs": "https://www.anchorterminal.com/docs/",
    "generatedAt": "2026-10-08",
    "license": "CC-BY-4.0",
    "method": "https://www.anchorterminal.com/benchmark/",
    "methodology": "0.4",
    "openapi": "https://www.anchorterminal.com/openapi.json",
    "preview": false,
    "run": "2026-10-01",
    "runLabel": "October 2026 research run"
  },
  "page": {
    "breadcrumbs": [
      {
        "name": "Home",
        "url": "https://www.anchorterminal.com/"
      },
      {
        "name": "Compare",
        "url": "https://www.anchorterminal.com/compare/"
      },
      {
        "name": "Airwallex Spend and Issuing vs Expensify",
        "url": ""
      }
    ],
    "description": "Airwallex Spend and Issuing scores 68.3 (B) on agent readiness against Expensify's 41.1 (E), and leads in 6 of 7 scored categories. Expensify leads on payments \u0026 pricing. Both do spend transactions. Category scores, facts, verdicts and agent notes side by side.",
    "facts": [
      "Airwallex Spend and Issuing B 68.3",
      "Expensify E 41.1",
      "scores"
    ],
    "h1": "Airwallex Spend and Issuing vs Expensify",
    "image": "https://www.anchorterminal.com/assets/og/compare-airwallex-vs-expensify.png",
    "path": "/compare/airwallex-vs-expensify",
    "published": "2026-10-01",
    "section": "tools",
    "title": "Airwallex Spend and Issuing vs Expensify for AI agents",
    "toc": null,
    "updated": "2026-10-08",
    "url": "https://www.anchorterminal.com/compare/airwallex-vs-expensify"
  },
  "tokens": {
    "markdown": 2350,
    "slim": 780
  },
  "version": 1
}
