Account Holder Funding Sources

Use the /fundingsources/ach and /fundingsources/paymentcard endpoints to create account holder funding sources. A funding source enables access to funds outside of the Marqeta platform.

You must create the user or business resource that represents the account holder before creating the funding source.

If an account holder owns only one funding source, that funding source is used by default. If an account holder has more than one funding source and none is configured as the default, then you must explicitly identify which funding source to use (by way of the funding source token).

Different types of funding sources require different verification procedures. For example, payment cards are validated through a payment gateway, whereas checking accounts (ACH) are validated using small deposits.

For more information on users and businesses, see About Account Holders.

Create ACH source

Action: POST
Endpoint: /fundingsources/ach

Create an ACH funding source. You must create the user or business before creating the funding source. Specify the owner of the funding source by passing a user or business token.

When adding an ACH funding source, a small amount is deposited in the bank account as a test. The test deposit should be reflected in the account after two to three business days. You must then make an API call to verify the deposit amount in order to activate (enable) the ACH account. See the "Verify or Update ACH Funding Source" section on this page for more information.

The response body returns details about the account, including the verification status. Possible ACH verification status values include VERIFICATION_PENDING, ACH_VERIFIED, and ACH_FAILED.

Body field details

Name Type Required? Description Allowable Values
token string No The unique identifier of the funding source. If you do not include a token, the system will generate one automatically. This token is necessary for use in other calls, so we recommend that rather than let the system generate one, you use a simple string that is easy to remember. This value cannot be updated. 36 char max
user_token

OR

business_token
string Yes Specifies the owner of the funding source. Existing user or business token.

Send a GET request to /users to retrieve user tokens or to /businesses to retrieve business tokens.
account_number string Yes The ACH account number. 36 char max
name_on_account string Yes The name on the ACH account. 40 char max
routing_number string Yes The routing number for the ACH account. 9 digits
account_type string Yes The type of account. checking | savings | corporate
is_default_account boolean No If there are multiple funding sources, this field specifies which source is used by default in funding calls. If there is only one funding source, the system ignores this field and always uses that source. If you do not specify this field upon creation, the system sets it to false. true | false; Default: false
verification_override boolean No Allows the ACH funding source to be used regardless of its verification status. true | false; Default: false
verification_notes string No Free-form text field for holding notes about verification. This field is returned only if verification_override=true. 255 char max

Sample request body

{
"token": "bigbird_fundingsource_token05",
"user_token": "bigbird_token",
"routing_number": "121000358",
"name_on_account": "Big Bird",
"is_default_account": false,
"account_number": "987654321",
"account_type": "savings",
"verification_notes": "These are my verification notes.",
"verification_override": true
}

Sample response body

{
"token": "bigbird_fundingsource_token05",
"created_time": "2016-04-26T18:46:06Z",
"last_modified_time": "2016-04-26T18:46:06Z",
"account_suffix": "4321",
"verification_status": "ACH_VERIFIED",
"account_type": "savings",
"name_on_account": "Big Bird",
"active": true,
"date_sent_for_verification": "2016-04-26T18:46:05Z",
"user_token": "bigbird_token",
"is_default_account": false,
"date_verified": "2016-04-26T18:46:05Z",
"verification_override": true,
"verification_notes": "These are my verification notes."
}


Retrieve ACH source

Action: GET
Endpoint: /fundingsources/ach/{funding_source_token}

Retrieve a specific ACH funding source.

The response body returns details about the account, including the verification status. Possible ACH verification status values are: VERIFICATION_PENDING, ACH_VERIFIED, and ACH_FAILED.

URL path parameters

Name Type Required? Description Allowable Values
funding_source_token string Yes Identifies the ACH funding source to retrieve. Existing ACH funding source token.

Send a GET request to /fundingsources/user/{user_token} to retrieve existing funding source tokens for a user or to /fundingsources/business/{business_token} to retrieve existing funding source tokens for a business.

Sample response body

{
"token": "bigbird_fundingsource_token05",
"created_time": "2016-04-26T18:46:06Z",
"last_modified_time": "2016-04-26T18:46:06Z",
"account_suffix": "4321",
"verification_status": "ACH_VERIFIED",
"account_type": "savings",
"name_on_account": "Big Bird",
"active": true,
"date_sent_for_verification": "2016-04-26T18:46:05Z",
"user_token": "bigbird_token",
"is_default_account": false,
"date_verified": "2016-04-26T18:46:05Z",
"verification_override": true,
"verification_notes": "These are my verification notes."
}


Retrieve ACH verification amounts

Action: GET
Endpoint: /fundingsources/ach/{funding_source_token}/verificationamounts

In your sandbox environment, retrieve the amounts used to verify the association with your ACH account.

Use this endpoint for testing purposes only. In production, verification amounts can be retrieved from the bank statement of the account holder.

URL path parameters

Name Type Required? Description Allowable Values
funding_source_token string Yes Identifies the ACH funding source for which you want to retrieve verification deposit amounts. Existing ACH funding source token.

Send a GET request to /fundingsources/user/{user_token} to retrieve existing funding source tokens for a user or to /fundingsources/business/{business_token} to retrieve existing funding source tokens for a business.

Sample response body

{
"token": "bigbird_ach_token",
"verify_amount1": 0.43,
"verify_amount2": 0.11
}


Verify or update ACH source

Action: PUT
Endpoint: /fundingsources/ach/{funding_source_token}

Verify or update an ACH funding source.

If you are verifying the ACH source, include the verification amounts in the body of the request. If you are updating the ACH source, include the active field instead. The active field is the only field you can update.

URL path parameters

Name Type Required? Description Allowable Values
funding_source_token string Yes Identifies the ACH funding source to verify. Existing ACH funding source token.

Send a GET request to /fundingsources/user/{user_token} to retrieve existing funding source tokens for a user or to /fundingsources/business/{business_token} to retrieve existing funding source tokens for a business.

Body field details

Name Type Required? Description Allowable Values
active boolean No Indicates whether the ACH funding source is active. true | false
verify_amount1 decimal No Verification amount. 0.00
verify_amount2 decimal No Verification amount. 0.00

Sample request body

{
"active": "false",
"verify_amount1": 0.43,
"verify_amount2": 0.11
}

Sample response body

{
"token": "bigbird_ach_token",
"account_suffix": "4321",
"verification_status": "ACH_VERIFIED",
"account_type": "savings",
"name_on_account": "Big Bird",
"active": false,
"date_sent_for_verification": "2015-11-16T23:27:58Z",
"user_token": "bigbird_token",
"is_default_account": false,
"date_verified": "2015-11-17T03:57:10Z"
}


Create payment card source

Action: POST
Endpoint: /fundingsources/paymentcard

Create a payment card funding source.

When creating a payment card funding source, you must pass a user or business token to specify the owner of the funding source. You must create the user/business before creating the funding source.

As a result of this POST operation, additional fields are returned in the response object. The Marqeta platform recognizes the card type from the account number and returns the account_type (for example VISA), the account_suffix (last 4 digits), and sets the active field to true.

Note that the Marqeta platform does not retain the credit card number (PAN). Rather, a tokenized representation is stored for security purposes.

Body field details

Name Type Required? Description Allowable Values
token string No The unique identifier of the funding account. If you do not include a token, the system will generate one automatically. As this token is necessary for use in other calls, we recommend that you define a simple and easy to remember string rather than letting the system generate a token for you. This value cannot be updated. 36 char max
postal_code string No Postal code of the account holder (user/business). 10 char max
account_number string Yes Payment card account number. 16 digit number
exp_date string Yes Payment card expiration date. mmyy
user_token

OR

business_token
string Yes Specifies the owner of the funding source. Existing user or business token.

Send a GET request to /users to retrieve user tokens or to /businesses to retrieve business tokens.
cvv_number string Yes Payment card CVV2 number. 3-4 characters
is_default_account boolean No If there are multiple funding sources, this field specifies which source is used by default in funding calls. If there is only one funding source, the system ignores this field and always uses that source. If you do not specify this field upon creation, the system sets it to false. true | false; Default: false

Sample request body

{
"token": "paycard_fs4_01",
"postal_code": "94608",
"user_token": "6745de06-1f88-44b5-8019-42250386c63c",
"is_default_account": true,
"exp_date": "0120",
"account_number": "6559906559906557",
"cvv_number": "123"
}

Sample response body

{
"type": "paymentcard",
"token": "paycard_fs4_01",
"created_time": "2016-04-26T21:52:17Z",
"last_modified_time": "2016-04-26T21:52:17Z",
"account_suffix": "6557",
"account_type": "DISCOVER",
"active": true,
"is_default_account": true,
"exp_date": "0120",
"user_token": "6745de06-1f88-44b5-8019-42250386c63c"
}


Retrieve payment card source

Action: GET
Endpoint: /fundingsources/paymentcard/{funding_source_token}

Retrieve a specific payment card funding source.

URL path parameters

Name Type Required? Description Allowable Values
funding_source_token string Yes Identifies the payment card funding source you want to retrieve. Existing payment card funding source token.

Send a GET request to /fundingsources/user/{user_token} to retrieve existing funding source tokens for a user or to /fundingsources/business/{business_token} to retrieve existing funding source tokens for a business.

Sample response body

{
"type": "paymentcard",
"token": "paycard_fs4_01",
"created_time": "2016-04-26T21:52:17Z",
"last_modified_time": "2016-04-26T21:52:17Z",
"account_suffix": "6557",
"account_type": "DISCOVER",
"active": true,
"is_default_account": true,
"exp_date": "0120",
"user_token": "6745de06-1f88-44b5-8019-42250386c63c"
}


Update payment card source

Action: PUT
Endpoint: /fundingsources/paymentcard/{funding_source_token}

Update a payment card funding source. Only the values of parameters in the request are modified; all others are left unchanged.

URL path parameters

Name Type Required? Description Allowable Values
funding_source_token string Yes Identifies the payment card funding source you want to retrieve. Existing payment card funding source token.

Send a GET request to /fundingsources/user/{user_token} to retrieve existing funding source tokens for a user or to /fundingsources/business/{business_token} to retrieve existing funding source tokens for a business.

Body field details

Name Type Required? Description Allowable Values
active boolean No Indicates whether the card funding source is active. true | false; Default: true
exp_date string No The expiration date for the payment card. mmyy
is_default_account boolean No If there are multiple funding sources, this field specifies which source is used by default in funding calls. If there is only one funding source, the system ignores this field and always uses that source. true | false; Default: false

Sample request body

{
"is_default_account": false
}

Sample response body

{
"type": "paymentcard",
"token": "paycard_fs4_01",
"created_time": "2016-04-26T21:52:17Z",
"last_modified_time": "2016-04-26T22:13:42Z",
"account_suffix": "6557",
"account_type": "DISCOVER",
"active": true,
"is_default_account": true,
"exp_date": "0120",
"user_token": "6745de06-1f88-44b5-8019-42250386c63c"
}


List sources for user

Action: GET
Endpoint: /fundingsources/user/{user_token}

List funding sources associated with a specific user.

This endpoint supports field filtering.

URL path parameters

Name Type Required? Description Allowable Values
user_token string Yes Identifies the owner of the funding sources you want to list. Existing user token.

Send a GET request to /users to retrieve existing user tokens.

Query parameters

Name Type Required? Description Allowable Values
type string No Type of funding source to return: ACH or payment card. Leave unspecified to return both types. paymentcard | ach;

Default: empty (all types)

Sample response body

{
"count": 2,
"start_index": 0,
"end_index": 1,
"is_more": false,
"data": [
{
"type": "paymentcard",
"token": "bigbird_paymentcard_token",
"account_suffix": "4113",
"account_type": "VISA",
"active": true,
"is_default_account": true,
"exp_date": "1217",
"user_token": "bigbird_token"
},
{
"type": "ach",
"token": "bigbird_ach_token",
"account_suffix": "4321",
"account_type": "savings",
"active": false,
"is_default_account": false,
"verification_status": "ACH_VERIFIED",
"user_token": "bigbird_token",
"name_on_account": "Big Bird",
"date_sent_for_verification": "2015-11-16T23:27:58Z"
}


List sources for business

Action: GET
Endpoint: /fundingsources/business/{business_token}

List funding sources associated with a specific business.

This endpoint supports field filtering.

URL path parameters

Name Type Required? Description Allowable Values
business_token string Yes Identifies the business whose funding sources you want to retrieve. Existing business token.

Send a GET request to /businesses to retrieve existing business tokens.

Query parameters

Name Type Required? Description Allowable Values
type string No Type of funding source to return: ACH or payment card. Leave unspecified to return both types. paymentcard | ach;

Default: empty (all types)

Sample response body

{
"count": 1,
"start_index": 0,
"end_index": 0,
"is_more": false,
"data": [
{
"type": "paymentcard",
"token": "my_paymentcard_funding_source_01",
"created_time": "2016-10-26T21:26:13Z",
"last_modified_time": "2016-10-26T21:26:13Z",
"account_suffix": "4113",
"account_type": "VISA",
"active": true,
"is_default_account": true,
"exp_date": "1220",
"user_token": "my_business_01"
}
]
}


Set default source

Action: PUT
Endpoint: /fundingsources/{funding_source_token}/default

Configure either an ACH funding source or a payment card funding source as the default funding source.

A default funding source is used when you omit the funding_source_token field from funding requests, such as a POST request to /gpaorders. Note that the first funding source you create is automatically set as the default (is_default_source=true).

URL path parameters

Name Type Required? Description Allowable Values
funding_source_token string Yes Specifies the funding source to use by default.

You can set the default only to an ACH or payment card funding source.
Existing ACH or payment card funding source token.

Send a GET request to /fundingsources/user/{user_token} to retrieve existing funding source tokens for a user or to /fundingsources/business/{business_token} to retrieve existing funding source tokens for a business.

Sample response body

{
"type": "bankaccount",
"token": "bigbird_ach_token",
"account_suffix": "4321",
"account_type": "savings",
"active": true,
"is_default_account": true,
"user_token": "bigbird_token"
}