Dwolla sandbox simulations API

Sandbox-only operations for simulating processing of bank transfers

Operations 1

POST /sandbox-simulations Sandbox simulations (bank transfers, VAN transfers, or customer verification… #

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/dwolla-sandbox-simulations-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

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

dwolla-sandbox-simulations-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Dwolla sandbox simulations API
  description: Dwolla API Documentation
  contact:
    name: Dwolla Developer Relations Team
    url: https://developers.dwolla.com
    email: api@dwolla.com
  version: '2.0'
  termsOfService: https://www.dwolla.com/legal/tos/
  license:
    name: MIT
    url: https://github.com/Dwolla/dwolla-openapi/blob/master/LICENSE
servers:
- url: https://api.dwolla.com
  description: Production server
- url: https://api-sandbox.dwolla.com
  description: Sandbox server
security:
- clientCredentials: []
tags:
- name: sandbox simulations
  description: Sandbox-only operations for simulating processing of bank transfers
paths:
  /sandbox-simulations:
    post:
      tags:
      - sandbox simulations
      summary: Sandbox simulations (bank transfers, VAN transfers, or customer verification…
      description: 'Sandbox-only endpoint with three modes:


        **Simulate bank transfer processing** — Omit the body or send an empty JSON object. Processes or fails

        the last 500 bank transfers on the authorized application or Sandbox account (and initiated micro-deposits).

        If webhooks are configured, events are delivered. If a bank-to-bank transaction involves two users,

        call this twice to process debit and credit sides. Returns **200** with a HAL document including `total`.


        **Simulate VAN (virtual) transfers** — Send a JSON body with `type` set to `virtual` and a `transfers`

        array (up to 10 items). External transfers are created and processed immediately. Returns **202 Accepted**.


        **Simulate verification directives** — For a business Verified Customer in **`retry`** or **`document`**

        status, send `type`: `customer-verification`, `_links.customer.href` pointing at that customer, and

        `errorCode` set to one of: `PersonalIDRequired`, `POBoxNotAllowed`, `AddressNotAssociatedWithBusiness`,

        `EINDocumentRequired`. Returns **200** with HAL `_links.self` and `errorCode`. Then **GET** the Customer;

        the same code appears in `_embedded.errors` for end-to-end testing.'
      operationId: simulateBankTransferProcessing
      x-speakeasy-name-override: simulate
      x-codeSamples:
      - lang: bash
        source: 'POST https://api-sandbox.dwolla.com/sandbox-simulations

          Accept: application/vnd.dwolla.v1.hal+json

          Content-Type: application/vnd.dwolla.v1.hal+json

          Authorization: Bearer {Your access token}

          '
      parameters:
      - $ref: '#/components/parameters/Accept'
      requestBody:
        required: false
        description: 'Optional. For bank transfer processing, omit the body or send `{}`. For VAN simulation, send `type`: `virtual` and a `transfers` array. For verification

          directives, send `type`: `customer-verification`, `_links.customer`, and `errorCode` (see schema).

          '
        content:
          application/vnd.dwolla.v1.hal+json:
            schema:
              $ref: '#/components/schemas/SandboxSimulationRequest'
      responses:
        '200':
          description: 'Success. **Bank transfer processing** returns HAL with `total`. **Customer verification directives**

            return HAL `_links.self` and `errorCode` (retrieve the Customer for `_embedded.errors`).

            '
          content:
            application/vnd.dwolla.v1.hal+json:
              schema:
                oneOf:
                - $ref: '#/components/schemas/SandboxSimulationBankProcessingResponse'
                - $ref: '#/components/schemas/SandboxSimulationCustomerVerificationResponse'
              examples:
                bankTransferProcessing:
                  summary: Bank transfer processing
                  value:
                    _links:
                      self:
                        href: https://api-sandbox.dwolla.com/sandbox-simulations
                        type: application/vnd.dwolla.v1.hal+json
                        resource-type: sandbox-simulation
                    total: 8
                customerVerificationDirective:
                  summary: Customer verification directive simulation
                  value:
                    _links:
                      self:
                        href: https://api-sandbox.dwolla.com/sandbox-simulations
                        type: application/vnd.dwolla.v1.hal+json
                        resource-type: sandbox-simulation
                    errorCode: AddressNotAssociatedWithBusiness
        '202':
          description: 'Accepted. Virtual (VAN) transfer simulation: requested transfers were accepted for immediate

            processing in Sandbox.

            '
        '400':
          description: 'Bad Request.

            '
          content:
            application/vnd.dwolla.v1.hal+json:
              schema:
                $ref: '#/components/schemas/BadRequestError'
        '401':
          description: unauthorized
          content:
            application/vnd.dwolla.v1.hal+json:
              schema:
                type: object
                properties:
                  code:
                    type: string
                    example: InvalidAccessToken
                  message:
                    type: string
                    example: Invalid access token.
        '403':
          description: forbidden
          content:
            application/vnd.dwolla.v1.hal+json:
              schema:
                type: object
                properties:
                  code:
                    type: string
                    example: forbidden
                  message:
                    type: string
                    example: Not authorized to simulate transfer processing.
components:
  schemas:
    BadRequestError:
      title: BadRequestError
      description: Error response schema for 400 Bad Request
      type: object
      required:
      - code
      - message
      properties:
        code:
          type: string
          example: BadRequest
        message:
          type: string
          example: The request body contains bad syntax or is incomplete.
    HalLink:
      title: HalLink
      type: object
      properties:
        href:
          type: string
          example: https://api.dwolla.com
        type:
          type: string
          example: application/vnd.dwolla.v1.hal+json
        resource-type:
          type: string
          example: resource-type
    SandboxSimulationBankProcessingRequest:
      title: SandboxSimulationBankProcessingRequest
      description: 'Omit the request body or send an empty JSON object (`{}`). Triggers processing (or failure) for the last

        500 bank transfers on the authorized application or Sandbox account, and initiated micro-deposits.

        Successful response is 200 with a HAL body including total.

        '
      type: object
      additionalProperties: false
    SandboxSimulationVirtualTransferItem:
      title: SandboxSimulationVirtualTransferItem
      description: One simulated external (VAN) transfer in a sandbox-simulations request.
      type: object
      required:
      - _link
      - amount
      properties:
        _link:
          type: object
          description: Link wrapper for the destination funding source (Dwolla HAL-style single link).
          required:
          - destination
          properties:
            destination:
              type: object
              required:
              - href
              properties:
                href:
                  type: string
                  format: uri
                  example: https://api-sandbox.dwolla.com/funding-sources/5880e310-675a-4ce3-87d9-a475cc565e09
        amount:
          $ref: '#/components/schemas/TransferAmount'
    SandboxSimulationCustomerVerificationResponse:
      title: SandboxSimulationCustomerVerificationResponse
      description: 'Response when simulating customer verification directives (200 OK). Echoes the simulated `errorCode`;

        retrieve the Customer resource to inspect `_embedded.errors`.

        '
      type: object
      required:
      - _links
      - errorCode
      properties:
        _links:
          type: object
          required:
          - self
          properties:
            self:
              $ref: '#/components/schemas/HalLink'
        errorCode:
          type: string
          description: Verification directive that was simulated.
          enum:
          - PersonalIDRequired
          - POBoxNotAllowed
          - AddressNotAssociatedWithBusiness
          - EINDocumentRequired
          example: AddressNotAssociatedWithBusiness
    SandboxSimulationRequest:
      title: SandboxSimulationRequest
      description: 'Bank transfer processing (omit body or `{}`), VAN transfer simulation (`type` virtual + transfers), or

        verification directive simulation (`type` customer-verification, customer link, and errorCode). Typed bodies

        are mutually exclusive; use only an omitted body or `{}` for bank processing.

        '
      oneOf:
      - $ref: '#/components/schemas/SandboxSimulationVirtualAccountTransfersRequest'
      - $ref: '#/components/schemas/SandboxSimulationCustomerVerificationRequest'
      - $ref: '#/components/schemas/SandboxSimulationBankProcessingRequest'
    SandboxSimulationBankProcessingResponse:
      title: SandboxSimulationBankProcessingResponse
      description: Response when simulating bank transfer processing (200 OK).
      type: object
      required:
      - _links
      - total
      properties:
        total:
          type: integer
          format: int32
          example: 8
          description: Count of bank transfers (and related items) affected by the simulation run.
        _links:
          type: object
          required:
          - self
          properties:
            self:
              $ref: '#/components/schemas/HalLink'
    SandboxSimulationCustomerVerificationRequest:
      title: SandboxSimulationCustomerVerificationRequest
      description: 'Simulate a verification directive for a business Verified Customer in Sandbox. The customer must be in

        `retry` or `document` status. After a successful call, retrieve the Customer resource; the given `errorCode`

        appears under `_embedded.errors`. See Dwolla documentation for verification directive meanings.

        '
      type: object
      required:
      - type
      - _links
      - errorCode
      properties:
        type:
          type: string
          const: customer-verification
          description: Must be set to customer-verification for verification directive simulation.
        _links:
          type: object
          required:
          - customer
          properties:
            customer:
              type: object
              required:
              - href
              properties:
                href:
                  type: string
                  format: uri
                  description: URL of the Sandbox customer to attach the simulated directive to.
                  example: https://api-sandbox.dwolla.com/customers/00000000-0000-0000-0000-000000000000
        errorCode:
          type: string
          description: Verification directive to simulate for the linked customer.
          enum:
          - PersonalIDRequired
          - POBoxNotAllowed
          - AddressNotAssociatedWithBusiness
          - EINDocumentRequired
          example: AddressNotAssociatedWithBusiness
    SandboxSimulationVirtualAccountTransfersRequest:
      title: SandboxSimulationVirtualAccountTransfersRequest
      description: 'Simulate Virtual Account Number (VAN) / external transfers in Sandbox. Up to 10 transfers per request;

        transfers are created and processed immediately. Successful response is 202 Accepted.

        '
      type: object
      required:
      - type
      - transfers
      properties:
        type:
          type: string
          const: virtual
          description: Must be set to virtual for VAN transfer simulation.
        transfers:
          type: array
          description: Transfers to simulate (max 10 per request).
          minItems: 1
          maxItems: 10
          items:
            $ref: '#/components/schemas/SandboxSimulationVirtualTransferItem'
    TransferAmount:
      title: TransferAmount
      type: object
      required:
      - value
      - currency
      properties:
        value:
          type: string
          example: '5.00'
        currency:
          type: string
          example: USD
  parameters:
    Accept:
      name: Accept
      in: header
      required: true
      description: The media type of the response. Must be application/vnd.dwolla.v1.hal+json
      schema:
        type: string
        enum:
        - application/vnd.dwolla.v1.hal+json
        default: application/vnd.dwolla.v1.hal+json
  securitySchemes:
    clientCredentials:
      type: oauth2
      flows:
        clientCredentials:
          tokenUrl: /token
          x-speakeasy-token-endpoint-authentication: client_secret_basic
          scopes: {}