openapi: 3.1.0 info: title: Dwolla 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 jsonSchemaDialect: https://spec.openapis.org/oas/3.1/dialect/base servers: - url: https://api.dwolla.com description: Production server - url: https://api-sandbox.dwolla.com description: Sandbox server security: - bearerAuth: [] paths: /token: post: tags: - tokens summary: Create an application access token description: Generates an access token that contains permissions scoped to the application owner's Dwolla Client Account. operationId: createApplicationAccessToken security: - basicAuth: [] requestBody: description: OAuth get token request content: application/x-www-form-urlencoded: schema: type: object required: - grant_type properties: grant_type: type: string example: client_credentials responses: '200': description: successful operation headers: {} content: application/json: schema: type: object properties: access_token: type: string example: gTm0p62yYXFiB1rOdhV0TsNOinC2V2P1CMaAtojkO9JEGbv3i5 token_type: type: string example: bearer expires_in: type: integer example: 3599 '401': description: Unauthorized headers: {} content: application/json: schema: type: object properties: error: type: string example: invalid_client /: get: tags: - root summary: root description: The entry point that clients can use to discover and explore the entire API. operationId: root parameters: - $ref: '#/components/parameters/Accept' responses: '200': description: successful operation content: application/vnd.dwolla.v1.hal+json: schema: $ref: '#/components/schemas/Root' '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. deprecated: false /accounts/{id}: get: tags: - accounts summary: Retrieve Account Details description: Retrieve basic account information belonging to the authorized Dwolla account. operationId: getAccount parameters: - name: id in: path description: Account's unique identifier required: true schema: type: string - $ref: '#/components/parameters/Accept' responses: '200': description: successful operation headers: {} content: application/vnd.dwolla.v1.hal+json: schema: $ref: '#/components/schemas/Account' '403': description: forbidden headers: {} content: application/vnd.dwolla.v1.hal+json: schema: type: object properties: code: type: string example: forbidden message: type: string example: Not authorized to retrieve an Account by id. '404': description: not found headers: {} content: application/vnd.dwolla.v1.hal+json: schema: $ref: '#/components/schemas/NotFoundError' /funding-sources: post: tags: - accounts summary: Create a funding source for an account description: Create a funding source for an account operationId: createAccountFundingSource parameters: - $ref: '#/components/parameters/Accept' requestBody: description: Parameters for the funding source to be created content: application/json: schema: $ref: '#/components/schemas/CreateFundingSourceForAccountRequestBody' responses: '201': description: successful operation headers: Location: $ref: '#/components/headers/Location' '400': description: Bad request or duplicate resource headers: {} content: application/vnd.dwolla.v1.hal+json: schema: oneOf: - $ref: '#/components/schemas/BadRequestSchema' - $ref: '#/components/schemas/DuplicateResourceSchema' '403': description: forbidden headers: {} content: application/vnd.dwolla.v1.hal+json: schema: type: object properties: code: type: string example: forbidden message: type: string example: Not authorized to create funding source. /accounts/{id}/funding-sources: get: tags: - accounts summary: List funding sources for an account description: List funding source for an account operationId: listAccountFundingSources parameters: - name: id in: path description: Account's unique identifier required: true schema: type: string - $ref: '#/components/parameters/Accept' - name: removed in: query description: Filter removed funding sources. Boolean value. Defaults to `true` required: false schema: type: string responses: '200': description: successful operation headers: {} content: application/vnd.dwolla.v1.hal+json: schema: $ref: '#/components/schemas/FundingSources' '403': description: forbidden headers: {} content: application/vnd.dwolla.v1.hal+json: schema: type: object properties: code: type: string example: forbidden message: type: string example: Not authorized to list funding sources. '404': description: not found headers: {} content: application/vnd.dwolla.v1.hal+json: schema: type: object properties: code: type: string example: notFound message: type: string example: Account not found. /accounts/{id}/transfers: get: tags: - accounts summary: List and search transfers for an account description: List and search transfers for an account operationId: listAndSearchAccountTransfers parameters: - name: id in: path description: Account's unique identifier required: true schema: type: string - $ref: '#/components/parameters/Accept' - name: search in: query description: A string to search on fields `firstName`, `lastName`, `email`, `businessName`, Customer ID, and Account ID required: false schema: type: string - name: startAmount in: query description: Only include transactions with an amount equal to or greater than `startAmount` required: false schema: type: string - name: endAmount in: query description: Only include transactions with an amount equal to or less than `endAmount` required: false schema: type: string - name: startDate in: query description: Only include transactions created after this date. ISO-8601 format `YYYY-MM-DD` required: false schema: type: string - name: endDate in: query description: Only include transactions created before this date. ISO-8601 format `YYYY-MM-DD` required: false schema: type: string - name: status in: query description: Filter on transaction status. Possible values are `pending`, `processed`, `failed`, or `cancelled` required: false schema: type: string - name: correlationId in: query description: A string value to search on if `correlationId` was specified for a transaction required: false schema: type: string - name: limit in: query description: Number of search results to return. Defaults to 25 required: false schema: type: string - name: offset in: query description: Number of search results to skip. Use for pagination required: false schema: type: string responses: '200': description: successful operation headers: {} content: application/vnd.dwolla.v1.hal+json: schema: $ref: '#/components/schemas/Transfers' '404': description: not found headers: {} content: application/vnd.dwolla.v1.hal+json: schema: type: object properties: code: type: string example: notFound message: type: string example: Account not found. /accounts/{id}/mass-payments: get: tags: - accounts summary: List mass payments for an account description: List mass payments for an account operationId: ListAccountMassPayments parameters: - name: id in: path description: Account ID required: true style: simple explode: false schema: type: string - $ref: '#/components/parameters/Accept' - name: limit in: query description: How many results to return. style: form explode: true schema: type: integer format: int32 minimum: 1 maximum: 200 default: 25 example: 25 - name: offset in: query description: How many results to skip. style: form explode: true schema: type: integer format: int32 default: 0 example: 0 - name: correlationId in: query description: Correlation ID to search by. style: form explode: true schema: type: string responses: '200': description: successful operation headers: {} content: application/vnd.dwolla.v1.hal+json: schema: $ref: '#/components/schemas/MassPayments' '403': description: forbidden headers: {} content: application/vnd.dwolla.v1.hal+json: schema: type: object properties: code: type: string example: forbidden message: type: string example: Not authorized to list mass payments. '404': description: not found headers: {} content: application/vnd.dwolla.v1.hal+json: schema: type: object properties: code: type: string example: notFound message: type: string example: Account not found. /customers: get: tags: - customers summary: List and search customers description: List and search customers allowing you to filter by email and status, as well as search on key fields such as firstName, lastName, and businessName. operationId: listAndSearchCustomers parameters: - name: limit in: query description: How many results to return required: false schema: type: string - name: offset in: query description: How many results to skip required: false schema: type: string - name: search in: query description: Searches on certain fields required: false schema: type: string - name: status in: query description: Filter by customer status required: false schema: type: string - $ref: '#/components/parameters/Accept' responses: '200': description: successful operation headers: {} content: application/vnd.dwolla.v1.hal+json: schema: $ref: '#/components/schemas/Customers' post: tags: - customers summary: Create a customer description: Create an unverified customer, verified customer, or receive-only user. operationId: createCustomer parameters: - $ref: '#/components/parameters/Accept' requestBody: description: Parameters for customer to be created content: application/vnd.dwolla.v1.hal+json: schema: oneOf: - $ref: '#/components/schemas/CreateReceiveOnlyRequestBody' - $ref: '#/components/schemas/CreateUnverifiedCustomerRequestBody' - $ref: '#/components/schemas/CreateVerifiedPersonalRequestBody' - $ref: '#/components/schemas/CreateVerifiedSolePropRequestBody' - $ref: '#/components/schemas/CreateVerifiedBusinessRequestBody' responses: '201': description: successful operation headers: Location: $ref: '#/components/headers/Location' '400': description: Bad Request headers: {} content: application/vnd.dwolla.v1.hal+json: schema: $ref: '#/components/schemas/BadRequestError' '403': description: forbidden headers: {} content: application/vnd.dwolla.v1.hal+json: schema: type: object properties: code: type: string example: forbidden message: type: string example: Not authorized to create customers. '404': description: not found headers: {} content: application/vnd.dwolla.v1.hal+json: schema: type: object properties: code: type: string example: notFound message: type: string example: not found. /customers/{id}: get: tags: - customers summary: Retrieve a customer description: Retrieve details for a single customer operationId: getCustomer parameters: - name: id in: path description: Customer unique identifier required: true schema: type: string - $ref: '#/components/parameters/Accept' responses: '200': description: successful operation headers: {} content: application/vnd.dwolla.v1.hal+json: schema: $ref: '#/components/schemas/Customer' '403': description: forbidden headers: {} content: application/vnd.dwolla.v1.hal+json: schema: type: object properties: code: type: string example: forbidden message: type: string example: Not authorized to get a customer by id. '404': description: not found headers: {} content: application/vnd.dwolla.v1.hal+json: schema: type: object properties: code: type: string example: notFound message: type: string example: Customer not found. post: tags: - customers summary: Update a customer description: Update Customer information, upgrade an unverified Customer to a verified Customer, suspend a Customer, deactivate a Customer, reactivate a Customer, and update a verified Customer's information to retry verification. operationId: update parameters: - name: id in: path description: Customer unique identifier required: true schema: type: string - $ref: '#/components/parameters/Accept' requestBody: description: Parameters for updating a Customer content: application/json: schema: oneOf: - $ref: '#/components/schemas/DeactivateCustomer' - $ref: '#/components/schemas/ReactivateCustomer' - $ref: '#/components/schemas/SuspendCustomer' - $ref: '#/components/schemas/UpdateUnverifiedAndReceiveOnly' - $ref: '#/components/schemas/UpdateVerifiedPersonal' - $ref: '#/components/schemas/UpdateVerifiedBusiness' - $ref: '#/components/schemas/CreateVerifiedPersonalRequestBody' - $ref: '#/components/schemas/CreateVerifiedBusinessRequestBody' - $ref: '#/components/schemas/CreateVerifiedSolePropRequestBody' - $ref: '#/components/schemas/CreateVerifiedPersonalRequestBody' - $ref: '#/components/schemas/CreateVerifiedBusinessRequestBody' - $ref: '#/components/schemas/CreateVerifiedSolePropRequestBody' responses: '200': description: successful operation headers: {} content: application/vnd.dwolla.v1.hal+json: schema: $ref: '#/components/schemas/Customer' '400': description: bad request headers: {} content: application/vnd.dwolla.v1.hal+json: schema: type: object properties: code: type: string example: badRequest message: type: string example: Duplicate customer or validation error. '403': description: forbidden headers: {} content: application/vnd.dwolla.v1.hal+json: schema: type: object properties: code: type: string example: forbidden message: type: string example: Not authorized to update a customer. /business-classifications: get: tags: - customers summary: List business classification description: Retrieve an _embedded list of business classifications that contains an _embedded list of industry classifications. operationId: listBusinessClassifications parameters: - $ref: '#/components/parameters/Accept' responses: '200': description: successful operation headers: {} content: application/vnd.dwolla.v1.hal+json: schema: type: object properties: _links: type: object _embedded: type: object properties: business-classifications: type: array items: $ref: '#/components/schemas/BusinessClassifications' /business-classifications/{id}: get: tags: - customers summary: Retrieve a business classification description: Retrieve a business classification operationId: retrieveBusinessClassification parameters: - name: id in: path description: business classification unique identifier required: true schema: type: string - $ref: '#/components/parameters/Accept' responses: '200': description: successful operation headers: {} content: application/vnd.dwolla.v1.hal+json: schema: $ref: '#/components/schemas/BusinessClassification' '404': description: not found headers: {} content: application/vnd.dwolla.v1.hal+json: schema: type: object properties: code: type: string example: not_found message: type: string example: not found. /customers/{id}/beneficial-owners: get: tags: - beneficial owners summary: List beneficial owners description: Retrieve a list of beneficial owners that belong to a Customer operationId: listBeneficialOwnersForCustomer parameters: - name: id in: path description: Customer unique identifier required: true schema: type: string - $ref: '#/components/parameters/Accept' responses: '200': description: successful operation headers: {} content: application/vnd.dwolla.v1.hal+json: schema: $ref: '#/components/schemas/BeneficialOwners' '404': description: not found headers: {} content: application/vnd.dwolla.v1.hal+json: schema: type: object properties: code: type: string example: not_found message: type: string example: not found. post: tags: - beneficial owners summary: Create beneficial owner description: Create beneficial owner which is a natural person who, directly or indirectly, owns 25% or more of the equity interests of the company. operationId: createBeneficialOwnerForCustomer parameters: - name: id in: path description: Customer ID for which to create a Beneficial Owner required: true style: simple explode: false schema: type: string - $ref: '#/components/parameters/Accept' requestBody: description: Parameters for creating a beneficial owner content: application/json: schema: oneOf: - $ref: '#/components/schemas/BeneficialOwnerWithSsn' - $ref: '#/components/schemas/BeneficialOwnerWithPassport' responses: '201': description: successful operation headers: Location: $ref: '#/components/headers/Location' /beneficial-owners/{id}: get: tags: - beneficial owners summary: Retrieve beneficial owner description: Retrieve details for a single beneficial owner operationId: retrieveBeneficialOwner parameters: - name: id in: path description: Beneficial owner unique identifier required: true schema: type: string - $ref: '#/components/parameters/Accept' responses: '200': description: successful operation headers: {} content: application/vnd.dwolla.v1.hal+json: schema: $ref: '#/components/schemas/BeneficialOwner' '404': description: not found headers: {} content: application/vnd.dwolla.v1.hal+json: schema: type: object properties: code: type: string example: not_found message: type: string example: not found. post: tags: - beneficial owners summary: Update beneficial owner description: Update beneficial owner operationId: updateBeneficialOwner parameters: - name: id in: path description: Beneficial owner unique identifier required: true schema: type: string - $ref: '#/components/parameters/Accept' requestBody: description: Parameters for updating a beneficial owner content: application/json: schema: oneOf: - $ref: '#/components/schemas/BeneficialOwnerWithSsn' - $ref: '#/components/schemas/BeneficialOwnerWithPassport' responses: '200': description: successful operation headers: {} content: application/vnd.dwolla.v1.hal+json: schema: $ref: '#/components/schemas/BeneficialOwner' '400': description: ValidationError headers: {} content: application/vnd.dwolla.v1.hal+json: schema: type: object properties: code: type: string example: ValidationError message: type: string example: Validation error(s) present. See embedded errors list for more details. _embedded: type: object properties: code: type: string example: ValidationError message: type: string example: Validation error(s) present. See embedded errors list for more details. '403': description: forbidden headers: {} content: application/vnd.dwolla.v1.hal+json: schema: type: object properties: code: type: string example: forbidden message: type: string example: Not authorized to update beneficial owner. '404': description: not found headers: {} content: application/vnd.dwolla.v1.hal+json: schema: type: object properties: code: type: string example: notFound message: type: string example: owner not found. delete: tags: - beneficial owners summary: Delete beneficial owner description: Delete beneficial owner operationId: deleteBeneficialOwner parameters: - name: id in: path description: Beneficial owner unique identifier required: true schema: type: string - $ref: '#/components/parameters/Accept' responses: '200': description: successful operation headers: {} content: application/vnd.dwolla.v1.hal+json: schema: type: object '404': description: not found headers: {} content: application/vnd.dwolla.v1.hal+json: schema: type: object properties: code: type: string example: not_found message: type: string example: Beneficial owner not found. /customers/{id}/beneficial-ownership: get: tags: - beneficial owners summary: Retrieve beneficial ownership status description: Retrieve beneficial ownership status operationId: getBeneficialOwnershipStatusForCustomer parameters: - name: id in: path description: Customer unique identifier required: true schema: type: string - $ref: '#/components/parameters/Accept' responses: '200': description: successful operation headers: {} content: application/vnd.dwolla.v1.hal+json: schema: $ref: '#/components/schemas/BeneficialOwnership' '403': description: forbidden headers: {} content: application/vnd.dwolla.v1.hal+json: schema: type: object properties: code: type: string example: forbidden message: type: string example: Not authorized to get certification status. '404': description: not found headers: {} content: application/vnd.dwolla.v1.hal+json: schema: type: object properties: code: type: string example: not_found message: type: string example: Ownership certification status not found. post: tags: - beneficial owners summary: Certify beneficial ownership status description: certify beneficial ownership status operationId: certifyBeneficialOwnershipForCustomer parameters: - name: id in: path description: Customer unique identifier required: true schema: type: string - $ref: '#/components/parameters/Accept' requestBody: description: Parameters for certifying beneficial ownership for a Customer content: application/json: schema: required: - status type: object properties: status: type: string responses: '200': description: successful operation headers: {} content: application/vnd.dwolla.v1.hal+json: schema: $ref: '#/components/schemas/BeneficialOwnership' '400': description: ValidationError headers: {} content: application/vnd.dwolla.v1.hal+json: schema: type: object properties: code: type: string example: ValidationError message: type: string example: Validation error(s) present. See embedded errors list for more details. _embedded: type: object properties: code: type: string example: ValidationError message: type: string example: Validation error(s) present. See embedded errors list for more details. '403': description: forbidden headers: {} content: application/vnd.dwolla.v1.hal+json: schema: type: object properties: code: type: string example: forbidden message: type: string example: Forbidden from updating beneficial ownership status for this customer. /customers/{id}/documents: get: tags: - documents summary: List documents for customer description: List documents for customer operationId: listCustomerDocuments parameters: - name: id in: path description: customer unique identifier required: true schema: type: string - $ref: '#/components/parameters/Accept' responses: '200': description: successful operation headers: {} content: application/vnd.dwolla.v1.hal+json: schema: $ref: '#/components/schemas/Documents' post: tags: - documents summary: Create a document for customer description: Create a document for customer operationId: createCustomerDocument parameters: - name: id in: path description: customer unique identifier required: true schema: type: string - $ref: '#/components/parameters/Accept' requestBody: description: Upload a document for a customer. required: true content: multipart/form-data: schema: type: object properties: documentType: type: string file: type: string format: binary responses: '201': description: successful operation headers: Location: $ref: '#/components/headers/Location' '400': description: Bad Request headers: {} content: application/vnd.dwolla.v1.hal+json: schema: oneOf: - $ref: '#/components/schemas/MaximumNumberOfResourcesSchema' - $ref: '#/components/schemas/InvalidFileTypeSchema' - $ref: '#/components/schemas/DuplicateResourceSchema' '403': description: not found headers: {} content: application/vnd.dwolla.v1.hal+json: schema: oneOf: - $ref: '#/components/schemas/InvalidResourceStateSchema' - $ref: '#/components/schemas/NotAuthorizedSchema' '404': description: not found headers: {} content: application/vnd.dwolla.v1.hal+json: schema: type: object properties: code: type: string example: notFound message: type: string example: Customer not found. Check CustomerId. '413': description: request entity too large headers: {} content: application/vnd.dwolla.v1.hal+json: schema: type: object properties: code: type: string example: fileTooLarge message: type: string example: Document requests are limited to 10 MiB. /beneficial-owners/{id}/documents: get: tags: - documents summary: List document for beneficial owner description: List document for beneficial owner operationId: listBeneficialOwnerDocuments parameters: - name: id in: path description: beneficial owner unique identifier required: true schema: type: string - $ref: '#/components/parameters/Accept' responses: '200': description: successful operation headers: {} content: application/vnd.dwolla.v1.hal+json: schema: $ref: '#/components/schemas/Documents' post: tags: - documents summary: Create a document for beneficial owner description: Create a document for beneficial owner operationId: createBeneficialOwnerDocument parameters: - name: id in: path description: beneficial owner unique identifier required: true schema: type: string - $ref: '#/components/parameters/Accept' requestBody: description: Upload a document for a beneficial owner. required: true content: multipart/form-data: schema: type: object properties: documentType: type: string file: type: string format: binary responses: '201': description: document created headers: Location: $ref: '#/components/headers/Location' /documents/{id}: get: tags: - documents summary: Retrieve a document description: Retrieve a document for a customer or beneficial owner operationId: getDocument parameters: - name: id in: path description: Document unique identifier required: true schema: type: string - $ref: '#/components/parameters/Accept' responses: '200': description: successful operation headers: {} content: application/vnd.dwolla.v1.hal+json: schema: $ref: '#/components/schemas/Document' /customers/{id}/kba: post: tags: - kba summary: Initiate a KBA session description: Initiate a KBA session operationId: initiateKbaForCustomer parameters: - name: id in: path description: The ID of the Customer for initiating a KBA session required: true schema: type: string - $ref: '#/components/parameters/Accept' responses: '201': description: created headers: Location: $ref: '#/components/headers/Location' '403': description: 403 Error headers: {} content: application/vnd.dwolla.v1.hal+json: schema: oneOf: - $ref: '#/components/schemas/InvalidResourceStateSchema' - $ref: '#/components/schemas/ForbiddenError' '404': description: 404 Error headers: {} content: application/vnd.dwolla.v1.hal+json: schema: $ref: '#/components/schemas/NotFoundError' /kba/{id}: get: tags: - kba summary: Retrieve KBA Questions description: Retrieve KBA Questions operationId: getKbaQuestions parameters: - name: id in: path description: The ID of the KBA session to retrieve questions for required: true schema: type: string - $ref: '#/components/parameters/Accept' responses: '200': description: successful operation headers: {} content: application/vnd.dwolla.v1.hal+json: schema: type: object properties: _links: type: object properties: answer: type: object properties: href: type: string example: https://api.dwolla.com/kba/62dac6f3-bf8f-4961-9af8-428de8ecd9a4 type: type: string example: application/vnd.dwolla.v1.hal+json resource-type: type: string example: kba id: type: string example: 62dac6f3-bf8f-4961-9af8-428de8ecd9a4 questions: type: array items: type: object properties: id: type: string example: 2355953375 text: type: string example: In what county do you currently live? answers: type: array items: type: object properties: id: type: string example: 2687969295 text: type: string example: Pulaski '403': description: 403 Error headers: {} content: application/vnd.dwolla.v1.hal+json: schema: $ref: '#/components/schemas/ForbiddenError' '404': description: 404 Error headers: {} content: application/vnd.dwolla.v1.hal+json: schema: type: object properties: code: type: string example: NotFound message: type: string example: KBA questions not found. Check KBA id. post: tags: - kba summary: Verify KBA Questions description: Verify KBA Questions operationId: verifyKbaQuestions parameters: - name: id in: path description: The id of the KBA session to verify questions for. required: true schema: type: string - $ref: '#/components/parameters/Accept' requestBody: description: Parameters for verifying KBA questions content: application/json: schema: required: - answers type: object properties: answers: type: array items: type: object properties: questionId: type: string example: 2355953375 answerId: type: string example: 2687969335 responses: '200': description: created headers: {} content: application/vnd.dwolla.v1.hal+json: schema: type: object properties: _links: type: object properties: customer: type: object properties: href: type: string example: https://api.dwolla.com/customers/b5fd802d-d8c7-43ce-94a8-7c14485b7042 type: type: string example: application/vnd.dwolla.v1.hal+json resource-type: type: string example: customer verificationStatus: type: string example: verified '403': description: 403 Error headers: {} content: application/vnd.dwolla.v1.hal+json: schema: oneOf: - $ref: '#/components/schemas/ForbiddenError' - $ref: '#/components/schemas/InvalidKbaSessionError' - $ref: '#/components/schemas/ExpiredKbaSessionError' '404': description: 404 Error headers: {} content: application/vnd.dwolla.v1.hal+json: schema: type: object properties: code: type: string example: NotFound message: type: string example: KBA session not found. /customers/{id}/funding-sources: get: tags: - funding sources summary: List customer funding sources description: List customer funding sources operationId: listCustomerFundingSources parameters: - name: id in: path description: Customer funding sources required: true schema: type: string - $ref: '#/components/parameters/Accept' responses: '200': description: successful operation headers: {} content: application/vnd.dwolla.v1.hal+json: schema: type: array items: $ref: '#/components/schemas/FundingSources' '403': description: forbidden headers: {} content: application/vnd.dwolla.v1.hal+json: schema: type: object properties: code: type: string example: forbidden message: type: string example: Not authorized to list funding sources. '404': description: not found headers: {} content: application/vnd.dwolla.v1.hal+json: schema: type: object properties: code: type: string example: notFound message: type: string example: Customer not found. post: tags: - funding sources summary: Create customer funding source description: | Create a new funding source for a customer. There are multiple methods available: - Basic bank funding source (with routing/account numbers) - Using an exchange operationId: createCustomerFundingSource parameters: - name: id in: path description: Customer's unique identifier required: true schema: type: string - $ref: '#/components/parameters/Accept' requestBody: description: Parameters for creating a funding source required: true content: application/vnd.dwolla.v1.hal+json: schema: $ref: '#/components/schemas/CreateCustomerFundingSource' responses: '201': description: created headers: Location: $ref: '#/components/headers/Location' '400': description: validation error content: application/vnd.dwolla.v1.hal+json: schema: oneOf: - type: object properties: code: type: string example: InactiveExchange message: type: string example: The Exchange was removed or disabled. - type: object properties: code: type: string example: InvalidExchangeToken message: type: string example: The exchange token is not valid to perform this operation. - type: object properties: code: type: string example: ValidationError message: type: string example: Duplicate funding source or validation error. Authorization already associated to a funding source. '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 create funding source. '404': description: not found content: application/vnd.dwolla.v1.hal+json: schema: type: object properties: code: type: string example: NotFound message: type: string example: Customer ID not found. Check Customer ID. /funding-sources/{id}: get: tags: - funding sources summary: Retrieve a funding source description: Retrieve a funding source operationId: getFundingSource parameters: - name: id in: path description: Funding source unique identifier required: true schema: type: string - $ref: '#/components/parameters/Accept' responses: '200': description: successful operation headers: {} content: application/vnd.dwolla.v1.hal+json: schema: $ref: '#/components/schemas/FundingSource' '404': description: not found headers: {} content: application/vnd.dwolla.v1.hal+json: schema: type: object properties: code: type: string example: notFound message: type: string example: Funding source not found. post: tags: - funding sources summary: Update or remove a funding source description: Update or remove a funding source operationId: updateOrRemoveFundingSource parameters: - name: id in: path description: Funding source unique identifier required: true schema: type: string - $ref: '#/components/parameters/Accept' requestBody: description: Parameters to update a customer funding source content: application/json: schema: oneOf: - $ref: '#/components/schemas/UpdateUnverifiedBank' - $ref: '#/components/schemas/UpdateVerifiedBank' - $ref: '#/components/schemas/RemoveBank' responses: '200': description: successful operation headers: {} content: application/vnd.dwolla.v1.hal+json: schema: type: object '400': description: validation error headers: {} content: application/vnd.dwolla.v1.hal+json: schema: type: object properties: code: type: string example: validationError message: type: string example: Only funding sources of type="bank" can be updated. '403': description: forbidden headers: {} content: application/vnd.dwolla.v1.hal+json: schema: type: object properties: code: type: string example: InvalidResourceState message: type: string example: A removed bank cannot be updated. /funding-sources/{id}/micro-deposits: get: tags: - funding sources summary: Retrieve micro-deposits details description: Retrieve micro-deposits details operationId: getMicroDeposits parameters: - name: id in: path description: The ID of the FS that previously had micro-deposits initiated required: true schema: type: string - $ref: '#/components/parameters/Accept' responses: '200': description: successful operation headers: {} content: application/vnd.dwolla.v1.hal+json: schema: type: object properties: _links: type: object additionalProperties: $ref: '#/components/schemas/HalLink' created: type: string format: date-time example: '2022-12-30T20:56:53.000Z' status: type: string example: failed failure: type: object properties: code: type: string example: R03 description: type: string example: No Account/Unable to locate account '404': description: not found headers: {} content: application/vnd.dwolla.v1.hal+json: schema: $ref: '#/components/schemas/NotFoundError' post: tags: - funding sources summary: Initiate or Verify micro-deposits description: | Initiate or Verify micro-deposits. For initiating micro-deposits, no request body is required. For verifying micro-deposits, a request body with the micro-deposit amounts is required. operationId: initiateOrVerifyMicroDeposits parameters: - name: id in: path description: The ID of the FS to initiate or verify micro-deposit required: true schema: type: string - $ref: '#/components/parameters/Accept' requestBody: description: Parameters for initiating or verifying micro-deposits content: application/json: schema: oneOf: - type: - object - 'null' title: InitiateMicroDeposits description: No request body is required for initiating micro-deposits. - $ref: '#/components/schemas/VerifyMicroDeposits' description: Required request body for verifying micro-deposits responses: '201': description: created headers: Location: $ref: '#/components/headers/Location' '404': description: not found headers: {} content: application/vnd.dwolla.v1.hal+json: schema: type: object properties: code: type: string example: notFound message: type: string example: Funding source not found /funding-sources/{id}/balance: get: tags: - funding sources summary: Retrieve funding source balance description: Retrieve funding source balance operationId: getFundingSourceBalance parameters: - name: id in: path description: ID of funding source to retrieve the balance for required: true schema: type: string - $ref: '#/components/parameters/Accept' responses: '200': description: successful operation headers: {} content: application/vnd.dwolla.v1.hal+json: schema: oneOf: - title: Dwolla Balance Response description: Response for retrieving balance of a Dwolla Balance funding source type: object properties: _links: type: object additionalProperties: $ref: '#/components/schemas/HalLink' balance: type: object properties: value: type: string example: '4616.87' currency: type: string example: USD total: type: object properties: value: type: string example: '4616.87' currency: type: string example: USD lastUpdated: type: string example: '2017-04-18T15:20:25.880Z' - title: Bank Balance Response description: Response for retrieving balance of a bank account verified through Open Banking type: object properties: _links: type: object properties: self: type: object properties: href: type: string example: https://api.dwolla.com/funding-sources/42f48a64-2a9b-40df-9777-603ed2fe2764/balance type: type: string example: application/vnd.dwolla.v1.hal+json resource-type: type: string example: balance funding-source: type: object properties: href: type: string example: https://api.dwolla.com/funding-sources/42f48a64-2a9b-40df-9777-603ed2fe2764 type: type: string example: application/vnd.dwolla.v1.hal+json resource-type: type: string example: funding-source available: type: object properties: value: type: string example: '542.00' currency: type: string example: USD closing: type: object properties: value: type: string example: '542.00' currency: type: string example: USD lastUpdated: type: string example: '2024-09-09T16:39:14.219Z' '404': description: not found headers: {} content: application/vnd.dwolla.v1.hal+json: schema: type: object properties: code: type: string example: notFound message: type: string example: Funding source not found. /funding-sources/{id}/ach-routing: get: tags: - funding sources summary: Retrieve account and routing numbers for a VAN (Virtual Account Number) description: Retrieve account and routing numbers for a VAN (Virtual Account Number) operationId: getVanAchRouting parameters: - name: id in: path description: ID of VAN funding source to retrieve ACH details required: true schema: type: string - $ref: '#/components/parameters/Accept' responses: '200': description: successful operation headers: {} content: application/vnd.dwolla.v1.hal+json: schema: type: object properties: _links: type: object additionalProperties: $ref: '#/components/schemas/HalLink' accountNumber: type: string example: '9619991490430833' routingNumber: type: string example: '084106768' '404': description: not found headers: {} content: application/vnd.dwolla.v1.hal+json: schema: type: object properties: code: type: string example: notFound message: type: string example: Funding source not found. /transfers: post: tags: - transfers summary: Initiate a transfer description: Initiate a transfer operationId: initiateTransfer parameters: - $ref: '#/components/parameters/Accept' requestBody: description: Parameters to initiate a transfer content: application/json: schema: required: - _links - amount type: object properties: _links: type: object properties: source: type: object properties: href: type: string destination: type: object properties: href: type: string amount: $ref: '#/components/schemas/TransferAmount' metadata: type: object fees: type: array items: type: object properties: _links: type: object properties: charge-to: type: object properties: href: type: string amount: type: object properties: amount: type: string currency: type: string clearing: type: object properties: source: type: string destination: type: string achDetails: type: object properties: source: type: object properties: addenda: type: object properties: values: type: array items: type: string destination: type: object properties: addenda: type: object properties: values: type: array items: type: string rtpDetails: type: object properties: destination: type: object properties: remittanceData: type: string correlationId: type: string processingChannel: type: object properties: destination: type: string example: real-time-payments responses: '201': description: created headers: Location: $ref: '#/components/headers/Location' '400': description: Bad Request headers: {} content: application/vnd.dwolla.v1.hal+json: schema: oneOf: - $ref: '#/components/schemas/SourceNotFoundError' - $ref: '#/components/schemas/ReceiverNotFoundError' - $ref: '#/components/schemas/InvalidSourceFundingSourceError' - $ref: '#/components/schemas/SenderRestrictedError' - $ref: '#/components/schemas/ReceiverRestrictedError' - $ref: '#/components/schemas/InvalidMetadataError' - $ref: '#/components/schemas/OperationBlockedError' - $ref: '#/components/schemas/InvalidAmountLimitError' - $ref: '#/components/schemas/CannotParseAmountError' - $ref: '#/components/schemas/InsufficientFundsError' - $ref: '#/components/schemas/FacilitatorFeeAccountNotFoundError' - $ref: '#/components/schemas/FacilitatorFeeSumTooLargeError' - $ref: '#/components/schemas/FacilitatorFeeBelowMinimumError' - $ref: '#/components/schemas/HighRiskError' - $ref: '#/components/schemas/IncompatibleHoldingsError' - $ref: '#/components/schemas/DirectAccountWithoutBankError' - $ref: '#/components/schemas/SourceSameAsDestinationError' - $ref: '#/components/schemas/InvalidFacilitatorError' - $ref: '#/components/schemas/InvalidFacilitatorFeeCollectFromError' - $ref: '#/components/schemas/InvalidFacilitatorFeeCollectFromCombinationError' - $ref: '#/components/schemas/InvalidDestinationFundingSourceError' - $ref: '#/components/schemas/InvalidFacilitatorFeeAmountError' - $ref: '#/components/schemas/WeeklyReceiveLimitReachedError' - $ref: '#/components/schemas/InvalidDestinationClearingTypeError' - $ref: '#/components/schemas/InvalidAmountForDestinationClearingTypeError' - $ref: '#/components/schemas/InvalidCorrelationIdError' - $ref: '#/components/schemas/SourceAddendaMaxLengthError' - $ref: '#/components/schemas/DestinationAddendaMaxLengthError' - $ref: '#/components/schemas/AchAddendaEntriesNotEnabledForAccountError' - $ref: '#/components/schemas/PointOfSaleAddendaEntriesNotEnabledForAccountError' - $ref: '#/components/schemas/IncompatibleAddendaEntriesError' - $ref: '#/components/schemas/InvalidPointOfSaleAddendaIdentificationCodeError' - $ref: '#/components/schemas/InvalidPointOfSaleAddendaSerialNumberError' - $ref: '#/components/schemas/InvalidPointOfSaleAddendaDateError' - $ref: '#/components/schemas/InvalidPointOfSaleAddendaAddressError' - $ref: '#/components/schemas/InvalidPointOfSaleAddendaCityError' - $ref: '#/components/schemas/InvalidPointOfSaleAddendaStateError' - $ref: '#/components/schemas/TransferExpiredForFeeError' - $ref: '#/components/schemas/InvalidFeeOdfiError' - $ref: '#/components/schemas/InvalidSourceBankAccountTypeError' - $ref: '#/components/schemas/InvalidDestinationBankAccountTypeError' - $ref: '#/components/schemas/IncompatibleSourceAndDestinationTypesError' - $ref: '#/components/schemas/IncompatibleSourceForRtpDestinationError' - $ref: '#/components/schemas/InvalidAmountForDestinationProcessingChannelError' - $ref: '#/components/schemas/RtpFacilitatorFeeNotSupportedError' - $ref: '#/components/schemas/RtpUnverifiedSenderNotSupportedError' - $ref: '#/components/schemas/RtpPersonalToPersonalNotSupportedError' - $ref: '#/components/schemas/DestinationProcessingChannelNotSupportedError' - $ref: '#/components/schemas/DestinationRemittanceDataMaxLengthError' - $ref: '#/components/schemas/WithdrawInvalidAmountError' - $ref: '#/components/schemas/WithdrawInvalidFundingSourceError' - $ref: '#/components/schemas/WithdrawAccountRestrictedError' - $ref: '#/components/schemas/WithdrawInvalidAmountForClearingTypeError' - $ref: '#/components/schemas/WithdrawInvalidWireBeneficiaryLocalityError' - $ref: '#/components/schemas/WithdrawInvalidWireBeneficiaryRegionError' - $ref: '#/components/schemas/WithdrawInvalidWireBeneficiaryCountryError' - $ref: '#/components/schemas/WithdrawInvalidWireOriginatorToBeneficiaryError' - $ref: '#/components/schemas/WithdrawProcessingChannelNotSupportedError' - $ref: '#/components/schemas/WithdrawRtpUnverifiedSenderNotSupportedError' - $ref: '#/components/schemas/WithdrawRtpPersonalWithdrawalNotSupportedError' - $ref: '#/components/schemas/DepositAccountRestrictedError' - $ref: '#/components/schemas/WireInvalidImadError' - $ref: '#/components/schemas/WireAccountRestrictedError' - $ref: '#/components/schemas/WireNotEnabledError' - $ref: '#/components/schemas/WireAccountNotFoundError' '403': description: Forbidden headers: {} content: application/vnd.dwolla.v1.hal+json: schema: oneOf: - $ref: '#/components/schemas/InvalidAttemptToFacilitateFundsError' - $ref: '#/components/schemas/InvalidAttemptToPayInFundsError' - $ref: '#/components/schemas/InvalidAttemptToPayOutFundsError' - $ref: '#/components/schemas/RtpAccountSettingNotEnabledError' '429': description: Too Many Requests headers: {} content: application/vnd.dwolla.v1.hal+json: schema: $ref: '#/components/schemas/TooManyRequestsErrorError' /transfers/{id}: get: tags: - transfers summary: Retrieve a transfer description: Retrieve a transfer operationId: getTransfer parameters: - name: id in: path description: ID of transfer to be retrieved required: true schema: type: string - $ref: '#/components/parameters/Accept' responses: '200': description: successful operation headers: {} content: application/vnd.dwolla.v1.hal+json: schema: $ref: '#/components/schemas/Transfer' '404': description: 404 Not Found headers: {} content: application/vnd.dwolla.v1.hal+json: schema: $ref: '#/components/schemas/NotFoundError' post: tags: - transfers summary: Cancel a transfer description: Cancel a transfer operationId: cancelTransfer parameters: - name: id in: path description: ID of transfer required: true schema: type: string - $ref: '#/components/parameters/Accept' requestBody: description: Parameters to cancel a transfer content: application/json: schema: required: - status type: object properties: status: type: string example: cancelled responses: '200': description: successful operation headers: {} content: application/vnd.dwolla.v1.hal+json: schema: type: object '400': description: 400 Bad Request headers: {} content: application/vnd.dwolla.v1.hal+json: schema: oneOf: - $ref: '#/components/schemas/BadRequestError' - $ref: '#/components/schemas/StatusInvalidError' - $ref: '#/components/schemas/StatusNotAllowedError' '404': description: 404 Not Found headers: {} content: application/vnd.dwolla.v1.hal+json: schema: $ref: '#/components/schemas/NotFoundError' /customers/{id}/transfers: get: tags: - transfers summary: List and search transfers for a customer description: List and search transfers for a customer operationId: listCustomerTransfers parameters: - name: id in: path description: Customer's unique identifier required: true schema: type: string - name: search in: query description: A string to search on fields `firstName`, `lastName`, `email`, `businessName` required: false schema: type: string - name: startAmount in: query description: Only include transactions with an amount equal to or greater than `startAmount` required: false schema: type: string - name: endAmount in: query description: Only include transactions with an amount equal to or less than `endAmount` required: false schema: type: string - name: startDate in: query description: Only include transactions created after this date. ISO-8601 format `YYYY-MM-DD` required: false schema: type: string - name: endDate in: query description: Only include transactions created before this date. ISO-8601 format `YYYY-MM-DD` required: false schema: type: string - name: status in: query description: Filter on transaction status. Possible values are `pending`, `processed`, `failed`, or `cancelled` required: false schema: type: string - name: correlationId in: query description: A string value to search on if `correlationId` was specified for a transaction required: false schema: type: string - name: limit in: query description: Number of search results to return. Defaults to 25 required: false schema: type: string - name: offset in: query description: Number of search results to skip. Use for pagination required: false schema: type: string - $ref: '#/components/parameters/Accept' responses: '200': description: successful operation headers: {} content: application/vnd.dwolla.v1.hal+json: schema: $ref: '#/components/schemas/Transfers' '404': description: 404 Not Found headers: {} content: application/vnd.dwolla.v1.hal+json: schema: $ref: '#/components/schemas/NotFoundError' /transfers/{id}/fees: get: tags: - transfers summary: List fees for a transfer description: List fees for a transfer operationId: listTransferFees parameters: - name: id in: path description: ID of transfer to retrieve fees for required: true schema: type: string - $ref: '#/components/parameters/Accept' responses: '200': description: successful operation headers: {} content: application/vnd.dwolla.v1.hal+json: schema: type: object properties: transactions: type: array items: type: object properties: _links: type: object additionalProperties: $ref: '#/components/schemas/HalLink' id: type: string example: 416a2857-c887-4cca-bd02-8c3f75c4bb0e status: type: string example: pending amount: type: object properties: value: type: string example: '2.00' currency: type: string example: USD created: type: string format: date-time example: '2016-02-22T20:46:38.777Z' total: type: string example: '1' '404': description: 404 Not Found headers: {} content: application/vnd.dwolla.v1.hal+json: schema: $ref: '#/components/schemas/NotFoundError' /transfers/{id}/failure: get: tags: - transfers summary: Retrieve a transfer failure reason description: Retrieve a transfer failure reason operationId: getTransferFailureReason parameters: - name: id in: path description: Transfer unique identifier required: true schema: type: string - $ref: '#/components/parameters/Accept' responses: '200': description: successful operation headers: {} content: application/vnd.dwolla.v1.hal+json: schema: type: object properties: _links: type: object additionalProperties: $ref: '#/components/schemas/HalLink' code: type: string example: R03 description: type: string example: No Account/Unable to Locate Account explanation: type: string example: The account number does not correspond to the individual identified in the entry or a valid account. '403': description: 403 Forbidden headers: {} content: application/vnd.dwolla.v1.hal+json: schema: $ref: '#/components/schemas/ForbiddenError' '404': description: 404 Not Found headers: {} content: application/vnd.dwolla.v1.hal+json: schema: $ref: '#/components/schemas/NotFoundError' /on-demand-authorizations: post: tags: - transfers summary: Create an on-demand transfer authorization description: Create an on-demand transfer authorization operationId: createOnDemandTransferAuthorization parameters: - $ref: '#/components/parameters/Accept' responses: '200': description: Ok headers: {} content: application/vnd.dwolla.v1.hal+json: schema: $ref: '#/components/schemas/OnDemandAuthorization' '403': description: 403 Error headers: {} content: application/vnd.dwolla.v1.hal+json: schema: $ref: '#/components/schemas/ForbiddenError' /mass-payments: post: tags: - massPayments summary: Initiate a mass payment description: Initiate a mass payment operationId: initiateMassPayment parameters: - $ref: '#/components/parameters/Accept' requestBody: description: Parameters for initiating a mass payment content: application/json: schema: required: - _links - items type: object properties: _links: type: object properties: source: type: object properties: href: type: string example: https://api.dwolla.com/funding-sources/707177c3-bf15-4e7e-b37c-55c3898d9bf4 items: type: array items: type: object properties: _links: type: object properties: destination: type: object properties: href: type: string example: https://api.dwolla.com/funding-sources/9c7f8d57-cd45-4e7a-bf7a-914dbd6131db amount: $ref: '#/components/schemas/TransferAmount' processingChannel: type: object properties: destination: type: string example: real-time-payments metadata: type: object clearing: type: object properties: destination: type: string example: next-available achDetails: type: object properties: destination: type: object properties: addenda: type: object properties: values: type: array items: type: string example: XYZ987_AddendaValue correlationId: type: string example: ad6ca82d-59f7-45f0-a8d2-94c2cd4e8841 status: type: string example: deferred achDetails: type: object properties: source: type: object properties: addenda: type: object properties: values: type: array items: type: string example: ZYX987_AddendaValue clearing: type: object properties: source: type: string example: next-available metadata: type: object correlationId: type: string example: ad6ca82d-59f7-45f0-a8d2-94c2cd4e8841 responses: '201': description: created headers: Location: $ref: '#/components/headers/Location' /mass-payments/{id}: get: tags: - massPayments summary: Retrieve a mass payment description: Retrieve a mass payment operationId: getMassPayment parameters: - name: id in: path description: Mass payment unique identifier required: true schema: type: string - $ref: '#/components/parameters/Accept' responses: '200': description: successful operation headers: {} content: application/vnd.dwolla.v1.hal+json: schema: $ref: '#/components/schemas/MassPayment' post: tags: - massPayments summary: Update a mass payment description: This section covers how to update a mass payment's status to `pending` which triggers processing on a created and deferred mass payment, or `cancelled` which cancels a created and deferred mass payment. operationId: updateMassPayment parameters: - name: id in: path description: ID of mass payment to update required: true schema: type: string requestBody: description: Parameters for updating a mass payment content: application/json: schema: required: - status type: object properties: status: type: string example: pending responses: '200': description: successful operation headers: {} content: application/vnd.dwolla.v1.hal+json: schema: $ref: '#/components/schemas/MassPayment' /mass-payments/{id}/items: get: tags: - massPayments summary: List items for a mass payment description: List items for a mass payment operationId: listMassPaymentItems parameters: - name: id in: path description: Mass payment unique identifier required: true schema: type: string - name: limit in: query description: How many results to return required: false schema: type: string - name: offset in: query description: How many results to skip required: false schema: type: string - name: status in: query description: Filter by item status required: false schema: type: string - $ref: '#/components/parameters/Accept' responses: '200': description: successful operation headers: {} content: application/vnd.dwolla.v1.hal+json: schema: type: object properties: _links: type: object properties: self: type: object properties: href: type: string example: https://api.dwolla.com/mass-payments/eb467252-808c-4bc0-b86f-a5cd01454563/items first: type: object properties: href: type: string example: https://api.dwolla.com/mass-payments/eb467252-808c-4bc0-b86f-a5cd01454563/items?limit=25&offset=0 last: type: object properties: href: type: string example: https://api.dwolla.com/mass-payments/eb467252-808c-4bc0-b86f-a5cd01454563/items?limit=25&offset=0 _embedded: type: object properties: items: type: array items: $ref: '#/components/schemas/MassPaymentItem' total: type: integer format: int32 example: 3 /mass-payment-items/{id}: get: tags: - massPayments summary: Retrieve mass payment item description: Retrieve mass payment item operationId: getMassPaymentItem parameters: - name: id in: path description: ID of item to be retrieved in mass payment required: true schema: type: string - $ref: '#/components/parameters/Accept' responses: '200': description: success operation headers: {} content: application/vnd.dwolla.v1.hal+json: schema: $ref: '#/components/schemas/MassPaymentItem' /customers/{id}/mass-payments: get: tags: - massPayments summary: List mass payments for customer description: List mass payments for customer operationId: listCustomerMassPayments parameters: - name: id in: path description: Customer ID to get mass payments for required: true schema: type: string - name: correlationId in: query description: A string value to search on if `correlationId` was specified for a transaction required: false schema: type: string - name: limit in: query description: Number of search results to return. Defaults to 25 required: false schema: type: string - name: offset in: query description: Number of search results to skip. Use for pagination required: false schema: type: string - $ref: '#/components/parameters/Accept' responses: '200': description: successful operation headers: {} content: application/vnd.dwolla.v1.hal+json: schema: $ref: '#/components/schemas/MassPayments' /labels/{id}: get: tags: - labels summary: Retrieve a label description: Retrieve a label operationId: getLabel parameters: - name: id in: path description: Label unique identifier required: true schema: type: string - $ref: '#/components/parameters/Accept' responses: '200': description: successful operation headers: {} content: application/vnd.dwolla.v1.hal+json: schema: $ref: '#/components/schemas/Label' delete: tags: - labels summary: Remove a label description: Remove a label operationId: removeLabel parameters: - name: id in: path description: A label unique identifier required: true schema: type: string - $ref: '#/components/parameters/Accept' responses: '200': description: successful operation headers: {} content: application/vnd.dwolla.v1.hal+json: schema: $ref: '#/components/schemas/Label' '403': description: forbidden headers: {} content: application/vnd.dwolla.v1.hal+json: schema: type: object properties: code: type: string example: InvalidResourceState message: type: string example: Amount must be zero to remove label. /customers/{id}/labels: get: tags: - labels summary: List labels for a customer description: List labels for a customer operationId: listCustomerLabels parameters: - name: id in: path description: ID of customer required: true schema: type: string - name: limit in: query description: How many results to return required: false schema: type: string - name: offset in: query description: How many results to skip required: false schema: type: string - $ref: '#/components/parameters/Accept' responses: '200': description: success operation headers: {} content: application/vnd.dwolla.v1.hal+json: schema: $ref: '#/components/schemas/Labels' post: tags: - labels summary: Create a label for a customer description: Create a label for a customer operationId: createCustomerLabel parameters: - name: id in: path description: ID of customer to create a label for required: true schema: type: string - $ref: '#/components/parameters/Accept' requestBody: description: Parameters to create a customer label content: application/json: schema: required: - amount type: object properties: amount: type: object properties: currency: type: string example: 12.34 value: type: string example: USD responses: '201': description: create headers: Location: $ref: '#/components/headers/Location' /labels/{id}/ledger-entries: get: tags: - labels summary: List label ledger entries description: List label ledger entries operationId: listLabelLedgerEntries parameters: - name: id in: path description: A label unique identifier required: true schema: type: string - name: limit in: query description: How many results to return required: false schema: type: string - name: offset in: query description: How many results to skip required: false schema: type: string - $ref: '#/components/parameters/Accept' responses: '200': description: successful operation headers: {} content: application/vnd.dwolla.v1.hal+json: schema: $ref: '#/components/schemas/LabelLedgerEntries' post: tags: - labels summary: Create label ledger entries description: Create label ledger entries operationId: createLabelLedgerEntry parameters: - name: id in: path description: A label unique identifier required: true schema: type: string - $ref: '#/components/parameters/Accept' requestBody: description: Parameters to create label ledger entry content: application/json: schema: required: - amount type: object properties: amount: type: object properties: value: type: string currency: type: string responses: '201': description: created headers: Location: $ref: '#/components/headers/Location' /ledger-entries/{id}: get: tags: - labels summary: Retrieve a label ledger entry description: Retrieve a label ledger entry operationId: getLabelLedgerEntry parameters: - name: id in: path description: A label ledger entry unique identifier required: true schema: type: string - $ref: '#/components/parameters/Accept' responses: '200': description: successful operation headers: {} content: application/vnd.dwolla.v1.hal+json: schema: $ref: '#/components/schemas/LabelLedgerEntry' /label-reallocations: post: tags: - labels summary: Create a label reallocation description: Create a label reallocation operationId: createLabelReallocation parameters: - $ref: '#/components/parameters/Accept' requestBody: description: Parameters to create a label reallocation content: application/json: schema: required: - _links - amount type: object properties: _links: type: object properties: from: type: object properties: href: type: string example: https://api.dwolla.com/labels/c91c501c-f49b-48be-a93b-12b45e152d45 to: type: object properties: href: type: string example: https://api.dwolla.com/labels/7e042ffe-e25e-40d2-b86e-748b98845ecc amount: type: object properties: currency: type: string example: '15.00' value: type: string example: USD responses: '201': description: created headers: Location: $ref: '#/components/headers/Location' /label-reallocations/{id}: get: tags: - labels summary: Retrieve a label reallocation description: Retrieve a label reallocation operationId: retrieveLabelLedgerEntry parameters: - name: id in: path description: Label reallocation unique identifier required: true schema: type: string - $ref: '#/components/parameters/Accept' responses: '200': description: successful operation headers: {} content: application/vnd.dwolla.v1.hal+json: schema: type: object properties: _links: type: object properties: self: type: object properties: href: type: string example: https://api.dwolla.com/label-reallocations/fd36b78c-42f3-4e21-8efb-09196fccbd21 type: type: string example: application/vnd.dwolla.v1.hal+json resource-type: type: string example: label-reallocation to-ledger-entry: type: object properties: href: type: string example: https://api.dwolla.com/ledger-entries/d8a4bf7a-3fa0-48b9-873c-765d7375c59f type: type: string example: application/vnd.dwolla.v1.hal+json resource-type: type: string example: ledger-entry from-ledger-entry: type: object properties: href: type: string example: https://api.dwolla.com/ledger-entries/f6a44994-b4da-48e3-bd10-d3a168e6a77d type: type: string example: application/vnd.dwolla.v1.hal+json resource-type: type: string example: ledger-entry created: type: string format: date-time example: '2022-05-16T13:41:31.036Z' /events: get: tags: - events summary: List events description: List events operationId: listEvents parameters: - $ref: '#/components/parameters/Accept' requestBody: description: Parameters to filter events content: application/json: schema: type: object properties: limit: type: integer offset: type: integer responses: '200': description: successful operation headers: {} content: application/vnd.dwolla.v1.hal+json: schema: $ref: '#/components/schemas/Events' '404': description: not found headers: {} content: application/vnd.dwolla.v1.hal+json: schema: type: object properties: code: type: string example: notFound message: type: string example: Resource not found. /events/{id}: get: tags: - events summary: Retrieve event description: Retrieve event operationId: getEvent parameters: - name: id in: path description: ID of application event to get required: true schema: type: string - $ref: '#/components/parameters/Accept' responses: '200': description: successful operation headers: {} content: application/vnd.dwolla.v1.hal+json: schema: $ref: '#/components/schemas/Event' '404': description: not found headers: {} content: application/vnd.dwolla.v1.hal+json: schema: type: object properties: code: type: string example: notFound message: type: string example: Application event not found. /webhook-subscriptions: get: tags: - webhook subscriptions summary: List webhook subscriptions description: List webhook subscriptions operationId: listWebhookSubscriptions parameters: - $ref: '#/components/parameters/Accept' responses: '200': description: successful operation headers: {} content: application/vnd.dwolla.v1.hal+json: schema: type: object properties: _links: type: object properties: self: type: object properties: href: type: string example: https://api.dwolla.com/webhook-subscriptions _embedded: type: object properties: webhook-subscriptions: type: array items: $ref: '#/components/schemas/WebhookSubscription' total: type: integer format: int32 example: 1 post: tags: - webhook subscriptions summary: Create a webhook subscription description: Create a webhook subscription operationId: createWebhookSubscription parameters: - $ref: '#/components/parameters/Accept' requestBody: description: Parameters to create a webhook subscriptions content: application/json: schema: required: - url - secret type: object properties: url: type: string example: http://myapplication.com/webhooks secret: type: string example: sshhhhhh responses: '201': description: create headers: Location: $ref: '#/components/headers/Location' '400': description: Bad request headers: {} content: application/vnd.dwolla.v1.hal: schema: oneOf: - $ref: '#/components/schemas/InvalidUrlFormatError' - $ref: '#/components/schemas/SecretTooLongError' - $ref: '#/components/schemas/MaxSubscriptionsReachedError' '429': description: Too Many Requests headers: {} content: application/vnd.dwolla.v1.hal: schema: $ref: '#/components/schemas/TooManyRequestsError' /webhook-subscriptions/{id}: get: tags: - webhook subscriptions summary: Retrieve a webhook subscription description: Retrieve a webhook subscription operationId: getWebhookSubscription parameters: - name: id in: path description: Webhook subscription unique identifier required: true schema: type: string - $ref: '#/components/parameters/Accept' responses: '200': description: successful operation headers: {} content: application/vnd.dwolla.v1.hal+json: schema: $ref: '#/components/schemas/WebhookSubscription' post: tags: - webhook subscriptions summary: Update a webhook subscription description: Update a webhook subscription operationId: updateWebhookSubscription parameters: - name: id in: path description: Webhook unique identifier required: true schema: type: string requestBody: description: Parameters to update a webhook subscription content: application/json: schema: required: - paused type: object properties: paused: type: boolean example: true responses: '200': description: successful operation headers: {} content: application/vnd.dwolla.v1.hal+json: schema: $ref: '#/components/schemas/WebhookSubscription' '400': description: Bad Request headers: {} content: application/vnd.dwolla.v1.hal+json: schema: $ref: '#/components/schemas/BadRequestError' '404': description: Not Found headers: {} content: application/vnd.dwolla.v1.hal+json: schema: $ref: '#/components/schemas/NotFoundError' delete: tags: - webhook subscriptions summary: Delete a webhook subscription description: Delete a webhook subscription operationId: delete parameters: - name: id in: path description: Webhook unique identifier required: true schema: type: string - $ref: '#/components/parameters/Accept' responses: '200': description: successful operation headers: {} content: application/vnd.dwolla.v1.hal+json: schema: $ref: '#/components/schemas/WebhookSubscription' '404': description: Not Found headers: {} content: application/vnd.dwolla.v1.hal+json: schema: $ref: '#/components/schemas/NotFoundError' /webhook-subscriptions/{id}/webhooks: get: tags: - webhook subscriptions summary: List webhooks for a webhook subscription description: List webhooks for a webhook subscription operationId: listWebhooks parameters: - name: id in: path description: Webhook subscription unique identifier required: true schema: type: string - name: limit in: query description: How many results to return required: false schema: type: string - name: offset in: query description: How many results to skip required: false schema: type: string - name: startDate in: query description: Only include webhooks created after this date. ISO-8601 format `YYYY-MM-DD` required: false schema: type: string - name: endDate in: query description: Only include webhooks created before this date. ISO-8601 format `YYYY-MM-DD` required: false schema: type: string - $ref: '#/components/parameters/Accept' responses: '200': description: successful operation headers: {} content: application/vnd.dwolla.v1.hal+json: schema: type: object properties: _links: type: object properties: self: type: object properties: href: type: string example: https://api.dwolla.com/webhook-subscriptions/a0943041-7a5c-4e8f-92de-b55711ef3a83/webhooks first: type: object properties: href: type: string example: https://api.dwolla.com/webhook-subscriptions/a0943041-7a5c-4e8f-92de-b55711ef3a83/webhooks?limit=25&offset=0 last: type: object properties: href: type: string example: https://api.dwolla.com/webhook-subscriptions/a0943041-7a5c-4e8f-92de-b55711ef3a83/webhooks?limit=25&offset=150 next: type: object properties: href: type: string example: https://api.dwolla.com/webhook-subscriptions/a0943041-7a5c-4e8f-92de-b55711ef3a83/webhooks?limit=25&offset=25 _embedded: type: object properties: webhooks: type: array items: $ref: '#/components/schemas/Webhook' total: type: integer format: int32 example: 1 /webhooks/{id}: get: tags: - webhooks summary: Retrieve a webhook description: Retrieve a webhook operationId: getWebhook parameters: - name: id in: path description: Webhook unique identifier required: true schema: type: string - $ref: '#/components/parameters/Accept' responses: '200': description: successful operation headers: {} content: application/vnd.dwolla.v1.hal+json: schema: $ref: '#/components/schemas/Webhook' '404': description: Not Found headers: {} content: application/vnd.dwolla.v1.hal+json: schema: $ref: '#/components/schemas/NotFoundError' /webhooks/{id}/retries: get: tags: - webhooks summary: List retries for a webhook description: List retries for a webhook operationId: listWebhookRetries parameters: - name: id in: path description: Webhook unique identifier required: true schema: type: string - $ref: '#/components/parameters/Accept' responses: '200': description: successful operation headers: {} content: application/vnd.dwolla.v1.hal+json: schema: $ref: '#/components/schemas/WebhookRetries' '404': description: Not Found headers: {} content: application/vnd.dwolla.v1.hal+json: schema: $ref: '#/components/schemas/NotFoundError' post: tags: - webhooks summary: Retry a webhook description: Retry a webhook operationId: retryWebhook parameters: - name: id in: path description: Webhook unique identifier required: true schema: type: string - $ref: '#/components/parameters/Accept' responses: '201': description: created headers: Location: $ref: '#/components/headers/Location' '404': description: Not Found headers: {} content: application/vnd.dwolla.v1.hal+json: schema: $ref: '#/components/schemas/NotFoundError' /exchange-partners: get: tags: - exchanges summary: List exchange partners description: List exchange partners operationId: listExchangePartners parameters: - $ref: '#/components/parameters/Accept' responses: '200': description: successful operation headers: {} content: application/vnd.dwolla.v1.hal+json: schema: $ref: '#/components/schemas/ExchangePartners' /exchange-partners/{id}: get: tags: - exchanges summary: Retrieve exchange partner description: Retrieve exchange partner operationId: getExchangePartner parameters: - name: id in: path description: Exchange Partner resource unique identifier. required: true schema: type: string example: 292317ec-e252-47d8-93c3-2d128e037aa4 - $ref: '#/components/parameters/Accept' responses: '200': description: successful operation headers: {} content: application/vnd.dwolla.v1.hal+json: schema: $ref: '#/components/schemas/ExchangePartner' '404': description: Not Found headers: {} content: application/vnd.dwolla.v1.hal+json: schema: type: object properties: code: type: string example: NotFound message: type: string example: The requested resource was not found. /exchanges: get: tags: - exchanges summary: List exchanges for an account description: List exchanges for an account operationId: listAccountExchanges parameters: - $ref: '#/components/parameters/Accept' responses: '200': description: successful operation headers: {} content: application/vnd.dwolla.v1.hal+json: schema: $ref: '#/components/schemas/Exchanges' post: tags: - exchanges summary: Create an exchange for an account description: | Create an exchange for an account. The request body will vary based on the exchange partner. For Finicity, the request body will include finicity-specific fields. For MX Secure Exchange, the request body will include a token. For Flinks Secure Exchange, the request body will include a token. For Plaid Secure Exchange, the request body will include a token. operationId: createAccountExchange requestBody: description: Parameters for creating an exchange content: application/json: schema: oneOf: - $ref: '#/components/schemas/FinicitySecureExchangeCreateExchangeRequestBody' - $ref: '#/components/schemas/MXSecureExchangeCreateExchangeRequestBody' - $ref: '#/components/schemas/FlinksSecureExchangeCreateExchangeRequestBody' - $ref: '#/components/schemas/PlaidSecureExchangeCreateExchangeRequestBody' responses: '201': description: Created headers: Location: $ref: '#/components/headers/Location' example: https://api.dwolla.com/exchanges/fcd15e5f-8d13-4570-a9b7-7fb49e55941d content: application/vnd.dwolla.v1.hal+json: schema: type: object '400': description: Bad Request content: application/vnd.dwolla.v1.hal+json: schema: oneOf: - $ref: '#/components/schemas/InvalidExchangeToken' - $ref: '#/components/schemas/InvalidExchange' '401': description: Invalid Scope content: application/vnd.dwolla.v1.hal+json: schema: type: object properties: code: type: string example: InvalidExchange message: type: string example: The exchange is no longer active. /exchanges/{id}: get: tags: - exchanges summary: Retrieve exchange resource description: Retrieve exchange resource operationId: getExchange parameters: - name: id in: path description: Exchange resource unique identifier. required: true schema: type: string example: 292317ec-e252-47d8-93c3-2d128e037aa4 - $ref: '#/components/parameters/Accept' responses: '200': description: successful operation headers: {} content: application/vnd.dwolla.v1.hal+json: schema: $ref: '#/components/schemas/Exchange' '401': description: Invalid Scope headers: {} content: application/vnd.dwolla.v1.hal+json: schema: type: object properties: code: type: string example: InvalidScope message: type: string example: The scopes for retrieving an exchange resource is not enabled for this application. Reach out to Dwolla for more information. '404': description: Not Found headers: {} content: application/vnd.dwolla.v1.hal+json: schema: type: object properties: code: type: string example: NotFound message: type: string example: The requested resource was not found. Check Exchange ID. /customers/{id}/exchanges: get: tags: - exchanges summary: List exchanges for a customer description: List exchanges for a customer operationId: listCustomerExchanges parameters: - name: id in: path description: The ID of the Customer to list exchanges for required: true schema: type: string responses: '200': description: successful operation headers: {} content: application/vnd.dwolla.v1.hal+json: schema: $ref: '#/components/schemas/Exchanges' '404': description: Not Found headers: {} content: application/vnd.dwolla.v1.hal+json: schema: type: object properties: code: type: string example: NotFound message: type: string example: Customer ID not found. Check Customer ID. post: tags: - exchanges summary: Create an exchange for a customer description: | Create an exchange for a customer. The request body will vary based on the exchange partner. For Finicity, the request body will include finicity-specific fields. For MX Secure Exchange, the request body will include an MX token. For MX Open Banking, the request body will include an available connection token. For Flinks Secure Exchange, the request body will include a token. For Plaid Secure Exchange, the request body will include a processor token. For Plaid Open Banking, the request body will include a public token. operationId: createCustomerExchange parameters: - name: id in: path description: The ID of the customer to create an exchange for required: true schema: type: string - $ref: '#/components/parameters/Accept' requestBody: content: application/json: schema: oneOf: - $ref: '#/components/schemas/FinicitySecureExchangeCreateExchangeRequestBody' - $ref: '#/components/schemas/MXSecureExchangeCreateExchangeRequestBody' - $ref: '#/components/schemas/MXOpenBankingCreateExchangeRequestBody' - $ref: '#/components/schemas/FlinksSecureExchangeCreateExchangeRequestBody' - $ref: '#/components/schemas/PlaidSecureExchangeCreateExchangeRequestBody' - $ref: '#/components/schemas/PlaidOpenBankingCreateExchangeRequestBody' responses: '201': description: created headers: Location: $ref: '#/components/headers/Location' example: https://api.dwolla.com/exchanges/fcd15e5f-8d13-4570-a9b7-7fb49e55941d '400': description: Validation Error content: application/vnd.dwolla.v1.hal+json: schema: type: object properties: code: type: string example: ValidationError message: type: string example: Validation error(s) present. See embedded errors list for more details. '401': description: Invalid Scope content: application/vnd.dwolla.v1.hal+json: schema: type: object properties: code: type: string example: InvalidScope message: type: string example: Missing or invalid scopes for requested endpoint. '404': description: Not Found content: application/vnd.dwolla.v1.hal+json: schema: type: object properties: code: type: string example: NotFound message: type: string example: The requested resource was not found. /customers/{id}/exchange-sessions: post: tags: - exchange sessions summary: Create customer exchange session description: | Create a new exchange session for a customer to initiate Instant Account Verification using Dwolla's trusted open banking partners. Currently supported partners are Plaid, Visa, and MX. The redirect-url is conditionally required: - Required for Visa exchange sessions - Required for Plaid exchange sessions on mobile platforms (Android/iOS) - Not required for MX exchange sessions or Plaid web sessions operationId: createCustomerExchangeSession parameters: - name: id in: path description: Customer's unique identifier required: true schema: type: string - $ref: '#/components/parameters/Accept' requestBody: description: Parameters for creating an exchange session required: true content: application/vnd.dwolla.v1.hal+json: schema: $ref: '#/components/schemas/CreateCustomerExchangeSession' responses: '201': description: created headers: Location: $ref: '#/components/headers/Location' '400': description: validation error content: application/vnd.dwolla.v1.hal+json: schema: type: object properties: code: type: string example: ValidationError message: type: string description: | Possible validation errors: - /_links/exchange-partner/href is invalid - /_links/redirect-url/href is invalid - The provided redirect URL must exactly match one of the configured URLs for the account example: /_links/exchange-partner/href is invalid '401': description: unauthorized content: application/vnd.dwolla.v1.hal+json: schema: type: object properties: code: type: string example: InvalidScope message: type: string example: Missing or invalid scopes for requested endpoint '403': description: forbidden content: application/vnd.dwolla.v1.hal+json: schema: oneOf: - type: object properties: code: type: string example: forbidden message: type: string example: The exchange partner specified does not support this product - type: object properties: code: type: string example: forbidden message: type: string example: Exchange sessions with this exchange partner are not enabled for your account '404': description: not found content: application/vnd.dwolla.v1.hal+json: schema: type: object properties: code: type: string example: NotFound message: type: string example: The requested resource was not found /exchange-sessions/{id}: get: tags: - exchange sessions summary: Retrieve exchange session description: Retrieve details of an exchange session operationId: retrieveCustomerExchangeSession parameters: - name: id in: path description: Exchange session's unique identifier required: true schema: type: string - $ref: '#/components/parameters/Accept' responses: '200': description: successful operation content: application/vnd.dwolla.v1.hal+json: schema: $ref: '#/components/schemas/ExchangeSession' '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 retrieve exchange session. '404': description: not found content: application/vnd.dwolla.v1.hal+json: schema: type: object properties: code: type: string example: notFound message: type: string example: Exchange session not found. /exchanges/{id}/exchange-sessions: post: tags: - exchange sessions summary: Create re-authentication exchange session description: | Create a new re-authentication exchange session. The request body is not required for Plaid Web sessions. operationId: createReAuthExchangeSession parameters: - name: id in: path description: Exchange's unique identifier required: true schema: type: string - $ref: '#/components/parameters/Accept' requestBody: description: | Request body parameters. Required for Visa and Plaid mobile sessions, not required for Plaid Web sessions. required: false content: application/vnd.dwolla.v1.hal+json: schema: $ref: '#/components/schemas/CreateReAuthExchangeSession' responses: '201': description: created headers: Location: $ref: '#/components/headers/Location' '400': description: validation error content: application/vnd.dwolla.v1.hal+json: schema: type: object properties: code: type: string example: ValidationError message: type: string example: Invalid request parameters '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 create re-authentication exchange session. /customers/{id}/available-exchange-connections: get: tags: - exchange sessions summary: List available exchange connections description: | Retrieve a list of a customer's external bank accounts that have been authorized through MX Connect. Each account is represented as an "available exchange connection" with details like the account name and associated availableConnectionToken. This information is essential for creating an exchange and corresponding funding source within Dwolla. operationId: listAvailableExchangeConnections parameters: - name: id in: path description: Customer's unique identifier required: true schema: type: string - $ref: '#/components/parameters/Accept' responses: '200': description: successful operation content: application/vnd.dwolla.v1.hal+json: schema: $ref: '#/components/schemas/AvailableExchangeConnections' '404': description: not found content: application/vnd.dwolla.v1.hal+json: schema: type: object properties: code: type: string example: NotFound message: type: string example: The requested resource was not found. Check Customer ID. components: securitySchemes: basicAuth: type: http scheme: basic bearerAuth: type: http scheme: bearer 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 schemas: 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 Root: title: Root type: object properties: _links: type: object additionalProperties: $ref: '#/components/schemas/HalLink' Address: title: Address type: object required: - address1 - city - country - postalCode - state properties: address1: type: string example: 462 Main Street address2: type: string example: Suite 124 city: type: string example: Des Moines postalCode: type: string example: '50309' state: type: string example: IA Account: title: Account type: object properties: _links: type: object additionalProperties: $ref: '#/components/schemas/HalLink' id: type: string example: 2e21f010-3023-4891-aced-ed726d7cd5e1 name: type: string example: Self Employed authorizedRep: type: string example: Jane Doe timezoneOffset: type: integer example: -6 email: type: string example: janedoe@mail.com phone: type: string example: '5555552368' address: $ref: '#/components/schemas/Address' verificationStatus: type: string example: Verified ownershipStatus: type: string example: Exempt ownershipCertificationStatus: type: string example: Exempt type: type: string example: Commercial created: type: string format: date-time example: '2021-10-25T00:39:38.283Z' NotFoundError: title: NotFoundError description: Error response schema for 404 NotFound type: object properties: code: type: string example: NotFound message: type: string example: The requested resource was not found. CreateFundingSourceForAccountRequestBody: title: CreateFundingSourceForAccount type: object properties: _links: type: object properties: exchange: type: object properties: href: type: string name: type: string bankAccountType: type: string enum: - checking - savings accountNumber: type: string routingNumber: type: string channels: type: array items: type: string required: - name - bankAccountType - accountNumber - routingNumber BadRequestSchema: title: BadRequestSchema type: object properties: code: type: string example: ValidationError message: type: string example: Validation error(s) present. See embedded errors list for more details. _embedded: type: object properties: code: type: string example: ValidationError message: type: string example: Validation error(s) present. See embedded errors list for more details. DuplicateResourceSchema: title: DuplicateResourceSchema type: string example: DuplicateResource properties: message: type: string example: 'Bank already exists: id=df8392e5-4c06-42ed-b247-c098ed6f5a11' _links: type: object properties: about: type: object properties: href: type: string example: https://api.dwolla.com/funding-sources/df8392e5-4c06-42ed-b247-c098ed6f5a11 type: type: string example: application/vnd.dwolla.v1.hal+json resource-type: type: string example: funding-source FundingSource: title: FundingSource type: object properties: _links: additionalProperties: $ref: '#/components/schemas/HalLink' id: type: string example: d3d6b41e-5567-4bc6-9c6e-0efd0a3e647e status: type: string example: unverified type: type: string example: bank bankAccountType: type: string example: checking name: type: string example: My bank created: type: string format: date-time example: '2022-07-23T00:18:21.419Z' removed: type: boolean example: true channels: type: array items: type: string example: ach bankName: type: string example: SANDBOX TEST BANK fingerprint: type: string example: 5012989b55af15400e8102f95d2ec5e7ce3aef45c01613280d80a236dd8d6c FundingSources: title: FundingSources type: object properties: _links: additionalProperties: $ref: '#/components/schemas/HalLink' _embedded: type: object properties: funding-sources: type: array items: $ref: '#/components/schemas/FundingSource' total: type: integer format: int32 example: 3 Transfer: title: Transfer type: object properties: _links: type: object additionalProperties: $ref: '#/components/schemas/HalLink' id: type: string example: 15c6bcce-46f7-e811-8112-e8dd3bececa8 status: type: string example: pending amount: type: object properties: value: type: string example: '42.00' currency: type: string example: USD created: type: string format: date-time example: '2018-12-03T22:00:22.970Z' clearing: type: object properties: source: type: string example: standard destination: type: string example: same-day metadata: type: object properties: paymentId: type: string example: '12345678' note: type: string example: Payment for completed work Dec. 1 achDetails: type: object properties: source: type: object properties: addenda: type: object properties: values: type: array items: type: string example: ABC123_AddendaValue destination: type: object properties: addenda: type: object properties: values: type: array items: type: string example: ZYX987_AddendaValue rtpDetails: type: object properties: destination: type: object properties: remittanceData: type: string example: ABC_123 Remittance Data correlationId: type: string example: 8a2cdc8d-629d-4a24-98ac-40b735229fe2 processingChannel: type: object properties: destination: type: string example: real-time-payments Transfers: title: Transfers type: object properties: _links: additionalProperties: $ref: '#/components/schemas/HalLink' _embedded: type: object properties: transfers: type: array items: $ref: '#/components/schemas/Transfer' total: type: integer example: 100 TransferAmount: title: TransferAmount type: object required: - value - currency properties: value: type: string example: '5.00' currency: type: string example: USD MassPayment: title: MassPayment type: object properties: _links: type: object additionalProperties: $ref: '#/components/schemas/HalLink' id: type: string example: 11ac4051-7b76-44fc-87ab-ae23012393f0 status: type: string example: complete created: type: string format: date-time example: '2022-01-20T17:41:41.000Z' metaData: type: object total: $ref: '#/components/schemas/TransferAmount' totalFees: $ref: '#/components/schemas/TransferAmount' correlationId: type: string example: CID-8a2cdc8d-629d-4a24-98ac-40b735229fe2 MassPayments: title: MassPayments type: object properties: _links: type: object additionalProperties: $ref: '#/components/schemas/HalLink' _embedded: type: object properties: mass-payments: type: array items: $ref: '#/components/schemas/MassPayment' total: type: integer example: 100 UnverifiedCustomer: title: CustomerSharedModel description: Shared models between all Customer types type: object properties: _links: additionalProperties: $ref: '#/components/schemas/HalLink' id: type: string example: c41125c5-99c4-4303-a9f6-d066d28a61e3 firstName: type: string example: Jane lastName: type: string example: Doe email: type: string example: janedoe@mail.com type: type: string example: unverified status: type: string example: unverified correlationId: type: string example: CID-abe2bb3d-d2ff-433b-95a3-0debd960ed25 created: type: string format: date-time example: '2022-10-07T16:46:13.023Z' UnverifiedBusinessCustomer: title: RetrieveReceiveOnlyCustomerResponse allOf: - $ref: '#/components/schemas/UnverifiedCustomer' - type: object properties: type: type: string example: receive-only status: type: string example: unverified businessName: type: string example: Jane Corp llc VerifiedPersonalCustomer: title: VerifiedPersonalCustomer allOf: - $ref: '#/components/schemas/UnverifiedCustomer' - type: object properties: type: type: string example: personal status: type: string example: verified address1: type: string example: 123 Main Street address2: type: string example: Ste 123 city: type: string example: Des Moines state: type: string example: IA postalCode: type: string example: '50309' VerifiedSolePropCustomer: title: VerifiedSolePropCustomer allOf: - $ref: '#/components/schemas/UnverifiedCustomer' - type: object properties: type: type: string example: business status: type: string example: verified address1: type: string example: 123 Main Street address2: type: string example: Ste 123 city: type: string example: Des Moines state: type: string example: IA postalCode: type: string example: '50309' businessName: type: string example: Jane Corp businessType: type: string example: soleProprietorship businessClassification: type: string example: 9ed3f670-7d6f-11e3-b1ce-5404a6144203 Controller: title: Controller description: Controller JSON Object for Customer responses type: object properties: firstName: type: string example: John lastName: type: string example: Controller title: type: string example: CEO address: type: object properties: address1: type: string example: 462 Main Street address2: type: string example: Suite 123 address3: type: string example: Unit 123 city: type: string example: Des Moines postalCode: type: string example: '50309' country: type: string example: USA stateProvinceRegion: type: string example: IA VerifiedBusinessCustomer: title: VerifiedBusinessCustomer allOf: - $ref: '#/components/schemas/UnverifiedCustomer' - type: object properties: type: type: string example: business status: type: string example: verified address1: type: string example: 123 Main Street address2: type: string example: Ste 123 city: type: string example: Des Moines state: type: string example: IA postalCode: type: string example: '50309' phone: type: string example: '555555555' website: type: string example: https://www.dwolla.com businessName: type: string example: Jane Corp doingBusinessAs: type: string example: Jane's Coffee and Sweets businessType: type: string example: llc businessClassification: type: string example: 9ed3f670-7d6f-11e3-b1ce-5404a6144203 controller: type: object $ref: '#/components/schemas/Controller' Customer: title: Customer oneOf: - $ref: '#/components/schemas/UnverifiedCustomer' - $ref: '#/components/schemas/UnverifiedBusinessCustomer' - $ref: '#/components/schemas/VerifiedPersonalCustomer' - $ref: '#/components/schemas/VerifiedSolePropCustomer' - $ref: '#/components/schemas/VerifiedBusinessCustomer' Customers: title: Customers type: object properties: _links: additionalProperties: $ref: '#/components/schemas/HalLink' _embedded: type: object properties: customers: type: array items: $ref: '#/components/schemas/Customer' CreateReceiveOnlyRequestBody: title: CreateReceiveOnlyRequestBody description: Create a Receive Only User type: object properties: firstName: type: string example: Account lastName: type: string example: Admin email: type: string example: accountAdmin@email.com type: type: string example: receive-only ipAddress: type: string example: 143.156.7.8 phone: type: string example: 5555555555 correlationId: type: string example: fc451a7a-ae30-4404-aB95-e3553fcd733 businessName: type: string example: Jane Corp llc required: - firstName - lastName - email - type CreateUnverifiedCustomerRequestBody: title: CreateUnverifiedCustomerRequestBody description: Create an Unverified Customer required: - firstName - lastName - email type: object properties: firstName: type: string example: Account lastName: type: string example: Admin email: type: string example: accountAdmin@email.com ipAddress: type: string example: 143.156.7.8 phone: type: string example: 5555555555 correlationId: type: string example: fc451a7a-ae30-4404-aB95-e3553fcd733 businessName: type: string example: Jane Corp llc CreateVerifiedPersonalRequestBody: title: CreateVerifiedPersonalRequestBody description: Create a Verified Personal customer type: object allOf: - $ref: '#/components/schemas/CreateUnverifiedCustomerRequestBody' - type: object required: - address1 - city - state - postalCode - dateOfBirth - type - ssn properties: type: type: string example: personal address1: type: string example: 99-99 33rd St address2: type: string example: 99-99 33rd St city: type: string example: Some City state: type: string example: NY postalCode: type: string example: 11101 ssn: type: string example: 1234 dateOfBirth: type: string example: '1980-09-12' CreateVerifiedSolePropRequestBody: title: CreateVerifiedSolePropRequestBody description: Create a Verified Business customer (Sole Proprietorship) type: object allOf: - $ref: '#/components/schemas/CreateUnverifiedCustomerRequestBody' - $ref: '#/components/schemas/CreateVerifiedPersonalRequestBody' - type: object required: - businessType - ssn - dateOfBirth - businessName - businessClassification properties: type: type: string example: business businessClassification: type: string example: 9ed3f670-7d6f-11e3-b1ce-5404a6144203 businessName: type: string example: Jane Corp doingBusinessAs: type: string example: Jane's Electronics ein: type: string example: 00-0000000 website: type: string example: https://www.domain.com ssn: type: string example: 1234 dateOfBirth: type: string example: '1980-09-12' businessType: type: string example: soleProprietorship InternationalAddress: title: InternationalAddress type: object required: - address1 - city - country - stateProvinceRegion properties: address1: type: string example: 462 Main Street address2: type: string example: Suite 123 address3: type: string example: Unit 123 city: type: string example: Des Moines postalCode: type: string example: '50309' country: type: string example: USA stateProvinceRegion: type: string example: IA CreateCustomerRequestBody_Controller: type: object required: - firstName - lastName - title - dateOfBirth - address properties: firstName: type: string example: John lastName: type: string example: Controller title: type: string example: CEO dateOfBirth: type: string format: date example: '1980-01-31' address: $ref: '#/components/schemas/InternationalAddress' ControllerWithSsn: title: ControllerWithSsn description: Controller object with SSN type: object allOf: - $ref: '#/components/schemas/CreateCustomerRequestBody_Controller' - type: object required: - ssn properties: ssn: type: string example: '1234' Passport: title: Passport type: object required: - number - country properties: number: type: string country: type: string ControllerWithPassport: title: ControllerWithPassport description: Controller object with Passport type: object allOf: - $ref: '#/components/schemas/CreateCustomerRequestBody_Controller' - type: object required: - passport properties: passport: $ref: '#/components/schemas/Passport' CreateVerifiedBusinessRequestBody: title: CreateVerifiedBusinessRequestBody description: Create a Verified Business customer type: object allOf: - $ref: '#/components/schemas/CreateUnverifiedCustomerRequestBody' - $ref: '#/components/schemas/CreateVerifiedPersonalRequestBody' - type: object required: - businessType - controller - businessName - businessClassification - ein properties: type: type: string example: business businessClassification: type: string example: 9ed3f670-7d6f-11e3-b1ce-5404a6144203 businessName: type: string example: Jane Corp doingBusinessAs: type: string example: Jane's Electronics ein: type: string example: 00-0000000 website: type: string example: https://www.domain.com controller: oneOf: - $ref: '#/components/schemas/ControllerWithSsn' - $ref: '#/components/schemas/ControllerWithPassport' businessType: type: string example: llc BadRequestError: title: BadRequestError description: Error response schema for 400 Bad Request type: object properties: code: type: string example: BadRequest message: type: string example: The request body contains bad syntax or is incomplete. DeactivateCustomer: title: DeactivateCustomer description: Deactivate a Customer type: object required: - status properties: status: type: string example: deactivated ReactivateCustomer: title: ReactivateCustomer description: Reactivate a Customer type: object required: - status properties: status: type: string example: reactivated SuspendCustomer: title: SuspendCustomer description: Suspend a Customer type: object required: - status properties: status: type: string example: suspended UpdateUnverifiedAndReceiveOnly: title: UpdateUnverifiedAndReceiveOnly description: Update Unverified Customer or Receive Only User Information type: object properties: firstName: type: string example: John lastName: type: string example: Doe email: type: string example: accountAdmin@email.com businessName: type: string example: Jane Corp UpdateVerifiedPersonal: title: UpdateVerifiedPersonal description: Update Verified Personal Customer Information properties: email: type: string example: accountAdmin@email.com ipAddress: type: string example: 143.156.7.8 address1: type: string example: 123 Main Street address2: type: string example: XYZ Suite city: type: string example: Des Moines state: type: string example: IA postalCode: type: string example: '50309' phone: type: string example: 5555555555 UpdateVerifiedBusiness: title: UpdateVerifiedBusiness description: Update Verified Business Customer Information (both Sole Proprietorship and Non-Sole Proprietorship) allOf: - $ref: '#/components/schemas/UpdateVerifiedPersonal' - type: object properties: doingBusinessAs: type: string example: Jane's Electronics website: type: string example: https://www.domain.com BusinessClassification: title: BusinessClassification type: object properties: _links: type: object properties: self: $ref: '#/components/schemas/HalLink' _embedded: type: object properties: industry-classifications: type: array items: type: object properties: id: type: string example: 9ed3f66b-7d6f-11e3-95ac-5404a6144203 name: type: string example: Wineries id: type: string example: 9ed3f669-7d6f-11e3-b545-5404a6144203 name: type: string example: Food retail and service BusinessClassifications: title: BusinessClassifications type: object properties: _links: type: object additionalProperties: $ref: '#/components/schemas/HalLink' _embedded: type: object properties: mass-payments: type: array items: $ref: '#/components/schemas/BusinessClassification' BeneficialOwner: title: BeneficialOwner description: Request body model for a Beneficial Owner type: object properties: _links: additionalProperties: $ref: '#/components/schemas/HalLink' id: type: string example: d3d6b41e-5567-4bc6-9c6e-0efd0a3e647e firstName: type: string lastName: type: string address: $ref: '#/components/schemas/InternationalAddress' verificationStatus: type: string example: verified created: type: string format: date-time example: '2022-07-23T00:18:21.419Z' BeneficialOwners: title: BeneficialOwners description: Request model for list beneficial owners type: object properties: _links: type: object additionalProperties: $ref: '#/components/schemas/HalLink' _embedded: type: object properties: beneficial-owners: type: array items: $ref: '#/components/schemas/BeneficialOwner' BeneficialOwnerRequestBody: title: BeneficialOwnerRequestBody description: Shared Request body model for creating a Beneficial Owner required: - firstName - lastName - dateOfBirth - address type: object properties: firstName: type: string lastName: type: string dateOfBirth: type: string address: $ref: '#/components/schemas/InternationalAddress' BeneficialOwnerWithSsn: title: BeneficialOwnerWithSsn description: Request body for creating and updating a Beneficial Owner with an SSN type: object allOf: - $ref: '#/components/schemas/BeneficialOwnerRequestBody' - type: object required: - ssn properties: ssn: type: string BeneficialOwnerWithPassport: title: BeneficialOwnerWithPassport description: Request body for creating and updating a Beneficial Owner with a Passport type: object allOf: - $ref: '#/components/schemas/BeneficialOwnerRequestBody' - type: object required: - passport properties: passport: $ref: '#/components/schemas/Passport' BeneficialOwnership: title: BeneficialOwnership type: object properties: _links: type: object properties: self: $ref: '#/components/schemas/HalLink' status: type: string example: uncertified Document: title: Document type: object properties: _links: type: object properties: self: $ref: '#/components/schemas/HalLink' id: type: string example: 56502f7a-fa59-4a2f-8579-0f8bc9d7b9cc status: type: string example: reviewed type: type: string example: passport created: type: string format: date-time example: '2015-09-29T21:42:16.000Z' documentVerificationStatus: type: string example: rejected failureReason: type: string example: ScanDobMismatch allFailureReasons: type: array items: type: object properties: reason: type: string example: ScanDobMismatch description: type: string example: Scan DOB does not match DOB on account Documents: title: Documents type: object properties: _links: type: object additionalProperties: $ref: '#/components/schemas/HalLink' _embedded: type: object properties: documents: type: array items: $ref: '#/components/schemas/Document' total: type: integer example: 100 MaximumNumberOfResourcesSchema: title: MaximumNumberOfResourcesSchema type: object properties: code: type: string example: maximumNumberOfResources message: type: string example: Max of four files upload allowed. Please wait for Dwolla to manually check the documents. InvalidFileTypeSchema: title: InvalidFileTypeSchema type: object properties: code: type: string example: invalidFileType message: type: string example: 'File types supported: Personal IDs - .jpg, .jpeg or .png. Business Documents - .jpg, .jpeg, .png, or .pdf.' InvalidResourceStateSchema: title: InvalidResourceStateSchema type: object properties: code: type: string example: invalidResourceState message: type: string example: Resource cannot be modified. Document creation not allowed for already verified Customers or non-verified Customer types. NotAuthorizedSchema: title: NotAuthorizedSchema type: object properties: code: type: string example: notAuthorized message: type: string example: Not authorized to create documents. ForbiddenError: title: ForbiddenError description: Error response schema for 403 Forbidden type: object properties: code: type: string example: Forbidden message: type: string example: The supplied credentials are not authorized for this resource. InvalidKbaSessionError: title: InvalidKbaSessionError type: object properties: code: type: string example: InvalidResourceState message: type: string example: The kba session is no longer valid. ExpiredKbaSessionError: title: ExpiredKbaSessionError type: object properties: code: type: string example: InvalidResourceState message: type: string example: The kba session has expired. CreateCustomerFundingSource: oneOf: - type: object description: Schema for creating a basic bank funding source using routing and account numbers. This is the traditional method of adding a bank account. required: - routingNumber - accountNumber - bankAccountType - name properties: routingNumber: type: string description: A bank routing number that identifies a bank or credit union in the U.S. example: '222222226' accountNumber: type: string description: The bank account number example: '123456789' bankAccountType: type: string enum: - checking - savings - general-ledger - loan description: Type of bank account example: checking name: type: string description: Arbitrary nickname for the funding source. Must be 50 characters or less. example: Jane Doe's Checking plaidToken: type: string description: A processor token obtained from Plaid for adding and verifying a bank channels: type: array items: type: string enum: - wire description: An array containing a list of processing channels. ACH is the default processing channel for bank transfers. _links: type: object properties: on-demand-authorization: type: object required: - href properties: href: type: string format: uri example: https://api-sandbox.dwolla.com/on-demand-authorizations/30e7c028-0bdf-e511-80de-0aa34a9b2388 - type: object description: Schema for creating a funding source using an exchange resource. This method is used when the bank account information is obtained via Instant Account Verification (IAV) through an exchange partner (like Plaid, Visa, MX, or Finicity). required: - _links - bankAccountType - name properties: _links: type: object required: - exchange properties: exchange: type: object required: - href properties: href: type: string format: uri example: https://api-sandbox.dwolla.com/exchanges/6bc9109a-04fd-49b6-ace6-ca06fd282d65 on-demand-authorization: type: object required: - href properties: href: type: string format: uri example: https://api-sandbox.dwolla.com/on-demand-authorizations/30e7c028-0bdf-e511-80de-0aa34a9b2388 bankAccountType: type: string enum: - checking - savings - general-ledger - loan description: Type of bank account example: checking name: type: string description: Arbitrary nickname for the funding source. Must be 50 characters or less. example: Jane Doe's Checking - type: object description: Schema for creating a Virtual Account Number (VAN) . VANs are unique account numbers for receiving external transactions into a Dwolla Balance. required: - name - type - bankAccountType properties: name: type: string description: Arbitrary nickname for the funding source. Must be 50 characters or less. example: My First VAN type: type: string enum: - virtual description: Type of funding source. Must be set to "virtual" for VAN creation. example: virtual bankAccountType: type: string enum: - checking description: Type of bank account. Must be "checking" for Virtual Account Numbers. example: checking UpdateUnverifiedBank: title: UpdateUnverifiedBank description: Request body for updating information of an unverified bank funding source type: object required: - name properties: routingNumber: type: string example: 222222226 accountNumber: type: string example: 123456789 bankAccountType: type: string example: checking name: type: string example: Jane Doe’s Checking UpdateVerifiedBank: title: UpdateVerifiedBank description: Request body for updating information of a Verified bank funding source type: object required: - name properties: name: type: string example: Jane Doe’s Checking RemoveBank: title: RemoveBank description: Request body for removing a bank funding source type: object required: - removed properties: removed: type: boolean example: true VerifyMicroDeposits: title: VerifyMicroDeposits description: Request body for verifying micro-deposits type: object required: - amount1 - amount2 properties: amount1: type: object required: - value - currency properties: value: type: string example: 0.02 currency: type: string example: USD amount2: type: object required: - value - currency properties: value: type: string example: 0.03 currency: type: string example: USD SourceNotFoundError: title: SourceNotFoundError type: object properties: code: type: string example: ValidationError message: type: string example: Validation error(s) present. See embedded errors list for more details. _embedded: type: object properties: errors: type: array items: type: object properties: code: type: string example: Invalid message: type: string example: Funding source not found. path: type: string example: /_links/source/href _links: type: object example: {} ReceiverNotFoundError: title: ReceiverNotFoundError type: object properties: code: type: string example: ValidationError message: type: string example: Validation error(s) present. See embedded errors list for more details. _embedded: type: object properties: errors: type: array items: type: object properties: code: type: string example: Invalid message: type: string example: Receiver not found. path: type: string example: /_links/destination/href _links: type: object example: {} InvalidSourceFundingSourceError: title: InvalidSourceFundingSourceError type: object properties: code: type: string example: ValidationError message: type: string example: Validation error(s) present. See embedded errors list for more details. _embedded: type: object properties: errors: type: array items: type: object properties: code: type: string example: Invalid message: type: string example: Invalid funding source. path: type: string example: /_links/source/href _links: type: object example: {} SenderRestrictedError: title: SenderRestrictedError type: object properties: code: type: string example: ValidationError message: type: string example: Validation error(s) present. See embedded errors list for more details. _embedded: type: object properties: errors: type: array items: type: object properties: code: type: string example: Restricted message: type: string example: Sender restricted. path: type: string example: /_links/source/href _links: type: object example: {} ReceiverRestrictedError: title: ReceiverRestrictedError type: object properties: code: type: string example: ValidationError message: type: string example: Validation error(s) present. See embedded errors list for more details. _embedded: type: object properties: errors: type: array items: type: object properties: code: type: string example: Restricted message: type: string example: Receiver restricted. path: type: string example: /_links/destination/href _links: type: object example: {} InvalidMetadataError: title: InvalidMetadataError type: object properties: code: type: string example: ValidationError message: type: string example: Validation error(s) present. See embedded errors list for more details. _embedded: type: object properties: errors: type: array items: type: object properties: code: type: string example: Invalid message: type: string example: Invalid metadata. path: type: string example: /metadata _links: type: object example: {} OperationBlockedError: title: OperationBlockedError type: object properties: code: type: string example: ValidationError message: type: string example: Validation error(s) present. See embedded errors list for more details. _embedded: type: object properties: errors: type: array items: type: object properties: code: type: string example: NotAllowed message: type: string example: Receiver cannot receive from sender. path: type: string example: /_links/destination/href _links: type: object example: {} InvalidAmountLimitError: title: InvalidAmountLimitError type: object properties: code: type: string example: ValidationError message: type: string example: Validation error(s) present. See embedded errors list for more details. _embedded: type: object properties: errors: type: array items: type: object properties: code: type: string example: Invalid message: type: string example: Invalid amount. The supplied amount is greater than your transaction limit. path: type: string example: /amount/value _links: type: object example: {} CannotParseAmountError: title: CannotParseAmountError type: object properties: code: type: string example: ValidationError message: type: string example: Validation error(s) present. See embedded errors list for more details. _embedded: type: object properties: errors: type: array items: type: object properties: code: type: string example: InvalidFormat message: type: string example: Invalid amount. The supplied amount must be a positive number. path: type: string example: /amount/value _links: type: object example: {} InsufficientFundsError: title: InsufficientFundsError type: object properties: code: type: string example: ValidationError message: type: string example: Validation error(s) present. See embedded errors list for more details. _embedded: type: object properties: errors: type: array items: type: object properties: code: type: string example: InsufficientFunds message: type: string example: Insufficient funds. path: type: string example: /_links/source/href _links: type: object example: {} FacilitatorFeeAccountNotFoundError: title: FacilitatorFeeAccountNotFoundError type: object properties: code: type: string example: ValidationError message: type: string example: Validation error(s) present. See embedded errors list for more details. _embedded: type: object properties: errors: type: array items: type: object properties: code: type: string example: Invalid message: type: string example: Facilitator fee account not found. path: type: string example: '' _links: type: object example: {} FacilitatorFeeSumTooLargeError: title: FacilitatorFeeSumTooLargeError type: object properties: code: type: string example: ValidationError message: type: string example: Validation error(s) present. See embedded errors list for more details. _embedded: type: object properties: errors: type: array items: type: object properties: code: type: string example: Invalid message: type: string example: Facilitator fee sum too large. path: type: string example: '' _links: type: object example: {} FacilitatorFeeBelowMinimumError: title: FacilitatorFeeBelowMinimumError type: object properties: code: type: string example: ValidationError message: type: string example: Validation error(s) present. See embedded errors list for more details. _embedded: type: object properties: errors: type: array items: type: object properties: code: type: string example: Invalid message: type: string example: Facilitator fee below minimum. path: type: string example: '' _links: type: object example: {} HighRiskError: title: HighRiskError type: object properties: code: type: string example: ValidationError message: type: string example: Validation error(s) present. See embedded errors list for more details. _embedded: type: object properties: errors: type: array items: type: object properties: code: type: string example: NotAllowed message: type: string example: Due to account restrictions, we are unable to process this transaction. path: type: string example: /_links/destination/href _links: type: object example: {} IncompatibleHoldingsError: title: IncompatibleHoldingsError type: object properties: code: type: string example: ValidationError message: type: string example: Validation error(s) present. See embedded errors list for more details. _embedded: type: object properties: errors: type: array items: type: object properties: code: type: string example: NotAllowed message: type: string example: Receiver cannot receive from sender. path: type: string example: /_links/destination/href _links: type: object example: {} DirectAccountWithoutBankError: title: DirectAccountWithoutBankError type: object properties: code: type: string example: ValidationError message: type: string example: Validation error(s) present. See embedded errors list for more details. _embedded: type: object properties: errors: type: array items: type: object properties: code: type: string example: RequiresFundingSource message: type: string example: Receiver requires funding source. path: type: string example: /_links/destination/href _links: type: object example: {} SourceSameAsDestinationError: title: SourceSameAsDestinationError type: object properties: code: type: string example: ValidationError message: type: string example: Validation error(s) present. See embedded errors list for more details. _embedded: type: object properties: errors: type: array items: type: object properties: code: type: string example: Invalid message: type: string example: Receiver cannot be the owner of the source funding source. path: type: string example: /_links/destination/href _links: type: object example: {} InvalidFacilitatorError: title: InvalidFacilitatorError type: object properties: code: type: string example: ValidationError message: type: string example: Validation error(s) present. See embedded errors list for more details. _embedded: type: object properties: errors: type: array items: type: object properties: code: type: string example: Invalid message: type: string example: Account cannot facilitate this transaction. path: type: string example: '' _links: type: object example: {} InvalidFacilitatorFeeCollectFromError: title: InvalidFacilitatorFeeCollectFromError type: object properties: code: type: string example: ValidationError message: type: string example: Validation error(s) present. See embedded errors list for more details. _embedded: type: object properties: errors: type: array items: type: object properties: code: type: string example: Invalid message: type: string example: Unable to charge fee to specified destination. path: type: string example: /fees/_links/charge-to/href _links: type: object example: {} InvalidFacilitatorFeeCollectFromCombinationError: title: InvalidFacilitatorFeeCollectFromCombinationError type: object properties: code: type: string example: ValidationError message: type: string example: Validation error(s) present. See embedded errors list for more details. _embedded: type: object properties: errors: type: array items: type: object properties: code: type: string example: Invalid message: type: string example: Currently, all fees must be paid by same destination." path: type: string example: /fees/_links/charge-to/href _links: type: object example: {} InvalidDestinationFundingSourceError: title: InvalidDestinationFundingSourceError type: object properties: code: type: string example: ValidationError message: type: string example: Validation error(s) present. See embedded errors list for more details. _embedded: type: object properties: errors: type: array items: type: object properties: code: type: string example: Invalid message: type: string example: Invalid destination funding source. path: type: string example: /_links/destination/href _links: type: object example: {} InvalidFacilitatorFeeAmountError: title: InvalidFacilitatorFeeAmountError type: object properties: code: type: string example: ValidationError message: type: string example: Validation error(s) present. See embedded errors list for more details. _embedded: type: object properties: errors: type: array items: type: object properties: code: type: string example: Invalid message: type: string example: Invalid facilitator fee amount. path: type: string example: /fees/_links/charge-to/href _links: type: object example: {} WeeklyReceiveLimitReachedError: title: WeeklyReceiveLimitReachedError type: object properties: code: type: string example: ValidationError message: type: string example: Validation error(s) present. See embedded errors list for more details. _embedded: type: object properties: errors: type: array items: type: object properties: code: type: string example: Restricted message: type: string example: Destination customer has reached its weekly receive limit. path: type: string example: /_links/destination/href _links: type: object example: {} InvalidDestinationClearingTypeError: title: InvalidDestinationClearingTypeError type: object properties: code: type: string example: ValidationError message: type: string example: Validation error(s) present. See embedded errors list for more details. _embedded: type: object properties: errors: type: array items: type: object properties: code: type: string example: Restricted message: type: string example: Destination clearing type is currently not enabled. path: type: string example: /clearing/destination _links: type: object example: {} InvalidAmountForDestinationClearingTypeError: title: InvalidAmountForDestinationClearingTypeError type: object properties: code: type: string example: ValidationError message: type: string example: Validation error(s) present. See embedded errors list for more details. _embedded: type: object properties: errors: type: array items: type: object properties: code: type: string example: Restricted message: type: string example: Amount is above the allowed threshold for the specified destination clearing type. path: type: string example: /amount/value _links: type: object example: {} InvalidCorrelationIdError: title: InvalidCorrelationIdError type: object properties: code: type: string example: ValidationError message: type: string example: Validation error(s) present. See embedded errors list for more details. _embedded: type: object properties: errors: type: array items: type: object properties: code: type: string example: InvalidFormat message: type: string example: Correlation id must be at least one character and up to 255 characters when supplied. path: type: string example: /correlationId _links: type: object example: {} SourceAddendaMaxLengthError: title: SourceAddendaMaxLengthError type: object properties: code: type: string example: ValidationError message: type: string example: Validation error(s) present. See embedded errors list for more details. _embedded: type: object properties: errors: type: array items: type: object properties: code: type: string example: InvalidFormat message: type: string example: Ach addenda entries can be up to 80 characters when supplied. path: type: string example: /achDetails/source/addenda/values _links: type: object example: {} DestinationAddendaMaxLengthError: title: DestinationAddendaMaxLengthError type: object properties: code: type: string example: ValidationError message: type: string example: Validation error(s) present. See embedded errors list for more details. _embedded: type: object properties: errors: type: array items: type: object properties: code: type: string example: InvalidFormat message: type: string example: Ach addenda entries can be up to 80 characters when supplied. path: type: string example: /achDetails/destination/addenda/values _links: type: object example: {} AchAddendaEntriesNotEnabledForAccountError: title: AchAddendaEntriesNotEnabledForAccountError type: object properties: code: type: string example: ValidationError message: type: string example: Validation error(s) present. See embedded errors list for more details. _embedded: type: object properties: errors: type: array items: type: object properties: code: type: string example: NotAllowed message: type: string example: Supplying ach addenda entries is currently not enabled. path: type: string example: '' _links: type: object example: {} PointOfSaleAddendaEntriesNotEnabledForAccountError: title: PointOfSaleAddendaEntriesNotEnabledForAccountError type: object properties: code: type: string example: ValidationError message: type: string example: Validation error(s) present. See embedded errors list for more details. _embedded: type: object properties: errors: type: array items: type: object properties: code: type: string example: NotAllowed message: type: string example: Supplying point of sale addenda entries is currently not enabled. path: type: string example: '' _links: type: object example: {} IncompatibleAddendaEntriesError: title: IncompatibleAddendaEntriesError type: object properties: code: type: string example: ValidationError message: type: string example: Validation error(s) present. See embedded errors list for more details. _embedded: type: object properties: errors: type: array items: type: object properties: code: type: string example: NotAllowed message: type: string example: Addenda must not include both 'values' and 'pointOfSale addenda path: type: string example: /achDetails/source/addenda/pointOfSale _links: type: object example: {} InvalidPointOfSaleAddendaIdentificationCodeError: title: InvalidPointOfSaleAddendaIdentificationCodeError type: object properties: code: type: string example: ValidationError message: type: string example: Validation error(s) present. See embedded errors list for more details. _embedded: type: object properties: errors: type: array items: type: object properties: code: type: string example: InvalidFormat message: type: string example: Identification code on a Point of Sale addenda entry is required and can be up to 6 characters. path: type: string example: /achDetails/source/addenda/pointOfSale/identificationCode _links: type: object example: {} InvalidPointOfSaleAddendaSerialNumberError: title: InvalidPointOfSaleAddendaSerialNumberError type: object properties: code: type: string example: ValidationError message: type: string example: Validation error(s) present. See embedded errors list for more details. _embedded: type: object properties: errors: type: array items: type: object properties: code: type: string example: InvalidFormat message: type: string example: Serial number on a Point of Sale addenda entry is required and can be up to 6 characters. path: type: string example: /achDetails/source/addenda/pointOfSale/serialNumber _links: type: object example: {} InvalidPointOfSaleAddendaDateError: title: InvalidPointOfSaleAddendaDateError type: object properties: code: type: string example: ValidationError message: type: string example: Validation error(s) present. See embedded errors list for more details. _embedded: type: object properties: errors: type: array items: type: object properties: code: type: string example: InvalidFormat message: type: string example: 'Date on a Point of Sale addenda entry is required and should be ISO-8601 format: YYYY-MM-DD.' path: type: string example: /achDetails/source/addenda/pointOfSale/date _links: type: object example: {} InvalidPointOfSaleAddendaAddressError: title: InvalidPointOfSaleAddendaAddressError type: object properties: code: type: string example: ValidationError message: type: string example: Validation error(s) present. See embedded errors list for more details. _embedded: type: object properties: errors: type: array items: type: object properties: code: type: string example: InvalidFormat message: type: string example: Address on a Point of Sale addenda entry is required and can be up to 27 characters. path: type: string example: /achDetails/source/addenda/pointOfSale/address _links: type: object example: {} InvalidPointOfSaleAddendaCityError: title: InvalidPointOfSaleAddendaCityError type: object properties: code: type: string example: ValidationError message: type: string example: Validation error(s) present. See embedded errors list for more details. _embedded: type: object properties: errors: type: array items: type: object properties: code: type: string example: InvalidFormat message: type: string example: City on a Point of Sale addenda entry is required and can be up to 15 characters. path: type: string example: /achDetails/source/addenda/pointOfSale/city _links: type: object example: {} InvalidPointOfSaleAddendaStateError: title: InvalidPointOfSaleAddendaStateError type: object properties: code: type: string example: ValidationError message: type: string example: Validation error(s) present. See embedded errors list for more details. _embedded: type: object properties: errors: type: array items: type: object properties: code: type: string example: InvalidFormat message: type: string example: State on a Point of Sale addenda entry is required and should be a valid 2-letter abbreviation. path: type: string example: /achDetails/source/addenda/pointOfSale/state _links: type: object example: {} TransferExpiredForFeeError: title: TransferExpiredForFeeError type: object properties: code: type: string example: ValidationError message: type: string example: Validation error(s) present. See embedded errors list for more details. _embedded: type: object properties: errors: type: array items: type: object properties: code: type: string example: NotAllowed message: type: string example: Return fees can only be charged within 45 days of the original transfer's settlement date. path: type: string example: /_links/failed-transfer/href _links: type: object example: {} InvalidFeeOdfiError: title: InvalidFeeOdfiError type: object properties: code: type: string example: ValidationError message: type: string example: Validation error(s) present. See embedded errors list for more details. _embedded: type: object properties: errors: type: array items: type: object properties: code: type: string example: NotAllowed message: type: string example: Transfer ineligible. path: type: string example: /_links/failed-transfer/href _links: type: object example: {} InvalidSourceBankAccountTypeError: title: InvalidBankAccountTypeError type: object properties: code: type: string example: ValidationError message: type: string example: Validation error(s) present. See embedded errors list for more details. _embedded: type: object properties: errors: type: array items: type: object properties: code: type: string example: Invalid message: type: string example: Invalid bank account type path: type: string example: /_links/source/href _links: type: object example: {} InvalidDestinationBankAccountTypeError: title: InvalidDestinationBankAccountTypeError type: object properties: code: type: string example: ValidationError message: type: string example: Validation error(s) present. See embedded errors list for more details. _embedded: type: object properties: errors: type: array items: type: object properties: code: type: string example: Invalid message: type: string example: Invalid bank account type path: type: string example: /_links/destination/href _links: type: object example: {} IncompatibleSourceAndDestinationTypesError: title: IncompatibleSourceAndDestinationTypesError type: object properties: code: type: string example: ValidationError message: type: string example: Validation error(s) present. See embedded errors list for more details. _embedded: type: object properties: errors: type: array items: type: object properties: code: type: string example: Invalid message: type: string example: Card type funding sources can only accept payments directly from a balance path: type: string example: /_links/destination/href _links: type: object example: {} IncompatibleSourceForRtpDestinationError: title: IncompatibleSourceForRtpDestinationError type: object properties: code: type: string example: ValidationError message: type: string example: Validation error(s) present. See embedded errors list for more details. _embedded: type: object properties: errors: type: array items: type: object properties: code: type: string example: NotAllowed message: type: string example: Transfers using the Real Time Payments processing channel must be funded by a balance path: type: string example: /_links/destination/href _links: type: object example: {} InvalidAmountForDestinationProcessingChannelError: title: InvalidAmountForDestinationProcessingChannelError type: object properties: code: type: string example: ValidationError message: type: string example: Validation error(s) present. See embedded errors list for more details. _embedded: type: object properties: errors: type: array items: type: object properties: code: type: string example: Restricted message: type: string example: Amount is greater than the allowed threshold for the specified destination processing channel. path: type: string example: /amount/value _links: type: object example: {} RtpFacilitatorFeeNotSupportedError: title: RtpFacilitatorFeeNotSupportedError type: object properties: code: type: string example: ValidationError message: type: string example: Validation error(s) present. See embedded errors list for more details. _embedded: type: object properties: errors: type: array items: type: object properties: code: type: string example: NotAllowed message: type: string example: Real Time Payments does not currently support facilitator fees path: type: string example: '' _links: type: object example: {} RtpUnverifiedSenderNotSupportedError: title: RtpUnverifiedSenderNotSupportedError type: object properties: code: type: string example: ValidationError message: type: string example: Validation error(s) present. See embedded errors list for more details. _embedded: type: object properties: errors: type: array items: type: object properties: code: type: string example: NotAllowed message: type: string example: Real Time Payments does not currently support unverified senders path: type: string example: '' _links: type: object example: {} RtpPersonalToPersonalNotSupportedError: title: RtpPersonalToPersonalNotSupportedError type: object properties: code: type: string example: ValidationError message: type: string example: Validation error(s) present. See embedded errors list for more details. _embedded: type: object properties: errors: type: array items: type: object properties: code: type: string example: NotAllowed message: type: string example: Real Time Payments does not currently support transfers between personal accounts path: type: string example: '' _links: type: object example: {} DestinationProcessingChannelNotSupportedError: title: DestinationProcessingChannelNotSupportedError type: object properties: code: type: string example: ValidationError message: type: string example: Validation error(s) present. See embedded errors list for more details. _embedded: type: object properties: errors: type: array items: type: object properties: code: type: string example: NotAllowed message: type: string example: Destination funding source does not support processing channel path: type: string example: /processingChannel/destination _links: type: object example: {} DestinationRemittanceDataMaxLengthError: title: DestinationRemittanceDataMaxLengthError type: object properties: code: type: string example: ValidationError message: type: string example: Validation error(s) present. See embedded errors list for more details. _embedded: type: object properties: errors: type: array items: type: object properties: code: type: string example: InvalidFormat message: type: string example: Remittance data entries can be up to 140 characters when supplied. path: type: string example: /rtpDetails/destination/remittanceData _links: type: object example: {} WithdrawInvalidAmountError: title: WithdrawInvalidAmountError type: object properties: code: type: string example: ValidationError message: type: string example: Validation error(s) present. See embedded errors list for more details. _embedded: type: object properties: errors: type: array items: type: object properties: code: type: string example: Invalid message: type: string example: Invalid amount. path: type: string example: /amount/value _links: type: object example: {} WithdrawInvalidFundingSourceError: title: WithdrawInvalidFundingSourceError type: object properties: code: type: string example: ValidationError message: type: string example: Validation error(s) present. See embedded errors list for more details. _embedded: type: object properties: errors: type: array items: type: object properties: code: type: string example: Invalid message: type: string example: Destination funding source is either removed or does not exist. path: type: string example: /_links/destination/href _links: type: object example: {} WithdrawAccountRestrictedError: title: WithdrawAccountRestrictedError type: object properties: code: type: string example: ValidationError message: type: string example: Validation error(s) present. See embedded errors list for more details. _embedded: type: object properties: errors: type: array items: type: object properties: code: type: string example: Restricted message: type: string example: Account or customer restricted. path: type: string example: /_links/source/href _links: type: object example: {} WithdrawInvalidAmountForClearingTypeError: title: WithdrawInvalidAmountForClearingTypeError type: object properties: code: type: string example: ValidationError message: type: string example: Validation error(s) present. See embedded errors list for more details. _embedded: type: object properties: errors: type: array items: type: object properties: code: type: string example: Restricted message: type: string example: Amount is above the allowed threshold for the specified clearing type. path: type: string example: /amount/value _links: type: object example: {} WithdrawInvalidWireBeneficiaryLocalityError: title: WithdrawInvalidWireBeneficiaryLocalityError type: object properties: code: type: string example: ValidationError message: type: string example: Validation error(s) present. See embedded errors list for more details. _embedded: type: object properties: errors: type: array items: type: object properties: code: type: string example: InvalidFormat message: type: string example: Beneficiary locality must not exceed 35 characters and contain only alphanumeric, white space, '.' or '#' characters. path: type: string example: /wireInstructions/beneficiaryLocality _links: type: object example: {} WithdrawInvalidWireBeneficiaryRegionError: title: WithdrawInvalidWireBeneficiaryRegionError type: object properties: code: type: string example: ValidationError message: type: string example: Validation error(s) present. See embedded errors list for more details. _embedded: type: object properties: errors: type: array items: type: object properties: code: type: string example: InvalidFormat message: type: string example: Beneficiary region must not exceed 35 characters and contain only alphanumeric, white space, '.' or '#' characters. path: type: string example: /wireInstructions/beneficiaryRegion _links: type: object example: {} WithdrawInvalidWireBeneficiaryCountryError: title: WithdrawInvalidWireBeneficiaryCountryError type: object properties: code: type: string example: ValidationError message: type: string example: Validation error(s) present. See embedded errors list for more details. _embedded: type: object properties: errors: type: array items: type: object properties: code: type: string example: InvalidFormat message: type: string example: Beneficiary country must not exceed 35 characters and contain only alphanumeric, white space, '.' or '#' characters. path: type: string example: /wireInstructions/beneficiaryCountry _links: type: object example: {} WithdrawInvalidWireOriginatorToBeneficiaryError: title: WithdrawInvalidWireOriginatorToBeneficiaryError type: object properties: code: type: string example: ValidationError message: type: string example: Validation error(s) present. See embedded errors list for more details. _embedded: type: object properties: errors: type: array items: type: object properties: code: type: string example: InvalidFormat message: type: string example: Originator to beneficiary items must not exceed 35 characters and contain only alphanumeric, white space, '.' or '#' characters. path: type: string example: /wireInstructions/originatorToBeneficiary _links: type: object example: {} WithdrawProcessingChannelNotSupportedError: title: WithdrawProcessingChannelNotSupportedError type: object properties: code: type: string example: ValidationError message: type: string example: Validation error(s) present. See embedded errors list for more details. _embedded: type: object properties: errors: type: array items: type: object properties: code: type: string example: Invalid message: type: string example: Unsupported processing channel. path: type: string example: /_links/destination/href _links: type: object example: {} WithdrawRtpUnverifiedSenderNotSupportedError: title: WithdrawRtpUnverifiedSenderNotSupportedError type: object properties: code: type: string example: ValidationError message: type: string example: Validation error(s) present. See embedded errors list for more details. _embedded: type: object properties: errors: type: array items: type: object properties: code: type: string example: NotAllowed message: type: string example: Real Time Payments does not currently support unverified senders path: type: string example: '' _links: type: object example: {} WithdrawRtpPersonalWithdrawalNotSupportedError: title: WithdrawRtpPersonalWithdrawalNotSupportedError type: object properties: code: type: string example: ValidationError message: type: string example: Validation error(s) present. See embedded errors list for more details. _embedded: type: object properties: errors: type: array items: type: object properties: code: type: string example: NotAllowed message: type: string example: Real Time Payments withdrawal from a personal account is currently not supported path: type: string example: '' _links: type: object example: {} DepositAccountRestrictedError: title: DepositAccountRestrictedError type: object properties: code: type: string example: ValidationError message: type: string example: Validation error(s) present. See embedded errors list for more details. _embedded: type: object properties: errors: type: array items: type: object properties: code: type: string example: Restricted message: type: string example: Account is restricted. path: type: string example: /_links/destination/href _links: type: object example: {} WireInvalidImadError: title: WireInvalidImadError type: object properties: code: type: string example: ValidationError message: type: string example: Validation error(s) present. See embedded errors list for more details. _embedded: type: object properties: errors: type: array items: type: object properties: code: type: string example: Invalid message: type: string example: Missing or invalid IMAD. path: type: string example: /imad _links: type: object example: {} WireAccountRestrictedError: title: WireAccountRestrictedError type: object properties: code: type: string example: ValidationError message: type: string example: Validation error(s) present. See embedded errors list for more details. _embedded: type: object properties: errors: type: array items: type: object properties: code: type: string example: Restricted message: type: string example: Account or customer restricted. path: type: string example: /_links/destination/href _links: type: object example: {} WireNotEnabledError: title: WireNotEnabledError type: object properties: code: type: string example: ValidationError message: type: string example: Validation error(s) present. See embedded errors list for more details. _embedded: type: object properties: errors: type: array items: type: object properties: code: type: string example: NotAllowed message: type: string example: Wire transfers are currently not enabled. path: type: string example: /_links/source/href _links: type: object example: {} WireAccountNotFoundError: title: WireAccountNotFoundError type: object properties: code: type: string example: ValidationError message: type: string example: Validation error(s) present. See embedded errors list for more details. _embedded: type: object properties: errors: type: array items: type: object properties: code: type: string example: NotFound message: type: string example: Account or customer invalid. path: type: string example: /_links/destination/href _links: type: object example: {} InvalidAttemptToFacilitateFundsError: title: InvalidAttemptToFacilitateFundsError type: object properties: code: type: string example: Forbidden message: type: string example: 'Invalid Funds Flow: this operation requires the funds flow ''Facilitate'' to be enabled' InvalidAttemptToPayInFundsError: title: InvalidAttemptToPayInFundsError type: object properties: code: type: string example: Forbidden message: type: string example: 'Invalid Funds Flow: this operation requires the funds flow ''Receive'' to be enabled' InvalidAttemptToPayOutFundsError: title: InvalidAttemptToPayOutFundsError type: object properties: code: type: string example: Forbidden message: type: string example: 'Invalid Funds Flow: this operation requires the funds flow ''Send'' to be enabled' RtpAccountSettingNotEnabledError: title: RtpAccountSettingNotEnabledError type: object properties: code: type: string example: Forbidden message: type: string example: Real Time Payments not enabled for this account TooManyRequestsErrorError: title: TooManyRequestsErrorError type: object properties: code: type: string example: TooManyRequests message: type: string example: Concurrent transfers with the given funding source are not supported. Please wait a short period of time before re-attempting the request. StatusInvalidError: title: StatusInvalidError type: object properties: code: type: string example: ValidationError message: type: string example: Validation error(s) present. See embedded errors list for more details. _embedded: type: object properties: errors: type: array items: type: object properties: code: type: string example: Invalid message: type: string example: Status invalid. path: type: string example: /status _links: type: object example: {} StatusNotAllowedError: title: StatusNotAllowedError type: object properties: code: type: string example: ValidationError message: type: string example: Validation error(s) present. See embedded errors list for more details. _embedded: type: object properties: errors: type: array items: type: object properties: code: type: string example: NotAllowed message: type: string example: Status not allowed. path: type: string example: /status _links: type: object example: {} OnDemandAuthorization: title: OnDemandAuthorization type: object properties: _links: type: object properties: self: type: object properties: href: type: string example: https://api.dwolla.com/on-demand-authorizations/30e7c028-0bdf-e511-80de-0aa34a9b2388 bodyText: type: string example: I agree that future payments to Company ABC inc. will be processed by the Dwolla payment system from the selected account above. In order to cancel this authorization, I will change my payment settings within my Company ABC inc. account. buttonText: type: string example: Agree & Continue MassPaymentItem: title: MassPaymentItem type: object properties: _links: type: object properties: self: type: object properties: href: type: string example: https://api.dwolla.com/mass-payment-items/c1c7d293-63ec-e511-80df-0aa34a9b2388 mass-payment: type: object properties: href: type: string example: https://api.dwolla.com/mass-payments/eb467252-808c-4bc0-b86f-a5cd01454563 destination: type: object properties: href: type: string example: https://api.dwolla.com/funding-sources/b442c936-1f87-465d-a4e2-a982164b26bd transfer: type: object properties: href: type: string example: https://api.dwolla.com/transfers/fa3999db-41ed-e511-80df-0aa34a9b2388 id: type: string example: 2f845bc9-41ed-e511-80df-0aa34a9b2388 status: type: string example: success amount: type: object properties: value: type: string example: 1 currency: type: string example: USD metadata: type: object properties: item1: type: string example: item1 processingChannel: type: object properties: destination: type: string example: real-time-payments Label: title: Label type: object properties: _links: additionalProperties: $ref: '#/components/schemas/HalLink' id: type: string example: 7e042ffe-e25e-40d2-b86e-748b98845ecc created: type: string format: date-time example: '2022-05-15T22:19:09.635Z' amount: type: object properties: value: type: string example: 10 currency: type: string example: USD Labels: title: Labels type: object properties: _links: additionalProperties: $ref: '#/components/schemas/HalLink' _embedded: type: object properties: labels: type: array items: $ref: '#/components/schemas/Label' total: type: integer example: 100 LabelLedgerEntry: title: LabelLedgerEntry type: object properties: _links: additionalProperties: $ref: '#/components/schemas/HalLink' id: type: string example: 32d68709-62dd-43d6-a6df-562f4baec526 amount: type: object properties: value: type: string example: -5 currency: type: string example: USD created: type: string format: date-time example: '2019-05-16T01:54:58.062Z' LabelLedgerEntries: title: LabelLedgerEntries type: object properties: _links: type: object additionalProperties: $ref: '#/components/schemas/HalLink' _embedded: type: object properties: ledger-entries: type: array items: $ref: '#/components/schemas/LabelLedgerEntry' total: type: integer example: 100 Event: title: Event type: object properties: _links: type: object additionalProperties: $ref: '#/components/schemas/HalLink' id: type: string example: 81f6e13c-557c-4449-9331-da5c65e61095 created: type: string format: date-time example: '2015-10-16T15:37:02.000Z' topic: type: string example: customer_transfer_created resourceId: type: string example: 09A166BC-1B74-E511-80DB-0AA34A9B2388 Events: title: Events type: object properties: _links: type: object additionalProperties: $ref: '#/components/schemas/HalLink' _embedded: type: object properties: events: type: array items: $ref: '#/components/schemas/Event' total: type: integer format: int32 example: 3 WebhookSubscription: title: WebhookSubscription type: object properties: _links: type: object properties: self: type: object properties: href: type: string example: https://api.dwolla.com/webhook-subscriptions/077dfffb-4852-412f-96b6-0fe668066589 webhooks: type: object properties: href: type: string example: https://api.dwolla.com/webhook-subscriptions/077dfffb-4852-412f-96b6-0fe668066589/webhooks id: type: string example: 077dfffb-4852-412f-96b6-0fe668066589 url: type: string example: http://myapplication.com/webhooks paused: type: boolean example: true created: type: string format: date-time example: '2022-10-28T16:20:47+00:00' InvalidUrlFormatError: title: InvalidUrlFormatError type: object properties: code: type: string example: ValidationError message: type: string example: Validation error(s) present. See embedded errors list for more details. _embedded: type: object properties: errors: type: array items: type: object properties: code: type: string example: InvalidFormat message: type: string example: Url must be a valid url. path: type: string example: /url _links: type: object example: {} SecretTooLongError: title: SecretTooLongError type: object properties: code: type: string example: ValidationError message: type: string example: Validation error(s) present. See embedded errors list for more details. _embedded: type: object properties: errors: type: array items: type: object properties: code: type: string example: InvalidFormat message: type: string example: Secret must be 128 or fewer characters. path: type: string example: /secret _links: type: object example: {} MaxSubscriptionsReachedError: title: MaxSubscriptionsReachedError type: object properties: code: type: string example: MaxNumberOfResources message: type: string example: The maximum number of subscriptions has been reached. TooManyRequestsError: title: TooManyRequestsError type: object properties: code: type: string example: Too Many Requests message: type: string example: Please wait a short period of time before re-attempting the request. Webhook: title: Webhook type: object properties: _links: type: object properties: self: type: object properties: href: type: string example: https://api.dwolla.com/webhooks/9ece9660-aa34-41eb-80d7-0125d53b45e8 subscription: type: object properties: href: type: string example: https://api.dwolla.com/webhook-subscriptions/a0943041-7a5c-4e8f-92de-b55711ef3a83 retry: type: object properties: href: type: string example: https://api.dwolla.com/webhooks/9ece9660-aa34-41eb-80d7-0125d53b45e8/retries event: type: object properties: href: type: string example: https://api.dwolla.com/events/03c7e14c-7f15-44a2-bcf7-83f2f7e95d50 id: type: string example: 9ece9660-aa34-41eb-80d7-0125d53b45e8 topic: type: string example: transfer_created accountId: type: string example: ca32853c-48fa-40be-ae75-77b37504581b eventId: type: string example: 03c7e14c-7f15-44a2-bcf7-83f2f7e95d50 subscriptionId: type: string example: a0943041-7a5c-4e8f-92de-b55711ef3a83 attempts: type: array items: type: object properties: id: type: string example: d4d16621-c6b0-40cb-8dc3-0469fa9dc4e8 request: type: object properties: timestamp: type: string format: date-time example: '2022-10-27T17:07:34.304Z' url: type: string example: https://myapp.runscope.net headers: type: array items: type: object properties: name: type: string example: X-Dwolla-Topic value: type: string example: transfer_created body: type: string example: id:03c7e14c-7f15-44a2-bcf7-83f2f7e95d50resourceId:81BA6F36-CD7C-E511-80DB-0AA34A9B2388topic:transfer_createdtimestamp:2022-10-27T17:07:34.207Z_links:self:href:https://api.dwolla.com/events/03c7e14c-7f15-44a2-bcf7-83f2f7e95d50account:href:https://api.dwolla.com/accounts/ca32853c-48fa-40be-ae75-77b37504581bresource:href:https://api.dwolla.com/transfers/81BA6F36-CD7C-E511-80DB-0AA34A9B2388 response: type: object properties: timestamp: type: string format: date-time example: '2022-10-27T17:07:34.308Z' headers: type: array items: type: object properties: name: type: string example: Date value: type: string example: Tue 27 Oct 2022 17:07:34 GMT statusCode: type: integer format: int32 example: 200 body: type: string example: body:id:03c7e14c-7f15-44a2-bcf7-83f2f7e95d50resourceId:81BA6F36-CD7C-E511-80DB-0AA34A9B2388topic:transfer_createdtimestamp:2022-10-27T17:07:34.207Z_links:self:href:https://api.dwolla.com/events/03c7e14c-7f15-44a2-bcf7-83f2f7e95d50account:href:https://api.dwolla.com/accounts/ca32853c-48fa-40be-ae75-77b37504581bresource:href:https://api.dwolla.com/transfers/81BA6F36-CD7C-E511-80DB-0AA34A9B2388files:[]form:fragment:headers:Connection:[close]Content-Length:[453]Content-Type:[application/json; charset=UTF-8]Host:[myapp.runscope.net]User-Agent:[dwolla-webhooks/1.0]X-Dwolla-Topic:[transfer_created]X-Request-Signature:[bd93780bd7e1ad77ab821094aaa0f9e3dece5ee3]host:myapp.runscope.netmethod:POSTparams:path:/region:us5runscope_host:prod078.runscope.inscheme:httpssource:capturesource_ip:52.24.10.184timestamp:1.4459656543078682e+09url:https://myapp.runscope.net/ WebhookRetries: title: WebhookRetries type: object properties: _links: type: object properties: self: type: object properties: href: type: string example: https://api.dwolla.com/webhooks/9ece9660-aa34-41eb-80d7-0125d53b45e8/retries _embedded: type: object properties: retries: type: array items: type: object properties: _links: type: object properties: self: type: object properties: href: type: string example: https://api.dwolla.com/webhooks/9ece9660-aa34-41eb-80d7-0125d53b45e8/retries/5aa27a0f-cf99-418d-a3ee-67c0ff99a494 webhook: type: object properties: href: type: string example: https://api.dwolla.com/webhooks/9ece9660-aa34-41eb-80d7-0125d53b45e8 id: type: string example: 5aa27a0f-cf99-418d-a3ee-67c0ff99a494 timestamp: type: string format: date-time example: '2022-11-02T17:43:26.000Z' total: type: integer format: int32 example: 1 ExchangePartners: title: ExchangePartners type: object properties: _links: additionalProperties: $ref: '#/components/schemas/HalLink' _embedded: type: object properties: exchange-partners: type: array items: $ref: '#/components/schemas/ExchangePartners' total: type: integer format: int32 example: 3 ExchangePartner: title: ExchangePartner type: object properties: _links: additionalProperties: $ref: '#/components/schemas/HalLink' id: type: string example: d3d6b41e-5567-4bc6-9c6e-0efd0a3e647e name: type: string example: MX status: type: string example: unverified created: type: string format: date-time example: '2022-07-23T00:18:21.419Z' Exchange: title: Exchange type: object properties: _links: additionalProperties: $ref: '#/components/schemas/HalLink' id: type: string example: d3d6b41e-5567-4bc6-9c6e-0efd0a3e647e status: type: string example: unverified created: type: string format: date-time example: '2022-07-23T00:18:21.419Z' Exchanges: title: Exchanges type: object properties: _links: additionalProperties: $ref: '#/components/schemas/HalLink' _embedded: type: object properties: exchanges: type: array items: $ref: '#/components/schemas/Exchange' total: type: integer format: int32 example: 3 FinicitySecureExchangeCreateExchangeRequestBody: type: object properties: _links: type: object properties: exchange-partner: type: object properties: href: type: string example: https://api.dwolla.com/exchange-partners/292317ec-e252-47d8-93c3-2d128e037aa4 finicity: type: object properties: profile: type: integer format: int32 example: 3 version: type: string example: 1 receiptId: type: string example: cr_4N47ou7SlppuIxq0ZUtACh10vYcloY receiptVersion: type: string example: 1 customerId: type: string example: 5454874858510164000 partnerId: type: integer format: int64 example: 2445583946651 products: type: array items: type: object properties: product: type: string example: moneyTransferDetails accountId: type: string example: 1015199035827334900 accessPeriod: type: object properties: type: type: string example: timeframe startTime: type: string format: date example: '2022-07-06' endTime: type: string format: date-time example: '2022-08-16T06:06:20Z' timestamp: type: string format: date-time example: '2022-07-11T06:06:23Z' MXSecureExchangeCreateExchangeRequestBody: type: object properties: _links: type: object properties: exchange-partner: type: object properties: href: type: string example: https://api.dwolla.com/exchange-partners/292317ec-e252-47d8-93c3-2d128e037aa4 token: type: string example: someMXProcessorToken FlinksSecureExchangeCreateExchangeRequestBody: type: object required: - _links - token properties: _links: type: object required: - exchange-partner properties: exchange-partner: type: object required: - href properties: href: type: string format: uri example: https://api.dwolla.com/exchange-partners/a0b22a57-68df-4450-b507-47c937e64e89 token: type: string description: The Flinks connection token example: MTExYTFhMWEtMTExMS0xYWExLTExMTEtMTFhMTExYTExMTFhOjIyMmIyYjFiLTIyMjItMmJiMi0yMjIyLTIyYjIyMmIyMjIyYg== PlaidSecureExchangeCreateExchangeRequestBody: type: object properties: _links: type: object properties: exchange-partner: type: object properties: href: type: string example: https://api.dwolla.com/exchange-partners/f53ffb32-c84f-496a-9d9d-acd100d396ef token: type: string example: somePlaidProcessorToken InvalidExchangeToken: type: object properties: code: type: string example: InvalidExchangeToken message: type: string example: Exchange token is expired. InvalidExchange: type: object properties: code: type: string example: InvalidExchange message: type: string example: The exchange is no longer active. MXOpenBankingCreateExchangeRequestBody: type: object required: - _links - mx properties: _links: type: object required: - exchange-partner properties: exchange-partner: type: object required: - href properties: href: type: string format: uri example: https://api.dwolla.com/exchange-partners/bca8d065-49a5-475b-a6b4-509bc8504d22 mx: type: object required: - availableConnectionToken properties: availableConnectionToken: type: string description: The MX connection token for the available connection example: eyJhY2NvdW50SWQiOiJBQ1QtMjAxY2FkM2MtYzc2Yi00N2M1LWI3Y2QtMTkxY2FhNzdlZWM5IiwibWVtYmVySWQiOiJNQlItZGNjZWY0ZWMtOGM4MC00NTlmLTlhMGItMTc1ZTA0OTJmZWIzIn0= PlaidOpenBankingCreateExchangeRequestBody: type: object required: - _links - plaid properties: _links: type: object required: - exchange-partner properties: exchange-partner: type: object required: - href properties: href: type: string format: uri example: https://api.dwolla.com/exchange-partners/f53ffb32-c84f-496a-9d9d-acd100d396ef plaid: type: object required: - publicToken properties: publicToken: type: string description: The Plaid public token for the connection example: public-production-d5456acb-01d5-4932-9783-e4c883cf1c0c CreateCustomerExchangeSession: oneOf: - type: object required: - _links properties: _links: type: object required: - exchange-partner - redirect-url properties: exchange-partner: type: object required: - href properties: href: type: string format: uri example: https://api.dwolla.com/exchange-partners/292317ec-e252-47d8-93c3-2d128e037aa4 redirect-url: type: object required: - href properties: href: type: string format: uri description: Required for Visa and Plaid mobile sessions examples: - description: Visa example value: https://www.yourdomain.com/iav-callback - description: Plaid Android example value: com.example.app123 - description: Plaid iOS example value: https://example.com/app123 - type: object required: - _links properties: _links: type: object required: - exchange-partner properties: exchange-partner: type: object required: - href properties: href: type: string format: uri example: https://api.dwolla.com/exchange-partners/292317ec-e252-47d8-93c3-2d128e037aa4 description: For MX and Plaid web sessions where redirect-url is not required ExchangeSession: type: object required: - created - _links properties: created: type: string format: date-time example: '2024-03-25T17:13:38.430Z' _links: type: object required: - self - exchange-partner properties: self: type: object required: - href - type - resource-type properties: href: type: string format: uri example: https://api.dwolla.com/exchange-sessions/9b7fb629-0fad-44f4-8c5e-44c25a0bfa8e type: type: string example: application/vnd.dwolla.v1.hal+json resource-type: type: string example: exchange-sessions exchange-partner: type: object required: - href - type - resource-type properties: href: type: string format: uri example: https://api.dwolla.com/exchange-partners/bca8d065-49a5-475b-a6b4-509bc8504d22 type: type: string example: application/vnd.dwolla.v1.hal+json resource-type: type: string example: exchange-partner external-provider-session: type: object required: - href - type - resource-type properties: href: type: string format: uri description: | Present for Visa and MX exchange sessions. Contains the URL to redirect the user to complete the authorization process. examples: - description: Visa example value: https://link.visa.com/1.0/account-check/connect?client_id=f16f7c7407f4434dbcaf269b230c12ed&redirect_uri=https://api-uat.dwolla.com/redirect/tink&authorization_code=47e23deab3924351a0c6193d90e5add5&market=US&locale=en_US&state=a2V5Ojk6dWRiRkRYWGlIVGdZZUNycUdCa0s3Zz09OmI1ZVE0YWRUYkFrSWNiKzFxTXdmQlVkcVNWWW5nMjtQNjBaWERxUDh5aTBpWEQzTHROdUZRd2xLMTUzYnZ4RU8=&session_id=628d927030ee43a38054da5166dcbee14e06dc02c00e45f2b4a5d986bab5d08f - description: MX example value: https://www.mx.com/connect/lAfkc7m897s3t1ks9mmwyj4ry7Zq0xql4grzAg1kz77x7c9jrwls1t22w6xt8d2lsxx9zpqv30js3wswfdwcrpAsqgbAfkqwpksp7c2chsx167xy90Asfc67dkj9y48y8p142xw3yp4x5l9t9gkk6m3yk5vwsvyq2qq7w9trszxwdl14lmkg7l6949bn5n41chdkbnxycy40n9b6fkbdwl6qt5wl107k1x8srvlkpz325p412x9tkyA5clf39109lsfrgz2lkgsvntqf7l0zzwb5hl658gdjbxwhb52krwybnbdAqfq69cdy54l05jkvfwyf01q89x48jtgtx290lzjdfcty1lwb8d648wns/eyJ1aV9tZXNzYWdlX3ZlcnNpb24iOjQsInVpX21lc3NhZ2Vfd2Vidmlld191cmxfc2NoZW1lIjoibXgiLCJtb2RlIjoidmVyaWZpY2F0aW9uIn0%3D type: type: string example: application/vnd.dwolla.v1.hal+json resource-type: type: string example: text/html externalProviderSessionToken: type: string description: | Present for Plaid exchange sessions. Contains the token to initialize the Plaid Link flow. example: link-production-b41e8ed3-0874-4c64-b07d-a77088979d5f CreateReAuthExchangeSession: oneOf: - type: object required: - _links properties: _links: type: object required: - redirect-url properties: redirect-url: type: object required: - href properties: href: type: string format: uri description: Required for Visa and Plaid mobile sessions examples: - description: Visa example value: https://www.yourdomain.com/iav-callback - description: Plaid Android example value: com.example.app123 - description: Plaid iOS example value: https://example.com/app123 - type: object description: Empty object for Plaid Web sessions where request body is optional properties: {} AvailableExchangeConnections: type: object required: - _links - _embedded properties: _links: type: object required: - self - customers properties: self: type: object required: - href - type - resource-type properties: href: type: string format: uri example: https://api.dwolla.com/customers/1b54c81a-261f-4779-bb57-9405e6e00694/available-exchange-connections type: type: string example: application/vnd.dwolla.v1.hal+json resource-type: type: string example: customer customers: type: object required: - href - type - resource-type properties: href: type: string format: uri example: https://api.dwolla.com/customers/1b54c81a-261f-4779-bb57-9405e6e00694 type: type: string example: application/vnd.dwolla.v1.hal+json resource-type: type: string example: customer _embedded: type: object required: - available-exchange-connections properties: available-exchange-connections: type: array items: type: object required: - availableConnectionToken - name properties: availableConnectionToken: type: string description: Token representing the external bank account that can be used to create a funding source example: eyJhY2NvdW50SWQiOiJBQ1QtMjAxY2FkM2MtYzc2Yi00N2M1LWI3Y2QtMTkxY2FhNzdlZWM5IiwibWVtYmVySWQiOiJNQlItZGNjZWY0ZWMtOGM4MC00NTlmLTlhMGItMTc1ZTA0OTJmZWIzIn0= name: type: string description: Name of the external bank account example: XYZ Checking headers: Location: description: The location of the created resource schema: type: string