{
  "name": "Dwolla",
  "slug": "dwolla",
  "website_url": "https://www.dwolla.com",
  "vendor_description": "\"Move money like a fintech - without becoming one.\"",
  "categories": [
    "payouts"
  ],
  "summary": "Dwolla is a US-only REST API platform for ACH transfers, Same Day ACH, RTP, FedNow, and push-to-card payments, targeting marketplaces, lenders, insurers, and B2B platforms that need programmatic disbursements and payouts without holding a money transmitter license. Pricing is published and starts at $250 per month (Launch plan), scaling to $1,000 and $2,000 per month on annual commitments, with a free sandbox available for development. The API supports OAuth2, webhooks, and idempotency, and SDKs are available for TypeScript, Python, PHP, C#, Ruby, and Kotlin, with an MCP server also listed. The platform holds SOC 2 Type II certification, and real-time payment rails (RTP, FedNow) require additional approval to enable.",
  "capabilities": {
    "supported_actions": [
      "create_payout",
      "mass_payments",
      "batch_payouts",
      "ach",
      "same_day_ach",
      "rtp",
      "fednow",
      "push_to_card",
      "recipient_onboarding",
      "kyc_kyb",
      "bank_account_verification",
      "balance_check",
      "open_banking",
      "virtual_account_numbers",
      "webhooks",
      "facilitator_fees",
      "funding_source_management",
      "transfer_status",
      "transfer_cancel",
      "customer_create",
      "customer_verify",
      "beneficial_owner_verification",
      "document_upload",
      "wire_transfer"
    ],
    "supported_regions": [
      "US"
    ],
    "supported_languages": [],
    "input_types": [
      "ACH",
      "Same Day ACH",
      "RTP",
      "FedNow",
      "push-to-card (waitlist)",
      "wire transfer",
      "Dwolla Balance (digital wallet)",
      "virtual account numbers"
    ],
    "output_types": [
      "JSON",
      "webhook events",
      "payment status",
      "transfer lifecycle events",
      "reconciliation data",
      "funding source data",
      "customer verification status",
      "correlation IDs",
      "remittance data"
    ],
    "webhooks_supported": true,
    "sandbox_available": true,
    "sdk_languages": [
      "Node.js (legacy)",
      "TypeScript",
      "Python",
      "PHP",
      "C#",
      "Ruby",
      "Kotlin"
    ],
    "mcp_server_available": true
  },
  "integration": {
    "api_style": "rest",
    "base_url": "https://api.dwolla.com",
    "api_version": "v1",
    "versioning_scheme": "header",
    "stability": "ga",
    "deprecation_policy_url": "https://www.dwolla.com/legal/developer-tos",
    "auth_methods": [
      "oauth2"
    ],
    "auth_docs_url": "https://developers.dwolla.com/docs/balance/auth/client-credentials-flow",
    "idempotency_supported": true,
    "error_format": "vnd.error (HAL+JSON with top-level code/message and _embedded.errors array for validation failures)",
    "webhook_signing": "hmac_sha256",
    "webhook_events_url": "https://developers.dwolla.com/concepts/webhook-events",
    "rate_limit_requests": null,
    "rate_limit_window": null,
    "sdk_packages": [
      {
        "package": "dwolla-v2",
        "language": "Node.js (legacy)",
        "official": true,
        "repo_url": "https://github.com/Dwolla/dwolla-v2-node"
      },
      {
        "package": "dwolla",
        "language": "TypeScript",
        "official": true,
        "repo_url": "https://github.com/Dwolla/dwolla-typescript"
      },
      {
        "package": "dwollav2",
        "language": "Python",
        "official": true,
        "repo_url": "https://github.com/Dwolla/dwolla-v2-python"
      },
      {
        "package": "dwolla/dwolla-php",
        "language": "PHP",
        "official": true,
        "repo_url": "https://github.com/Dwolla/dwolla-php"
      },
      {
        "package": "Dwolla.Client",
        "language": "C#",
        "official": true,
        "repo_url": "https://github.com/Dwolla/dwolla-v2-csharp"
      },
      {
        "package": "dwolla_v2",
        "language": "Ruby",
        "official": true,
        "repo_url": "https://github.com/Dwolla/dwolla-v2-ruby"
      },
      {
        "package": "dwolla-v2-kotlin",
        "language": "Kotlin",
        "official": true,
        "repo_url": "https://github.com/Dwolla/dwolla-v2-kotlin"
      }
    ],
    "mcp_url": "https://github.com/Dwolla/dwolla-mcp",
    "quickstart_url": "https://developers.dwolla.com/docs/quickstart"
  },
  "pricing": {
    "pricing_model": "hybrid",
    "has_published_pricing": true,
    "starting_price_usd": null,
    "price_basis": null,
    "free_tier_available": false,
    "free_tier_limit": "Sandbox environment (free, no live money movement)",
    "free_tier_details": null,
    "minimum_commitment": "$250/month (Launch plan); $1,000/month (Scale plan, annual commitment); $2,000/month (Custom plan, annual commitment)",
    "self_serve_signup": true,
    "requires_sales_call": false,
    "requires_verification": true,
    "enterprise_plan_available": true,
    "price_points": [
      {
        "plan": "Pay-As-You-Go",
        "item": "per-transfer fee",
        "amount_usd": null,
        "amount_percent": "0.5000",
        "per": "transfer",
        "currency": "USD",
        "source_url": "https://www.nerdwallet.com/business/software/learn/dwolla"
      },
      {
        "plan": "Pay-As-You-Go",
        "item": "minimum per-transfer fee",
        "amount_usd": "0.0500",
        "amount_percent": null,
        "per": "transfer",
        "currency": "USD",
        "source_url": "https://www.nerdwallet.com/business/software/learn/dwolla"
      },
      {
        "plan": "Pay-As-You-Go",
        "item": "maximum per-transfer fee",
        "amount_usd": "5.0000",
        "amount_percent": null,
        "per": "transfer",
        "currency": "USD",
        "source_url": "https://www.nerdwallet.com/business/software/learn/dwolla"
      },
      {
        "plan": "Launch",
        "item": "monthly platform fee",
        "amount_usd": "250.0000",
        "amount_percent": null,
        "per": "month",
        "currency": "USD",
        "source_url": "https://www.nerdwallet.com/business/software/learn/dwolla"
      },
      {
        "plan": "Launch",
        "item": "optional dedicated support add-on",
        "amount_usd": "500.0000",
        "amount_percent": null,
        "per": "month",
        "currency": "USD",
        "source_url": "https://www.nerdwallet.com/business/software/learn/dwolla"
      },
      {
        "plan": "Launch",
        "item": "additional use case add-on",
        "amount_usd": "250.0000",
        "amount_percent": null,
        "per": "month",
        "currency": "USD",
        "source_url": "https://www.nerdwallet.com/business/software/learn/dwolla"
      },
      {
        "plan": "Scale",
        "item": "monthly platform fee (starting)",
        "amount_usd": "1000.0000",
        "amount_percent": null,
        "per": "month",
        "currency": "USD",
        "source_url": "https://www.nerdwallet.com/business/software/learn/dwolla"
      },
      {
        "plan": "Scale",
        "item": "higher transfer volume add-on",
        "amount_usd": "500.0000",
        "amount_percent": null,
        "per": "month",
        "currency": "USD",
        "source_url": "https://www.nerdwallet.com/business/software/learn/dwolla"
      },
      {
        "plan": "Custom",
        "item": "monthly platform fee (starting)",
        "amount_usd": "2000.0000",
        "amount_percent": null,
        "per": "month",
        "currency": "USD",
        "source_url": "https://www.nerdwallet.com/business/software/learn/dwolla"
      }
    ]
  },
  "compliance": {
    "soc2": "type_2",
    "hipaa": null,
    "gdpr": null,
    "iso_27001": null,
    "pci_dss": null,
    "sla_published": false,
    "sla_url": null,
    "data_retention_policy_url": "https://www.dwolla.com/legal/privacy",
    "documented_rate_limits": "Quick successive transfers sourced from the same Dwolla Wallet may receive HTTP 429. Volume-based limits trigger HTTP 429 errors that persist for a 5-minute window when endpoint thresholds are exceeded. Exact numeric thresholds are not publicly specified. Webhook subscriptions: up to 5 in Production, 10 in Sandbox. Mass payments: up to 5,000 items per batch, processed at 0.5–1 sec/item.",
    "known_restrictions": [
      "US-only: accounts limited to US legal residents; payments cannot be sent to accounts outside the United States",
      "Dwolla is not a money transmitter - all fund transfers are performed by regulated Financial Institution Partners",
      "RTP and FedNow are premium features requiring Dwolla approval to enable",
      "Virtual Account Numbers are premium features requiring sales approval; VANs cannot be used simultaneously with RTP or wire features",
      "Same Day ACH clearing is a premium feature",
      "Business Verified Customers have a $10,000 per transaction transfer limit via drop-in components",
      "No international/cross-border payments; no FX/SWIFT/SEPA support",
      "Push-to-card is waitlist-only (not generally available)",
      "No 1099 or DAC7 tax form collection documented",
      "Sandbox is self-serve; production requires sales engagement"
    ]
  },
  "developer": {
    "docs_url": "https://developers.dwolla.com/",
    "api_reference_url": "https://developers.dwolla.com/docs",
    "openapi_spec_url": null,
    "postman_collection_url": null,
    "changelog_url": null,
    "status_page_url": "https://status.dwolla.com",
    "llms_txt_url": "https://www.dwolla.com/llms.txt",
    "markdown_docs_url": null,
    "rendering": "static"
  },
  "adoption": {
    "launched_at": "2010-12-01",
    "ga_date": null,
    "github_stars": null,
    "github_stars_at": null,
    "notable_customers": [
      "Routable",
      "BasicBlock",
      "Extra",
      "Florida Education Association"
    ]
  },
  "scores": {
    "agent_friendliness": 75,
    "pricing_transparency": 60,
    "setup_speed": 75,
    "docs_quality": 45,
    "procurement_friction": 75,
    "trust_readiness": 25,
    "best_for": [
      "Regulated or enterprise workloads - compliance attestations and an enterprise plan",
      "AI agents and automation - an agent-ready surface (MCP / llms.txt)",
      "Teams needing broad API coverage out of the box"
    ],
    "avoid_if": [
      "You want to try it free before paying"
    ]
  },
  "sources": [
    {
      "field": "requires_sales_call",
      "url": "https://www.dwolla.com/pricing/",
      "excerpt": "Tell us how you move money and we'll show you how Dwolla fits — and what it costs.",
      "confidence": "medium"
    },
    {
      "field": "soc2",
      "url": "https://www.dwolla.com/resources/dwolla-infosec-practices",
      "excerpt": "security program as reported in our SSAE 18 SOC 2 Type II Report",
      "confidence": "high"
    },
    {
      "field": "categories",
      "url": "https://www.dwolla.com",
      "excerpt": "Dwolla is purpose-built for platforms and enterprises running high volumes of bank payments.",
      "confidence": "high"
    },
    {
      "field": "pricing_model",
      "url": "https://www.nerdwallet.com/business/software/learn/dwolla",
      "excerpt": "Pay-As-You-Go: 0.5% per transfer (minimum 5 cents, maximum $5). Launch Plan: Starting at $250 per month. Scale Plan: Starting at $1,000 per month. Custom Plan: Starting at $2,000 per month.",
      "confidence": "high"
    },
    {
      "field": "has_published_pricing",
      "url": "https://www.nerdwallet.com/business/software/learn/dwolla",
      "excerpt": "Pay-As-You-Go: 0.5% per transfer (minimum 5 cents, maximum $5). Launch Plan: Starting at $250 per month. Scale Plan: Starting at $1,000 per month. Custom Plan: Starting at $2,000 per month.",
      "confidence": "high"
    },
    {
      "field": "minimum_commitment",
      "url": "https://www.nerdwallet.com/business/software/learn/dwolla",
      "excerpt": "Launch Plan: Starting at $250 per month. Scale Plan: Starting at $1,000 per month. Flat monthly pricing with dedicated support included. Annual commitment required.",
      "confidence": "high"
    },
    {
      "field": "vendor_description",
      "url": "https://www.dwolla.com",
      "excerpt": "Move money like a fintech—without becoming one.",
      "confidence": "high"
    },
    {
      "field": "categories",
      "url": "https://www.dwolla.com/features/ach-automation",
      "excerpt": "ACH Automation for High-Volume Payments",
      "confidence": "high"
    },
    {
      "field": "pricing_model",
      "url": "https://www.dwolla.com/pricing/",
      "excerpt": "Custom pricing built around how you move money. Pricing is tailored to your transaction volume, rails, and integration needs — not a one-size-fits-all tier.",
      "confidence": "high"
    },
    {
      "field": "free_tier_available",
      "url": "https://www.nerdwallet.com/business/software/learn/dwolla",
      "excerpt": "Pay-As-You-Go: No setup fees or monthly minimums. Transaction-based pricing with payment automation. No dedicated support.",
      "confidence": "high"
    },
    {
      "field": "requires_sales_call",
      "url": "https://www.nerdwallet.com/business/software/learn/dwolla",
      "excerpt": "Pay-As-You-Go: No setup fees or monthly minimums. Transaction-based pricing with payment automation.",
      "confidence": "medium"
    },
    {
      "field": "soc2",
      "url": "https://www.dwolla.com/security/",
      "excerpt": "Dwolla maintains a SOC 2 type 2 report focused on the Security trust principle",
      "confidence": "high"
    },
    {
      "field": "hipaa",
      "url": "https://www.dwolla.com/security/",
      "excerpt": "Dwolla maintains a SOC 2 type 2 report focused on the Security trust principle",
      "confidence": "high"
    },
    {
      "field": "iso_27001",
      "url": "https://www.dwolla.com/security/",
      "excerpt": "Dwolla maintains a SOC 2 type 2 report focused on the Security trust principle",
      "confidence": "high"
    },
    {
      "field": "sla_published",
      "url": "https://www.dwolla.com/legal/platform-agreement/",
      "excerpt": "DWOLLA MAKES NO REPRESENTATION OR WARRANTY THAT THE DWOLLA PLATFORM SERVICES WILL MEET YOUR REQUIREMENTS OR BE CONTINUOUS, UNINTERRUPTED, OR ERROR-FREE.",
      "confidence": "high"
    },
    {
      "field": "documented_rate_limits",
      "url": "https://developers.dwolla.com/docs/balance/api-reference/api-fundamentals/rate-limits",
      "excerpt": "Quick successive transfers sourced from the same Dwolla Wallet associated with a Dwolla Account or Customer may receive an HTTP 429. When endpoint thresholds are exceeded, the system responds with HTTP 429 errors that persist for a 5-minute window.",
      "confidence": "high"
    },
    {
      "field": "gdpr",
      "url": "https://www.dwolla.com/security/",
      "excerpt": "Dwolla maintains a SOC 2 type 2 report focused on the Security trust principle",
      "confidence": "high"
    },
    {
      "field": "pci_dss",
      "url": "https://www.dwolla.com/features/tokenization",
      "excerpt": "Dwolla uses tokenization to decrease the value of financial transaction messages",
      "confidence": "medium"
    },
    {
      "field": "sla_published",
      "url": "https://www.dwolla.com/solutions/enterprise/",
      "excerpt": "99.9% Platform Uptime",
      "confidence": "high"
    },
    {
      "field": "documented_rate_limits",
      "url": "https://developers.dwolla.com/docs/balance/api-reference/mass-payments",
      "excerpt": "Each item is processed one after the other, at a rate between 0.5 sec. - 1 sec. / item. API supports up to 5,000 payments in a single request.",
      "confidence": "high"
    },
    {
      "field": "supported_actions",
      "url": "https://developers.dwolla.com/docs/balance/api-reference/mass-payments",
      "excerpt": "Mass payments process asynchronously after submission. Each item is processed one after the other, at a rate between 0.5 sec. - 1 sec. / item. A 1,000-item batch typically completes in 8-16 minutes. The API supports up to 5,000 payments in a single request.",
      "confidence": "high"
    },
    {
      "field": "sandbox_available",
      "url": "https://accounts-sandbox.dwolla.com/sign-up",
      "excerpt": "To set up your Sandbox account, all you will need is a valid email address. Dwolla automatically generates API credentials upon sign-up, giving you immediate control and access.",
      "confidence": "high"
    },
    {
      "field": "sdk_languages",
      "url": "https://developers.dwolla.com/sdks-tools",
      "excerpt": "Dwolla provides official client libraries for Node.js (dwolla-v2), Ruby (dwolla_v2), Python (dwollav2), PHP (dwolla-php), C# (Dwolla.Client), Kotlin (dwolla-v2-kotlin), TypeScript (dwolla)",
      "confidence": "high"
    },
    {
      "field": "mcp_server_available",
      "url": "https://github.com/Dwolla/dwolla-mcp",
      "excerpt": "Model Context Protocol (MCP) Server for the Dwolla API — enables natural language interactions with payments infrastructure.",
      "confidence": "high"
    },
    {
      "field": "input_types",
      "url": "https://www.dwolla.com/features/",
      "excerpt": "Send funds instantly via the RTP® Network and FedNow® Service",
      "confidence": "high"
    },
    {
      "field": "known_restrictions",
      "url": "https://www.dwolla.com/legal/tos/",
      "excerpt": "Cannot send payments to any account not located within the United States. Linked Payment Accounts must be at state- or federally-chartered financial institutions in the United States.",
      "confidence": "high"
    },
    {
      "field": "enterprise_plan_available",
      "url": "https://www.dwolla.com/solutions/enterprise/",
      "excerpt": "99.9% Platform Uptime",
      "confidence": "high"
    },
    {
      "field": "auth_methods",
      "url": "https://developers.dwolla.com/docs/balance/auth/client-credentials-flow",
      "excerpt": "Using the client credentials grant flow, your application will obtain authorization to interact with the API on its own behalf. This is a server-to-server flow with interaction between an application and the Dwolla API; also known as 2-legged OAuth.",
      "confidence": "high"
    },
    {
      "field": "auth_docs_url",
      "url": "https://developers.dwolla.com/docs/balance/auth/client-credentials-flow",
      "excerpt": "OAuth 2.0 - Generate an Access Token",
      "confidence": "high"
    },
    {
      "field": "api_version",
      "url": "https://developers.dwolla.com/docs/balance/api-reference/api-fundamentals/making-requests-and-authentication",
      "excerpt": "The documentation specifies version 1 through the Accept header: \"Accept: application/vnd.dwolla.v1.hal+json\"",
      "confidence": "high"
    },
    {
      "field": "sdk_packages",
      "url": "https://developers.dwolla.com/docs/sdks-tools",
      "excerpt": "Official SDK packages available for: TypeScript (npm), PHP (Composer), Python (pip), C#, and Ruby",
      "confidence": "high"
    },
    {
      "field": "sdk_packages",
      "url": "https://github.com/Dwolla/dwolla-typescript",
      "excerpt": "npm add dwolla",
      "confidence": "high"
    },
    {
      "field": "mcp_url",
      "url": "https://developers.dwolla.com/docs/sdks-tools",
      "excerpt": "The documentation references a \"Model Context Protocol server for AI assistants to interact with the Dwolla API\" available at github.com/Dwolla/dwolla-mcp",
      "confidence": "high"
    },
    {
      "field": "idempotency_supported",
      "url": "https://developers.dwolla.com/docs/balance/api-reference/api-fundamentals/idempotency-key",
      "excerpt": "Multiple POSTs with the same idempotency key and request body won't result in multiple resources being created. It is recommended to use a random value for the idempotency key, like a UUID (e.g., Idempotency-Key: d2adcbab-4e4e-430b-9181-ac9346be723a).",
      "confidence": "high"
    },
    {
      "field": "webhook_signing",
      "url": "https://developers.dwolla.com/docs/balance/webhooks/process-validate",
      "excerpt": "Dwolla includes a X-Request-Signature-SHA-256 header on each webhook request which is a SHA-256 HMAC hash of the request body with the key being the webhook secret you passed in when you created the webhook subscription.",
      "confidence": "high"
    },
    {
      "field": "requires_verification",
      "url": "https://www.dwolla.com/updates/guide-customer-identification-program-payments-api",
      "excerpt": "CIP verification refers to a Customer Identification Program (CIP), which every financial institution is required by U.S. law to implement, including collecting and validating information about the identity of customers opening accounts on your platform.",
      "confidence": "high"
    },
    {
      "field": "data_retention_policy_url",
      "url": "https://www.dwolla.com/legal/privacy",
      "excerpt": "Dwolla retains personal information for so long as we are providing the Dwolla Services to you or for a period during which we reasonably anticipate providing the Services.",
      "confidence": "high"
    },
    {
      "field": "notable_customers",
      "url": "https://www.dwolla.com/case-studies",
      "excerpt": "Case studies featuring Routable (B2B payments), BasicBlock (truck driver disbursements), Extra (credit-building fintech), Florida Education Association (union dues collection).",
      "confidence": "medium"
    },
    {
      "field": "rate_limit_requests",
      "url": "https://developers.dwolla.com/docs/api-reference/api-fundamentals/rate-limits",
      "excerpt": "These thresholds are defined as outside the range of what we consider normal API usage — no specific numeric thresholds are published.",
      "confidence": "high"
    },
    {
      "field": "supported_actions",
      "url": "https://developers.dwolla.com/docs/balance/api-reference/transfers",
      "excerpt": "Create, retrieve, list, and cancel transfers. The resource supports moving funds between accounts.",
      "confidence": "high"
    },
    {
      "field": "supported_regions",
      "url": "https://www.dwolla.com/legal/tos/",
      "excerpt": "Accounts limited to legal residents of the United States. Linked Payment Accounts must be at state- or federally-chartered financial institutions in the United States. Cannot send payments to any account not located within the United States.",
      "confidence": "high"
    },
    {
      "field": "self_serve_signup",
      "url": "https://developers.dwolla.com/guides/sandbox",
      "excerpt": "There's no need to contact Dwolla to generate API credentials and configure a test account. Dwolla automatically generates them upon sign-up.",
      "confidence": "high"
    },
    {
      "field": "mcp_server_available",
      "url": "https://developers.dwolla.com/sdks-tools",
      "excerpt": "Model Context Protocol server for AI assistants to interact with the Dwolla API, enabling natural language interactions with payment infrastructure capabilities.",
      "confidence": "high"
    },
    {
      "field": "webhooks_supported",
      "url": "https://developers.dwolla.com/docs/balance/webhooks",
      "excerpt": "Dwolla sends HTTP POST requests to a subscribed URL when events occur. Each webhook contains an event with links to relevant resources.",
      "confidence": "high"
    },
    {
      "field": "input_types",
      "url": "https://www.dwolla.com",
      "excerpt": "ACH (Standard and Same Day), RTP® Network (Real-Time Payments via The Clearing House), FedNow® Service (Federal Reserve), Push to Card (waitlist phase)",
      "confidence": "high"
    },
    {
      "field": "known_restrictions",
      "url": "https://www.dwolla.com/legal/tos/",
      "excerpt": "Dwolla is not a money transmitter and does not perform money transmission or money transfer services. All payment processing is handled by regulated Financial Institution Partners.",
      "confidence": "high"
    },
    {
      "field": "enterprise_plan_available",
      "url": "https://www.nerdwallet.com/business/software/learn/dwolla",
      "excerpt": "Custom Plan: Starting at $2,000 per month. Volume-based pricing negotiated with sales representative. Dedicated support included. Premium features with quote-based pricing for higher transfer volumes.",
      "confidence": "high"
    },
    {
      "field": "auth_methods",
      "url": "https://developers.dwolla.com/docs/balance/api-reference/api-fundamentals/making-requests-and-authentication",
      "excerpt": "All requests require either an OAuth access token or a client_id and client_secret in order to authenticate with the API.",
      "confidence": "high"
    },
    {
      "field": "base_url",
      "url": "https://developers.dwolla.com/docs/balance/api-reference/api-fundamentals/making-requests-and-authentication",
      "excerpt": "Production: https://api.dwolla.com — Sandbox: https://api-sandbox.dwolla.com",
      "confidence": "high"
    },
    {
      "field": "versioning_scheme",
      "url": "https://developers.dwolla.com/docs/balance/api-reference/api-fundamentals/making-requests-and-authentication",
      "excerpt": "Dwolla uses content negotiation via HTTP headers rather than URL-based versioning. The version appears in the Accept and Content-Type headers (e.g., vnd.dwolla.v1.hal+json).",
      "confidence": "high"
    },
    {
      "field": "sdk_packages",
      "url": "https://github.com/Dwolla/dwolla-v2-node",
      "excerpt": "npm install --save dwolla-v2",
      "confidence": "high"
    },
    {
      "field": "mcp_url",
      "url": "https://github.com/Dwolla/dwolla-mcp",
      "excerpt": "Model Context Protocol (MCP) Server for the Dwolla API — enables natural language interactions with payments infrastructure.",
      "confidence": "high"
    },
    {
      "field": "quickstart_url",
      "url": "https://developers.dwolla.com/docs/quickstart",
      "excerpt": "Make your first authenticated Dwolla API call in under 5 minutes.",
      "confidence": "high"
    },
    {
      "field": "error_format",
      "url": "https://developers.dwolla.com/docs/balance/api-reference/api-fundamentals/errors",
      "excerpt": "Error responses are closely aligned with the vnd.error spec. Top-level error code of ValidationError returns _embedded.errors array where each object has code, message, path, and _links fields.",
      "confidence": "high"
    },
    {
      "field": "webhook_events_url",
      "url": "https://developers.dwolla.com/concepts/webhook-events",
      "excerpt": "Dwolla webhook events — complete list of events available in the Dwolla API",
      "confidence": "medium"
    },
    {
      "field": "requires_verification",
      "url": "https://developers.dwolla.com/guides/business-verified-customer/handle-verification-statuses",
      "excerpt": "The business will need to provide information to verify the identities of its ultimate beneficial owners, which means any natural person who owns 25% or more of the business.",
      "confidence": "high"
    },
    {
      "field": "launched_at",
      "url": "https://en.wikipedia.org/wiki/Dwolla",
      "excerpt": "After raising $1.31 million in funding, Dwolla launched in the United States in December 2010 to a few small banks and retailers.",
      "confidence": "high"
    },
    {
      "field": "starting_price_usd",
      "url": "https://www.dwolla.com/pricing/",
      "excerpt": "Custom pricing built around how you move money — Pricing is tailored to your transaction volume, rails, and integration needs — not a one-size-fits-all tier.",
      "confidence": "high"
    },
    {
      "field": "deprecation_policy_url",
      "url": "https://www.dwolla.com/legal/developer-tos",
      "excerpt": "Dwolla may change or discontinue any Dwolla APIs, impose limits on certain features of the Dwolla APIs, or restrict access to all or part of the Dwolla APIs, upon notice to you.",
      "confidence": "low"
    }
  ],
  "fields_not_found": [
    "hipaa",
    "gdpr",
    "iso_27001",
    "pci_dss",
    "fx_markup",
    "rate_limit_requests",
    "rate_limit_window",
    "starting_price_usd",
    "price_basis",
    "sla_url",
    "ga_date",
    "deprecation_policy_url (no dedicated deprecation page found - nearest is developer ToS)"
  ],
  "source_confidence": "high",
  "last_verified_at": "2026-06-21T00:00:00.000Z",
  "contribute": {
    "note": "This data is crowd-editable. Suggest corrections or leave a review via these endpoints - no auth required, requests are rate-limited, and every submission is reviewed before it goes live. For a field edit, {field} is any key in this response and a citation is required.",
    "endpoints": [
      {
        "action": "review",
        "label": "Leave a review or comment",
        "method": "POST",
        "url": "https://apio.sh/api/feedback/dwolla",
        "example_body": {
          "kind": "review",
          "rating": 5,
          "body": "Your experience with this API…"
        }
      },
      {
        "action": "field_edit",
        "label": "Suggest a correction to a field (cite a source)",
        "method": "POST",
        "url": "https://apio.sh/api/suggest/dwolla/{field}",
        "example_body": {
          "value": "corrected value",
          "citations": [
            {
              "url": "https://source.example/page",
              "excerpt": "supporting quote"
            }
          ],
          "note": "what changed and why"
        }
      },
      {
        "action": "new_api",
        "label": "Suggest a new API to add (only name is required - send as much as you can cite)",
        "method": "POST",
        "url": "https://apio.sh/api/suggest/api",
        "example_body": {
          "value": {
            "name": "Acme Email API",
            "website_url": "https://acme.example",
            "vendor_name": "Acme",
            "categories": [
              "email"
            ],
            "pricing_model": "usage_based",
            "has_published_pricing": true,
            "free_tier_available": true,
            "price_points": [
              {
                "plan": "Pay as you go",
                "item": "1,000 emails",
                "amount_usd": 1,
                "per": "1,000 emails",
                "source_url": "https://acme.example/pricing"
              }
            ],
            "soc2": "type_2",
            "docs_url": "https://docs.acme.example"
          },
          "citations": [
            {
              "url": "https://acme.example/pricing",
              "excerpt": "$1 per 1,000 emails"
            }
          ]
        },
        "value_schema": [
          {
            "field": "name",
            "type": "string",
            "label": "Product name (the only required field)"
          },
          {
            "field": "website_url",
            "type": "string",
            "label": "Marketing website URL"
          },
          {
            "field": "vendor_name",
            "type": "string",
            "label": "Company/vendor name behind the product"
          },
          {
            "field": "vendor_description",
            "type": "string",
            "label": "One-line description, quoted from the vendor"
          },
          {
            "field": "categories",
            "type": "string[]",
            "label": "Category/leaf slugs it belongs to, e.g. [\"email\",\"sms\"]"
          },
          {
            "field": "primary_use_cases",
            "type": "string[]",
            "label": "What it's used for"
          },
          {
            "field": "supported_actions",
            "type": "string[]",
            "label": "Concrete API actions/capabilities"
          },
          {
            "field": "supported_regions",
            "type": "string[]",
            "label": "Countries/regions/data-residency"
          },
          {
            "field": "supported_languages",
            "type": "string[]",
            "label": "Human/spoken languages supported"
          },
          {
            "field": "input_types",
            "type": "string[]",
            "label": "Accepted input types/formats"
          },
          {
            "field": "output_types",
            "type": "string[]",
            "label": "Produced output types/formats"
          },
          {
            "field": "webhooks_supported",
            "type": "bool",
            "label": "Supports webhooks?"
          },
          {
            "field": "sandbox_available",
            "type": "bool",
            "label": "Dedicated sandbox/test mode?"
          },
          {
            "field": "sdk_languages",
            "type": "string[]",
            "label": "Languages with an official SDK"
          },
          {
            "field": "mcp_server_available",
            "type": "bool",
            "label": "Official MCP server?"
          },
          {
            "field": "pricing_model",
            "type": "enum",
            "label": "Pricing model",
            "values": [
              "usage_based",
              "subscription",
              "seat_based",
              "hybrid",
              "contact_sales"
            ]
          },
          {
            "field": "has_published_pricing",
            "type": "bool",
            "label": "Concrete prices published publicly?"
          },
          {
            "field": "free_tier_available",
            "type": "bool",
            "label": "Recurring/perpetual free tier (not a trial)?"
          },
          {
            "field": "free_tier_details",
            "type": "string",
            "label": "What the free tier includes"
          },
          {
            "field": "minimum_commitment",
            "type": "string",
            "label": "Any stated minimum spend/commitment"
          },
          {
            "field": "self_serve_signup",
            "type": "bool",
            "label": "Get an API key without talking to sales?"
          },
          {
            "field": "requires_sales_call",
            "type": "bool",
            "label": "Does going live require sales?"
          },
          {
            "field": "enterprise_plan_available",
            "type": "bool",
            "label": "Named enterprise tier?"
          },
          {
            "field": "starting_price_usd",
            "type": "number",
            "label": "Lowest published paid entry price (USD number)"
          },
          {
            "field": "price_basis",
            "type": "string",
            "label": "Unit the starting price is per, e.g. '1,000 emails'"
          },
          {
            "field": "free_tier_limit",
            "type": "string",
            "label": "Free-tier ceiling in literal terms"
          },
          {
            "field": "price_points",
            "type": "object[]",
            "label": "Structured prices: [{plan,item,amount_usd,amount_percent,per,source_url}]"
          },
          {
            "field": "soc2",
            "type": "enum",
            "label": "SOC 2 status",
            "values": [
              "type_2",
              "type_1",
              "in_progress",
              "none",
              "unknown"
            ]
          },
          {
            "field": "hipaa",
            "type": "bool",
            "label": "HIPAA (e.g. BAA available)?"
          },
          {
            "field": "gdpr",
            "type": "bool",
            "label": "GDPR compliance stated?"
          },
          {
            "field": "iso_27001",
            "type": "bool",
            "label": "ISO 27001 certified?"
          },
          {
            "field": "pci_dss",
            "type": "bool",
            "label": "PCI DSS compliant?"
          },
          {
            "field": "sla_published",
            "type": "bool",
            "label": "Published SLA / uptime commitment?"
          },
          {
            "field": "documented_rate_limits",
            "type": "string",
            "label": "Documented rate limits, quoted"
          },
          {
            "field": "known_restrictions",
            "type": "string[]",
            "label": "Notable documented restrictions/limits"
          },
          {
            "field": "auth_methods",
            "type": "string[]",
            "label": "Auth methods",
            "values": [
              "api_key",
              "oauth2",
              "jwt",
              "basic",
              "hmac_signature",
              "mtls",
              "session"
            ]
          },
          {
            "field": "api_style",
            "type": "enum",
            "label": "Primary API style",
            "values": [
              "rest",
              "graphql",
              "grpc",
              "soap",
              "websocket"
            ]
          },
          {
            "field": "base_url",
            "type": "string",
            "label": "API root/base URL"
          },
          {
            "field": "api_version",
            "type": "string",
            "label": "Current API version string"
          },
          {
            "field": "quickstart_url",
            "type": "string",
            "label": "Quickstart / hello-world URL"
          },
          {
            "field": "docs_url",
            "type": "string",
            "label": "Developer docs URL"
          },
          {
            "field": "api_reference_url",
            "type": "string",
            "label": "API reference URL"
          },
          {
            "field": "openapi_spec_url",
            "type": "string",
            "label": "OpenAPI spec URL"
          },
          {
            "field": "changelog_url",
            "type": "string",
            "label": "Changelog URL"
          },
          {
            "field": "status_page_url",
            "type": "string",
            "label": "Status page URL"
          },
          {
            "field": "notable_customers",
            "type": "string[]",
            "label": "Named public customers"
          },
          {
            "field": "launched_at",
            "type": "string",
            "label": "Launch date (ISO date or year)"
          }
        ]
      },
      {
        "action": "token",
        "label": "Optional - raise your rate limit",
        "method": "GET",
        "url": "https://apio.sh/api/feedback/token"
      }
    ]
  }
}