Skip to main content
The Marqeta platform provides you with a production environment and a sandbox. The main difference between the production and sandbox environments is that your production environment communicates with a payment card network. This communication allows your program’s cards to pay for goods and services by initiating live transactions over the card network. There are two types of sandbox environments available:
  • Public sandbox: A single-user environment where you can begin building your program and experiment with the Marqeta platform.
  • Private sandbox: A multi-user environment where you can integrate your application with the Marqeta platform.
All funds and transactions are simulated in both types of sandbox environments. Unlike the production environment, a sandbox does not communicate with a card network, so the cards you create within them cannot be used to conduct real-world transactions. Therefore, you must rely on simulated transactions in order to test all objects you create within a sandbox. The sandbox environments provide a set of endpoints that let you simulate various types of card network transactions, such as authorizations, reversals, and balance inquiries. These endpoints are available only within the sandbox, so the details on this page do not apply to production. To use the Simulations API for direct deposits:
  • Create a card in your sandbox environment.
  • Use the /simulations/directdeposits/* endpoints to simulate transaction event types. Each endpoint is its own event type.
  • Use the /webhooks endpoint to send optional customer notifications for system events.
To use the Simulations API for card transactions, see Simulations 2.0 — Card Transactions.
Note
You can use Postman to run requests for card transaction and direct deposit simulations endpoints. This collection of requests has been saved as a YAML file for your convenience. To access the YAML file, see Postman Collection for Simulations 2.0.
All direct deposit simulations endpoints share the same request/response model, as described below.

Request body

FieldsDescription
account_number

string

Required
The account number of the user to debit or credit.

Allowable Values:

Valid account number belonging to an active user with an active card
amount

decimal

Required
Amount of the transaction.

Allowable Values:

Format: 0.00

Must be greater than zero
company_discretionary_data

string

Optional
Company-specific data provided by the direct deposit originator.

Allowable Values:

20 char max
company_entry_description

string

Optional
Company-specific data provided by the direct deposit originator.

Allowable Values:

10 char max
company_identification

string

Optional
Alphanumeric code that identifies the direct deposit originator.

Allowable Values:

10 char max
company_name

string

Optional
Name of the direct deposit originator.

Allowable Values:

16 char max
earlyPayEligible

boolean

Optional
Indicates whether the transaction is eligible for early pay.

Allowable Values:

true, false
individual_identification_number

string

Optional
Accounting number by which the recipient is known to the direct deposit originator.

Allowable Values:

22 char max
individual_name

string

Optional
Identity of the direct deposit recipient.

Allowable Values:

35 char max
settlement_date

datetime

Required
Date when the credit or debit is applied.

Allowable Values:

Format: yyyy-mm-ddThh:mm:ssZ
standard_entry_class_code

string

Optional
Three-letter code identifying the type of entry.

Allowable Values:

3 char max
token

string

Optional
Unique identifier of the direct deposit transaction.

If you do not include a token, the system generates one automatically. This token is used in other API calls. Marqeta recommends that you enter a string that you can remember for the token, rather than having the system generate a token for you. This value cannot be updated.

Allowable Values:

36 char max
type

string

Optional
Provides information about whether funds are being debited from or credited to the account.

Allowable Values:

CREDIT, DEBIT

Response body

FieldsDescription
type

string

Optional
Whether funds are being debited from or credited to the account.

Allowable Values:

CREDIT, DEBIT
state

string

Optional
Current status of the direct deposit record.

Allowable Values:

PENDING, APPLIED, REVERSED, REJECTED
state_reason

string

Optional
Explains the current state of the direct deposit record.

Allowable Values:

255 char max
state_reason_code

string

Optional
A standard code describing the reason for the current state.

Allowable Values:

Valid three-character code
token

string

Optional
Unique identifier of the direct deposit record.

Allowable Values:

Existing direct deposit record token
user_token

string

Optional
Unique identifier of the user associated with the direct deposit record.

Allowable Values:

Existing user token
amount

decimal

Optional
Amount being debited or credited.

Allowable Values:

Existing amount in 0.00 decimal format
business_token

string

Optional
Unique identifier of the business associated with the direct deposit record.

Allowable Values:

Existing business token
company_discretionary_data

string

Optional
Company-specific data provided by the direct deposit originator.

Allowable Values:

20 char max
company_entry_description

string

Optional
Description of the purpose of the direct deposit.

Allowable Values:

10 char max
company_identification

string

Optional
Alphanumeric code that identifies the direct deposit originator.

Allowable Values:

10 char max
company_name

string

Optional
Name of the direct deposit originator.

Allowable Values:

16 char max
created_time

datetime

Optional
Date and time when the deposit account was created, in UTC.

Allowable Values:

Format: yyyy-MM-dd’T’HH:mm:ssZ
direct_deposit_account_token

string

Optional
Unique identifier of the affected deposit account.

Allowable Values:

36 char max
individual_identification_number

string

Optional
Accounting number by which the recipient is known to the direct deposit originator.

Allowable Values:

255 char max
individual_name

string

Optional
Name of the direct deposit recipient.

Allowable Values:

22 char max
last_modified_time

datetime

Optional
Date and time when the direct deposit account was last modified, in UTC.

Allowable Values:

date-time

Format:
yyyy-MM-ddThh:mm:ssZ
settlement_date

datetime

Optional
Date and time when the credit or debit is applied, in UTC.

Allowable Values:

date-time

Format:
yyyy-MM-ddThh:mm:ssZ
standard_entry_class_code

string

Optional
Three-letter code identifying the type of entry.

Allowable Values:

- ACK
- ADV
- ARC
- ATX
- BOC
- CCD
- CIE
- COR
- CTX
- DNE
- ENR
- IAT
- MTE
- POP
- POS
- PPD
- RCK
- SHR
- TEL
- TRC
- TRX
- WEB
- XCK

Simulate credit

Action: POST
Endpoint: /simulations/directdeposits/credit
Use this endpoint to simulate crediting funds to a deposit account. Simulate a direct deposit of funds to a user account by including the deposit account number of the account to be credited. You can find the account number in the account_number field of the response when you create a new deposit account. Alternatively, you can retrieve it by sending a GET request to the /depositaccounts/user/{user_token} endpoint. For more information, see Direct Deposit. You can view the full request body structure on the Simulations 2.0 — Direct Deposits page.

Request body

See Request Body.

Sample request body

JSON
{
  "amount": 10,
  "account_number": "**ACCOUNT_NUMBER**",
  "settlement_date": "2025-02-03T13:22:42Z",
  "earlyPayEligible": false
}

Response body

See Response Body.

Sample response body

JSON
{
  "token": "**DIRECT_DEPOSIT_TOKEN**",
  "user_token": "**USER_TOKEN**",
  "type": "CREDIT",
  "state": "PENDING",
  "state_reason": "testing",
  "amount": 10,
  "created_time": "2025-03-23T19:34:05Z",
  "direct_deposit_account_token": "**DIRECT_DEPOSIT_ACCT_TOKEN**",
  "last_modified_time": "2025-03-23T19:34:05Z",
  "settlement_date": "2025-02-03T13:22:42Z"
}

Simulate debit

Action: POST
Endpoint: /simulations/directdeposits/debit
Use this endpoint to simulate debiting funds from a deposit account. Simulate a direct deposit of funds to a user account by including the deposit account number of the account to be debited. You can find the account number in the account_number field of the response when you create a new deposit account. Alternatively, you can retrieve it by sending a GET request to the /depositaccounts/user/{user_token} endpoint. For more information, see Direct Deposit. You can view the full request body structure on the Simulations 2.0 — Direct Deposits page.

Request body

See Request Body.

Sample request body

JSON
{
  "amount": 10,
  "account_number": "**ACCOUNT_NUMBER**",
  "settlement_date": "2025-02-03T13:22:42Z",
  "earlyPayEligible": false
}

Response body

See Response Body.

Sample response body

JSON
{
  "token": "**DIRECT_DEPOSIT_TOKEN**",
  "user_token": "**USER_TOKEN**",
  "type": "DEBIT",
  "state": "PENDING",
  "state_reason": "testing",
  "amount": 10,
  "created_time": "2025-03-23T19:34:05Z",
  "direct_deposit_account_token": "**DIRECT_DEPOSIT_ACCT_TOKEN**",
  "last_modified_time": "2025-03-23T19:34:05Z",
  "settlement_date": "2025-02-03T13:22:42Z"
}