Method Financial Accounts API
Financial accounts (ACH, liability, clearing, debit card)
Financial accounts (ACH, liability, clearing, debit card)
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/method-financial-accounts-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
openapi: 3.2.0
info:
title: Method Accounts API
version: '2026-03-30'
license:
name: Proprietary
url: https://methodfi.com
description: "The Method API enables you to retrieve financial data, create payments, and manage\nentities and accounts programmatically. This specification covers the public API\nsurface for version `2026-03-30`.\n\n## Authentication\n\nMost API requests require a Bearer token in the `Authorization` header.\nUse your secret key (`sk_...`) for server-side requests and public key (`pk_...`)\nfor client-side Element requests. Public Message-Level Encryption key discovery\nendpoints are documented separately and do not require authentication.\n\n## Versioning\n\nThe API version is selected via the `Method-Version` header. This spec targets\nversion `2026-03-30`. The SDK sets this header automatically.\n\n## Response Envelope\n\nMost JSON responses are wrapped in a standard envelope:\n\n```json\n{\n \"success\": true,\n \"data\": { ... },\n \"message\": null\n}\n```\n\nThe `/.well-known/jwks.json` endpoint is an exception and returns a bare JWK set.\n\n## Pagination\n\nList endpoints return pagination metadata in response headers:\n`Pagination-Page`, `Pagination-Page-Count`, `Pagination-Page-Limit`,\n`Pagination-Total-Count`, `Pagination-Page-Cursor-Prev`, `Pagination-Page-Cursor-Next`.\n\n## Expandable Fields\n\nCertain resource fields can be expanded from IDs to full objects using the\n`expand` query parameter. Maximum nesting depth is 4 levels.\n"
contact:
name: Method Financial
url: https://methodfi.com
email: team@methodfi.com
servers:
- url: https://production.methodfi.com
description: Production
x-fern-server-name: Production
- url: https://sandbox.methodfi.com
description: Sandbox
x-fern-server-name: Sandbox
- url: https://dev.methodfi.com
description: Development
x-fern-server-name: Development
security:
- SecretKey: []
tags:
- name: Accounts
description: Financial accounts (ACH, liability, clearing, debit card)
paths:
/accounts:
get:
operationId: listAccounts
summary: List all accounts
description: Returns a paginated list of accounts. Results can be filtered by status, type, holder, and date range.
tags:
- Accounts
security:
- SecretKey: []
parameters:
- $ref: '#/components/parameters/method_version'
- $ref: '#/components/parameters/PageParam'
- $ref: '#/components/parameters/PageLimitParam'
- $ref: '#/components/parameters/PageCursorParam'
- $ref: '#/components/parameters/FromDateParam'
- $ref: '#/components/parameters/ToDateParam'
- name: status
in: query
required: false
description: Filter accounts by status.
schema:
type: string
enum:
- active
- disabled
- name: type
in: query
required: false
description: Filter accounts by type.
schema:
type: string
enum:
- ach
- liability
- clearing
- debit_card
- name: consent_status
in: query
required: false
description: Filter accounts by consent status.
schema:
type: string
enum:
- pending
- withdrawn
- approved
- name: holder_id
in: query
required: false
description: Filter accounts by the entity ID that owns them.
schema:
type: string
pattern: ^ent_\w+$
- name: holder_ids
in: query
required: false
description: Filter accounts by one or more entity IDs.
style: form
explode: true
schema:
type: array
items:
type: string
pattern: ^ent_\w+$
- name: include_pending_consent
in: query
required: false
description: Include accounts that are still pending consent.
schema:
type: boolean
- name: liability.mch_id
in: query
required: false
description: Filter liability accounts by merchant ID.
schema:
type: string
pattern: ^mch_\w+$
- name: liability.type
in: query
required: false
description: Filter liability accounts by liability type.
schema:
type: string
enum:
- credit_card
- auto_loan
- mortgage
- personal_loan
- student_loan
- student_loans
- collection
- credit_builder
- insurance
- loan
- medical
- utility
- bnpl
- fintech
- name: liability.ownership
in: query
required: false
description: Filter liability accounts by ownership type.
schema:
type: string
enum:
- primary
- authorized
- joint
- unknown
- $ref: '#/components/parameters/expand_accounts'
responses:
'200':
description: A paginated list of accounts.
headers:
Pagination-Page:
$ref: '#/components/headers/Pagination-Page'
Pagination-Page-Count:
$ref: '#/components/headers/Pagination-Page-Count'
Pagination-Page-Limit:
$ref: '#/components/headers/Pagination-Page-Limit'
Pagination-Total-Count:
$ref: '#/components/headers/Pagination-Total-Count'
Pagination-Page-Cursor-Prev:
$ref: '#/components/headers/Pagination-Page-Cursor-Prev'
Pagination-Page-Cursor-Next:
$ref: '#/components/headers/Pagination-Page-Cursor-Next'
content:
application/json:
schema:
$ref: '#/components/schemas/AccountListResponse'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
'429':
$ref: '#/components/responses/RateLimited'
'500':
$ref: '#/components/responses/InternalError'
post:
operationId: createAccount
summary: Create an account
description: Creates a new account for the specified entity. The request body must include exactly one of `ach`, `liability`, `clearing`, or `debit_card` to determine the account type.
tags:
- Accounts
security:
- SecretKey: []
parameters:
- $ref: '#/components/parameters/method_version'
- $ref: '#/components/parameters/idempotency_key'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/AccountCreateRequest'
examples:
ach:
summary: Create an ACH account
value:
type: ach
holder_id: ent_au22b1fbFJbp8
ach:
routing: '111000025'
number: 000123456789
type: checking
metadata:
customer_reference: acct-001
liability:
summary: Create a liability account
value:
type: liability
holder_id: ent_au22b1fbFJbp8
liability:
mch_id: mch_4c1j9e4t4R8Qd
account_number: '4111111111111111'
metadata:
portfolio: cards
debit_card:
summary: Create a debit card account
value:
type: debit_card
holder_id: ent_au22b1fbFJbp8
debit_card:
number: '4111111111111111'
exp_month: '12'
exp_year: 2028
cvv: '123'
billing_zip_code: '78701'
responses:
'200':
description: The newly created account.
content:
application/json:
schema:
$ref: '#/components/schemas/AccountResponse'
example:
success: true
data:
id: acc_b9q2XVAnNFbp3
holder_id: ent_au22b1fbFJbp8
type: ach
status: active
consent_status: approved
ach:
routing: '111000025'
number: 000123456789
type: checking
liability: null
clearing: null
debit_card: null
capabilities: []
available_capabilities:
- payments:send
- payments:receive
error: null
metadata:
customer_reference: acct-001
products: []
restricted_products: []
subscriptions: []
available_subscriptions: []
restricted_subscriptions: []
latest_verification_session: null
balance: null
payoff: null
payment_instrument: null
card_brand: null
update: null
attribute: null
sensitive: null
created_at: '2026-01-15T18:30:00.000Z'
updated_at: '2026-01-15T18:30:00.000Z'
message: null
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
'422':
$ref: '#/components/responses/UnprocessableEntity'
'429':
$ref: '#/components/responses/RateLimited'
'500':
$ref: '#/components/responses/InternalError'
/accounts/{accountId}:
get:
operationId: retrieveAccount
summary: Retrieve an account
description: Retrieves an account by its unique identifier.
tags:
- Accounts
security:
- SecretKey: []
parameters:
- $ref: '#/components/parameters/method_version'
- $ref: '#/components/parameters/AccountIdParam'
- $ref: '#/components/parameters/expand_accounts'
responses:
'200':
description: The requested account.
content:
application/json:
schema:
$ref: '#/components/schemas/AccountResponse'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
'429':
$ref: '#/components/responses/RateLimited'
'500':
$ref: '#/components/responses/InternalError'
put:
operationId: updateAccount
summary: Update an account
description: Updates an account's metadata or liability account number.
tags:
- Accounts
security:
- SecretKey: []
parameters:
- $ref: '#/components/parameters/method_version'
- $ref: '#/components/parameters/AccountIdParam'
- $ref: '#/components/parameters/idempotency_key'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/AccountUpdateRequest'
examples:
metadata:
summary: Update account metadata
value:
metadata:
servicing_tier: gold
liability:
summary: Update a liability account number
value:
liability:
credit_card:
number: '5555444433331111'
responses:
'200':
description: Account updated successfully.
content:
application/json:
schema:
type: object
required:
- success
- data
- message
properties:
success:
type: boolean
example: true
data:
type: 'null'
example: null
message:
type:
- 'null'
- string
example: null
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
'422':
$ref: '#/components/responses/UnprocessableEntity'
'429':
$ref: '#/components/responses/RateLimited'
'500':
$ref: '#/components/responses/InternalError'
components:
schemas:
Account:
type: object
description: 'An Account represents a financial account (ACH, liability, clearing, or debit card) associated with an Entity. The `type` field indicates which nested details object (`ach`, `liability`, `clearing`, or `debit_card`) is populated. `type` is null for accounts that are disabled before a type was determined.
'
required:
- id
- holder_id
- type
- status
- consent_status
- products
- restricted_products
- created_at
- updated_at
properties:
id:
type: string
description: Unique identifier for the account.
pattern: ^acc_\w+$
example: acc_b9q2XVAnNFbp3
holder_id:
type: string
description: The entity ID that owns this account.
pattern: ^ent_\w+$
example: ent_au22b1fbFJbp8
type:
type:
- string
- 'null'
description: The type of account. Null for accounts that are disabled before a type was determined.
enum:
- ach
- liability
- clearing
- debit_card
- null
status:
type: string
description: Current status of the account.
enum:
- active
- disabled
- processing
- pending_exchange
- closed
consent_status:
type: string
description: Current consent status for data access on this account.
enum:
- pending
- withdrawn
- approved
ach:
$ref: '#/components/schemas/AccountACH'
liability:
$ref: '#/components/schemas/AccountLiability'
clearing:
$ref: '#/components/schemas/AccountClearing'
debit_card:
$ref: '#/components/schemas/AccountDebitCard'
error:
$ref: '#/components/schemas/AccountResourceError'
metadata:
$ref: '#/components/schemas/Metadata'
products:
type: array
description: Products currently active for this account.
items:
type: string
restricted_products:
type: array
description: Products restricted from this account.
items:
type: string
subscriptions:
type: array
description: Subscriptions currently active for this account. Only present for liability accounts.
items:
type: string
available_subscriptions:
type: array
description: Subscriptions available to be enrolled for this account. Only present for liability accounts.
items:
type: string
restricted_subscriptions:
type: array
description: Subscriptions restricted from this account. Only present for liability accounts.
items:
type: string
latest_verification_session:
title: AccountExpandableLatestVerificationSession
description: 'The latest verification session ID. This field is expandable. When expanded, returns the full AccountVerificationSession object.
'
oneOf:
- type: string
pattern: ^avf_\w+$
- type: 'null'
- $ref: '#/components/schemas/AccountVerificationSession'
balance:
$ref: '#/components/schemas/AccountExpandableBalance'
payoff:
$ref: '#/components/schemas/AccountExpandablePayoff'
payment_instrument:
$ref: '#/components/schemas/AccountExpandablePaymentInstrument'
card_brand:
$ref: '#/components/schemas/AccountExpandableCardBrand'
update:
$ref: '#/components/schemas/AccountExpandableUpdate'
attribute:
$ref: '#/components/schemas/AccountExpandableAttribute'
sensitive:
$ref: '#/components/schemas/AccountExpandableSensitive'
created_at:
type: string
format: date-time
description: Timestamp when the account was created.
updated_at:
type: string
format: date-time
description: Timestamp when the account was last updated.
AccountCreateRequest:
description: 'Request body for creating an account.
`type` is recommended and used for discrimination in generated clients, but
the API can also infer the account type from the nested object you provide.
'
oneOf:
- $ref: '#/components/schemas/CreateAchAccountRequest'
- $ref: '#/components/schemas/CreateLiabilityAccountRequest'
- $ref: '#/components/schemas/CreateClearingAccountRequest'
- $ref: '#/components/schemas/CreateDebitCardAccountRequest'
discriminator:
propertyName: type
mapping:
ach: '#/components/schemas/CreateAchAccountRequest'
liability: '#/components/schemas/CreateLiabilityAccountRequest'
clearing: '#/components/schemas/CreateClearingAccountRequest'
debit_card: '#/components/schemas/CreateDebitCardAccountRequest'
AccountVerificationSessionResourceError:
type:
- object
- 'null'
description: Error details when an account verification session fails.
required:
- type
- code
- sub_type
- message
properties:
type:
type: string
description: The category of verification session error.
enum:
- ACCOUNT_VERIFICATION_SESSION_FAILED
code:
type: integer
description: Numeric error code (16XXX range).
enum:
- 16001
- 16002
- 16003
- 16004
sub_type:
type: string
description: Specific verification session error classification.
enum:
- VERIFICATION_TYPE_NOT_SUPPORTED
- INVALID_DETAILS
- VERIFICATION_SESSION_ATTEMPT_LIMIT_REACHED
- MICRO_DEPOSITS_FAILED
message:
type: string
description: Human-readable error description.
example:
type: ACCOUNT_VERIFICATION_SESSION_FAILED
code: 16001
sub_type: VERIFICATION_TYPE_NOT_SUPPORTED
message: The verification type provided is not supported for the merchant.
AccountExpandablePayoff:
title: AccountExpandablePayoff
description: 'The latest payoff ID. This field is expandable. When expanded, returns the full AccountPayoff object.
'
oneOf:
- type: string
pattern: ^pyf_\w+$
- type: 'null'
- $ref: '#/components/schemas/AccountPayoff'
AccountCardBrand:
type: object
description: Card brand information for an account.
required:
- id
- account_id
- status
- created_at
- updated_at
properties:
id:
type: string
description: Unique identifier for the card brand.
pattern: ^cbrd_\w+$
example: cbrd_aTJMbnCjw34yQ
account_id:
type: string
description: The account this card brand belongs to.
pattern: ^acc_\w+$
brands:
type:
- array
- 'null'
description: Array of card brand entries for this account.
items:
type: object
properties:
id:
type: string
description: Unique identifier for the brand entry.
card_product_id:
type:
- string
- 'null'
description: Associated card product ID.
description:
type: string
description: Description of the brand.
name:
type: string
description: Name of the brand.
issuer:
type: string
description: The card issuer.
network:
type: string
description: The card network.
network_tier:
type: string
description: The tier of the card network.
type:
type:
- string
- 'null'
description: The brand type.
url:
type: string
description: URL for the brand image.
source:
type:
- string
- 'null'
description: Source of the card brand data.
enum:
- network
- method
- null
shared:
type: boolean
description: Whether this card brand record is shared.
network:
type:
- string
- 'null'
description: The card network. Deprecated in favor of brands[].network.
enum:
- visa
- mastercard
- amex
- discover
- null
issuer:
type:
- string
- 'null'
description: The card issuer. Deprecated in favor of brands[].issuer.
last4:
type:
- string
- 'null'
description: Last 4 digits of the card number. Deprecated in favor of brands[].
status:
type: string
description: Current status of the card brand request.
enum:
- completed
- pending
- failed
error:
$ref: '#/components/schemas/ResourceError'
created_at:
type: string
format: date-time
description: Timestamp when the card brand was created.
updated_at:
type: string
format: date-time
description: Timestamp when the card brand was last updated.
CreateAchAccountRequest:
type: object
description: Create an ACH account.
required:
- holder_id
- ach
properties:
type:
type: string
enum:
- ach
holder_id:
type: string
description: The entity ID that will own this account.
pattern: ^ent_\w+$
ach:
type: object
description: ACH account details.
required:
- routing
- number
- type
properties:
routing:
type: string
description: The ACH routing number.
pattern: ^\d{9}$
number:
type: string
description: The ACH account number.
pattern: ^\d+$
type:
type: string
description: The type of ACH account.
enum:
- checking
- savings
metadata:
$ref: '#/components/schemas/Metadata'
BalanceResourceError:
type:
- object
- 'null'
description: Error details when a balance sync fails.
required:
- type
- code
- sub_type
- message
properties:
type:
type: string
description: The category of balance error.
enum:
- BALANCE_FAILED
code:
type: integer
description: Numeric error code (20XXX range).
enum:
- 20001
sub_type:
type: string
description: Specific balance error classification.
enum:
- BALANCE_TEMPORARILY_UNAVAILABLE
message:
type: string
description: Human-readable error description.
example:
type: BALANCE_FAILED
code: 20001
sub_type: BALANCE_TEMPORARILY_UNAVAILABLE
message: Balance is temporarily unavailable for this account.
AccountDebitCard:
type:
- object
- 'null'
description: Debit card account details. Present when `type` is `debit_card`.
properties:
network:
type: string
description: The card network.
mask:
type: string
description: Last 4 digits of the card number.
issuer:
type: string
description: The card issuer.
AccountUpdate:
type: object
description: An update record for an account.
required:
- id
- account_id
- status
- type
- created_at
- updated_at
properties:
id:
type: string
description: Unique identifier for the update.
pattern: ^upd_\w+$
example: upd_aTJMbnCjw34yQ
account_id:
type: string
description: The account this update belongs to.
pattern: ^acc_\w+$
status:
type: string
description: Current status of the update.
enum:
- completed
- pending
- failed
type:
type: string
description: The liability type of the account being updated.
enum:
- credit_card
- auto_loan
- mortgage
- personal_loan
- student_loan
- student_loans
- collection
- credit_builder
- insurance
- loan
- medical
- utility
- bnpl
- fintech
source:
type: string
description: The data source used for this update.
enum:
- direct
- snapshot
data_as_of:
type:
- string
- 'null'
format: date-time
description: The timestamp of the data used to complete this update.
credit_card:
type:
- object
- 'null'
description: Credit card update data. Present when `type` is `credit_card`.
properties:
sub_type:
type:
- string
- 'null'
opened_at:
type:
- string
- 'null'
format: date
closed_at:
type:
- string
- 'null'
format: date
balance:
type:
- integer
- 'null'
description: Current balance in cents.
last_payment_amount:
type:
- integer
- 'null'
description: Last payment amount in cents.
last_payment_date:
type:
- string
- 'null'
format: date
next_payment_due_date:
type:
- string
- 'null'
format: date
next_payment_minimum_amount:
type:
- integer
- 'null'
description: Minimum payment due in cents.
interest_rate_type:
type:
- string
- 'null'
interest_rate_percentage_max:
type:
- number
- 'null'
interest_rate_percentage_min:
type:
- number
- 'null'
available_credit:
type:
- integer
- 'null'
description: Available credit in cents.
credit_limit:
type:
- integer
- 'null'
description: Credit limit in cents.
usage_pattern:
type:
- string
- 'null'
auto_loan:
type:
- object
- 'null'
description: Auto loan update data. Present when `type` is `auto_loan`.
properties:
sub_type:
type:
- string
- 'null'
opened_at:
type:
- string
- 'null'
format: date
closed_at:
type:
- string
- 'null'
format: date
balance:
type:
- integer
- 'null'
description: Current balance in cents.
last_payment_amount:
type:
- integer
- 'null'
description: Last payment amount in cents.
last_payment_date:
type:
- string
- 'null'
format: date
next_payment_due_date:
type:
- string
- 'null'
format: date
next_payment_minimum_amount:
type:
- integer
- 'null'
description: Minimum payment due in cents.
interest_rate_type:
type:
- string
- 'null'
expected_payoff_date:
type:
- string
- 'null'
format: date
original_loan_amount:
type:
- integer
- 'null'
description: Original loan amount in cents.
term_length:
type:
- integer
- 'null'
interest_rate_percentage:
type:
- number
- 'null'
interest_rate_source:
type:
- string
- 'null'
mortgage:
type:
- object
- 'null'
description: Mortgage update data. Present when `type` is `mortgage`.
properties:
sub_type:
type:
- string
- 'null'
opened_at:
type:
- string
- 'null'
format: date
closed_at:
type:
- string
- 'null'
format: date
balance:
type:
- integer
- 'null'
description: Current balance in cents.
last_payment_amount:
type:
- integer
- 'null'
description: Last payment amount in cents.
last_payment_date:
type:
- string
- 'null'
format: date
next_payment_due_date:
type:
- string
- 'null'
format: date
next_payment_minimum_amount:
type:
- integer
- 'null'
description: Minimum payment due in cents.
interest_rate_type:
type:
- string
- 'null'
expected_payoff_date:
type:
- string
- 'null'
format: date
original_loan_amount:
type:
- integer
- 'null'
description: Original loan amount in cents.
term_length:
type:
- integer
- 'null'
interest_rate_percentage:
type:
- number
- 'null'
interest_rate_source:
type:
- string
- 'null'
personal_loan:
type:
- object
- 'null'
description: Personal loan update data. Present when `type` is `personal_loan`.
properties:
sub_type:
type:
- string
# --- truncated at 32 KB (87 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/method-financial/refs/heads/main/openapi/method-financial-accounts-api-openapi.yml