Sandbox endpoints
API reference for Sandbox endpoints
Introduction
Plaid's Sandbox environment provides a number of endpoints that can be used to configure testing scenarios. These endpoints are unique to the Sandbox environment and cannot be used in Production. For more information on these endpoints, see Sandbox.
In this section | |
---|---|
/sandbox/public_token/create | Bypass the Link flow for creating an Item |
/sandbox/processor_token/create | Bypass the Link flow for creating an Item for a processor partner |
/sandbox/item/reset_login | Trigger the ITEM_LOGIN_REQUIRED state for an Item |
/sandbox/user/reset_login | (Income and Check) Force Item(s) for a Sandbox user into an error state |
/sandbox/item/fire_webhook | Fire a specific webhook |
/sandbox/item/set_verification_status | (Auth) Set a verification status for testing micro-deposits |
/sandbox/transfer/fire_webhook | (Transfer) Fire a specific webhook |
/sandbox/transfer/ledger/deposit/simulate | (Transfer) Simulate a deposit sweep event |
/sandbox/transfer/ledger/simulate_available | (Transfer) Simulate converting pending balance into available balance |
/sandbox/transfer/ledger/withdraw/simulate | (Transfer) Simulate a withdraw sweep event |
/sandbox/transfer/simulate | (Transfer) Simulate a transfer event |
/sandbox/transfer/refund/simulate | (Transfer) Simulate a refund event |
/sandbox/transfer/sweep/simulate | (Transfer) Simulate a transfer sweep event |
/sandbox/transfer/test_clock/create | (Transfer) Create a test clock for testing recurring transfers |
/sandbox/transfer/test_clock/advance | (Transfer) Advance the time on a test clock |
/sandbox/transfer/test_clock/get | (Transfer) Get details about a test clock |
/sandbox/transfer/test_clock/list | (Transfer) Get details about all test clocks |
/sandbox/income/fire_webhook | (Income) Fire a specific webhook |
/sandbox/public_token/create
Create a test Item
Use the /sandbox/public_token/create
endpoint to create a valid public_token
for an arbitrary institution ID, initial products, and test credentials. The created public_token
maps to a new Sandbox Item. You can then call /item/public_token/exchange
to exchange the public_token
for an access_token
and perform all API actions. /sandbox/public_token/create
can also be used with the user_custom
test username to generate a test account with custom data, or with Plaid's pre-populated Sandbox test accounts.
client_id
client_id
. The client_id
is required and may be provided either in the PLAID-CLIENT-ID
header or as part of a request body.secret
secret
. The secret
is required and may be provided either in the PLAID-SECRET
header or as part of a request body.institution_id
initial_products
institution_id
supports. This array may not be empty.1
assets
, auth
, balance
, employment
, identity
, income_verification
, identity_verification
, investments
, liabilities
, payment_initiation
, standing_orders
, statements
, transactions
, transfer
options
null
.webhook
override_username
user_good
.user_good
override_password
pass_good
.pass_good
transactions
start_date
date
end_date
date
statements
start_date
date
end_date
date
income_verification
income_verification
is included in the initial_products
array.income_source_types
bank
and payroll
. Currently you can only specify one of these options.bank
, payroll
bank_income
income_verification
is included in the initial_products
array and bank
is specified in income_source_types
.days_requested
user_token
1const publicTokenRequest: SandboxPublicTokenCreateRequest = {2 institution_id: institutionID,3 initial_products: initialProducts,4};5try {6 const publicTokenResponse = await client.sandboxPublicTokenCreate(7 publicTokenRequest,8 );9 const publicToken = publicTokenResponse.data.public_token;10 // The generated public_token can now be exchanged11 // for an access_token12 const exchangeRequest: ItemPublicTokenExchangeRequest = {13 public_token: publicToken,14 };15 const exchangeTokenResponse = await client.itemPublicTokenExchange(16 exchangeRequest,17 );18 const accessToken = exchangeTokenResponse.data.access_token;19} catch (error) {20 // handle error21}
Response fields and example
public_token
/item/public_token/exchange
request_id
1{2 "public_token": "public-sandbox-b0e2c4ee-a763-4df5-bfe9-46a46bce993d",3 "request_id": "Aim3b"4}
Was this helpful?
/sandbox/processor_token/create
Create a test Item and processor token
Use the /sandbox/processor_token/create
endpoint to create a valid processor_token
for an arbitrary institution ID and test credentials. The created processor_token
corresponds to a new Sandbox Item. You can then use this processor_token
with the /processor/
API endpoints in Sandbox. You can also use /sandbox/processor_token/create
with the user_custom
test username to generate a test account with custom data.
client_id
client_id
. The client_id
is required and may be provided either in the PLAID-CLIENT-ID
header or as part of a request body.secret
secret
. The secret
is required and may be provided either in the PLAID-SECRET
header or as part of a request body.institution_id
options
null
.override_username
user_good
.user_good
override_password
pass_good
.pass_good
1const request: SandboxProcessorTokenCreateRequest = {2 institution_id: institutionID,3};4try {5 const response = await plaidClient.sandboxProcessorTokenCreate(request);6 const processorToken = response.data.processor_token;7} catch (error) {8 // handle error9}
Response fields and example
processor_token
/processor/
endpoints.request_id
1{2 "processor_token": "processor-sandbox-b0e2c4ee-a763-4df5-bfe9-46a46bce993d",3 "request_id": "Aim3b"4}
Was this helpful?
/sandbox/item/reset_login
Force a Sandbox Item into an error state
/sandbox/item/reset_login/
forces an Item into an ITEM_LOGIN_REQUIRED
state in order to simulate an Item whose login is no longer valid. This makes it easy to test Link's update mode flow in the Sandbox environment. After calling /sandbox/item/reset_login
, You can then use Plaid Link update mode to restore the Item to a good state. An ITEM_LOGIN_REQUIRED
webhook will also be fired after a call to this endpoint, if one is associated with the Item.
In the Sandbox, Items will transition to an ITEM_LOGIN_REQUIRED
error state automatically after 30 days, even if this endpoint is not called.
client_id
client_id
. The client_id
is required and may be provided either in the PLAID-CLIENT-ID
header or as part of a request body.secret
secret
. The secret
is required and may be provided either in the PLAID-SECRET
header or as part of a request body.access_token
1const request: SandboxItemResetLoginRequest = {2 access_token: accessToken,3};4try {5 const response = await plaidClient.sandboxItemResetLogin(request);6 // create a public_token for the Item and use it to7 // initialize Link in update mode.8 const pt_request: itemPublicTokenCreateRequest = {9 access_token: accessToken,10 };11 const pt_response = await plaidClient.itemCreatePublicToken(pt_request);12 const publicToken = pt_response.public_token;13} catch (error) {14 // handle error15}
Response fields and example
reset_login
true
if the call succeededrequest_id
1{2 "reset_login": true,3 "request_id": "m8MDnv9okwxFNBV"4}
Was this helpful?
/sandbox/user/reset_login
Force item(s) for a Sandbox User into an error state
/sandbox/user/reset_login/
functions the same as /sandbox/item/reset_login
, but will modify Items related to a User. This endpoint forces each Item into an ITEM_LOGIN_REQUIRED
state in order to simulate an Item whose login is no longer valid. This makes it easy to test Link's update mode flow in the Sandbox environment. After calling /sandbox/user/reset_login
, You can then use Plaid Link update mode to restore Items associated with the User to a good state. An ITEM_LOGIN_REQUIRED
webhook will also be fired after a call to this endpoint, if one is associated with the Item.
In the Sandbox, Items will transition to an ITEM_LOGIN_REQUIRED
error state automatically after 30 days, even if this endpoint is not called.
client_id
client_id
. The client_id
is required and may be provided either in the PLAID-CLIENT-ID
header or as part of a request body.secret
secret
. The secret
is required and may be provided either in the PLAID-SECRET
header or as part of a request body.user_token
item_ids
item_id
s associated with the User to be reset. If empty or null
, this field will default to resetting all Items associated with the User.1const request: SandboxUserResetLoginRequest = {2 user_token: 'user-environment-1234567-abcd-abcd-1234-1234567890ab',3 item_ids: ['eVBnVMp7zdTJLkRNr33Rs6zr7KNJqBFL9DrE6']4};5try {6 const response = await plaidClient.sandboxUserResetLogin(request);7} catch (error) {8 // handle error9}
Response fields and example
request_id
1{2 "reset_login": true,3 "request_id": "n7XQnv8ozwyFPBC"4}
Was this helpful?
/sandbox/item/fire_webhook
Fire a test webhook
The /sandbox/item/fire_webhook
endpoint is used to test that code correctly handles webhooks. This endpoint can trigger the following webhooks:DEFAULT_UPDATE
: Webhook to be fired for a given Sandbox Item simulating a default update event for the respective product as specified with the webhook_type
in the request body. Valid Sandbox DEFAULT_UPDATE
webhook types include: AUTH
, IDENTITY
, TRANSACTIONS
, INVESTMENTS_TRANSACTIONS
, LIABILITIES
, HOLDINGS
. If the Item does not support the product, a SANDBOX_PRODUCT_NOT_ENABLED
error will result.NEW_ACCOUNTS_AVAILABLE
: Fired to indicate that a new account is available on the Item and you can launch update mode to request access to it.SMS_MICRODEPOSITS_VERIFICATION
: Fired when a given same day micro-deposit item is verified via SMS verification.LOGIN_REPAIRED
: Fired when an Item recovers from the ITEM_LOGIN_REQUIRED
without the user going through update mode in your app.PENDING_DISCONNECT
: Fired when an Item will stop working in the near future (e.g. due to a planned bank migration) and must be sent through update mode to continue working. RECURRING_TRANSACTIONS_UPDATE
: Recurring Transactions webhook to be fired for a given Sandbox Item. If the Item does not support Recurring Transactions, a SANDBOX_PRODUCT_NOT_ENABLED
error will result.SYNC_UPDATES_AVAILABLE
: Transactions webhook to be fired for a given Sandbox Item. If the Item does not support Transactions, a SANDBOX_PRODUCT_NOT_ENABLED
error will result.PRODUCT_READY
: Assets webhook to be fired when a given asset report has been successfully generated. If the Item does not support Assets, a SANDBOX_PRODUCT_NOT_ENABLED
error will result.ERROR
: Assets webhook to be fired when asset report generation has failed. If the Item does not support Assets, a SANDBOX_PRODUCT_NOT_ENABLED
error will result.
Note that this endpoint is provided for developer ease-of-use and is not required for testing webhooks; webhooks will also fire in Sandbox under the same conditions that they would in Production (except for webhooks of type TRANSFER
).
client_id
client_id
. The client_id
is required and may be provided either in the PLAID-CLIENT-ID
header or as part of a request body.secret
secret
. The secret
is required and may be provided either in the PLAID-SECRET
header or as part of a request body.access_token
webhook_type
AUTH
, HOLDINGS
, INVESTMENTS_TRANSACTIONS
, ITEM
, LIABILITIES
, TRANSACTIONS
, ASSETS
webhook_code
DEFAULT_UPDATE
, NEW_ACCOUNTS_AVAILABLE
, SMS_MICRODEPOSITS_VERIFICATION
, AUTHORIZATION_GRANTED
, PENDING_DISCONNECT
, RECURRING_TRANSACTIONS_UPDATE
, LOGIN_REPAIRED
, SYNC_UPDATES_AVAILABLE
, PRODUCT_READY
, ERROR
1// Fire a DEFAULT_UPDATE webhook for an Item2const request: SandboxItemFireWebhookRequest = {3 access_token: accessToken4 webhook_code: 'DEFAULT_UPDATE'5};6try {7 const response = await plaidClient.sandboxItemFireWebhook(request);8} catch (error) {9 // handle error10}
Response fields and example
webhook_fired
true
if the test webhook_code
was successfully fired.request_id
1{2 "webhook_fired": true,3 "request_id": "1vwmF5TBQwiqfwP"4}
Was this helpful?
/sandbox/item/set_verification_status
Set verification status for Sandbox account
The /sandbox/item/set_verification_status
endpoint can be used to change the verification status of an Item in in the Sandbox in order to simulate the Automated Micro-deposit flow.
For more information on testing Automated Micro-deposits in Sandbox, see Auth full coverage testing.
client_id
client_id
. The client_id
is required and may be provided either in the PLAID-CLIENT-ID
header or as part of a request body.secret
secret
. The secret
is required and may be provided either in the PLAID-SECRET
header or as part of a request body.access_token
account_id
account_id
of the account whose verification status is to be modifiedverification_status
automatically_verified
, verification_expired
1const request: SandboxItemSetVerificationStatusRequest = {2 access_token: accessToken,3 account_id: accountID,4 verification_status: 'automatically_verified',5};6try {7 const response = await plaidClient.sandboxItemSetVerificationStatus(request);8} catch (error) {9 // handle error10}
Response fields and example
request_id
1{2 "request_id": "1vwmF5TBQwiqfwP"3}
Was this helpful?
/sandbox/transfer/fire_webhook
Manually fire a Transfer webhook
Use the /sandbox/transfer/fire_webhook
endpoint to manually trigger a TRANSFER_EVENTS_UPDATE
webhook in the Sandbox environment.
client_id
client_id
. The client_id
is required and may be provided either in the PLAID-CLIENT-ID
header or as part of a request body.secret
secret
. The secret
is required and may be provided either in the PLAID-SECRET
header or as part of a request body.webhook
1const request: SandboxTransferFireWebhookRequest = {2 webhook: 'https://www.example.com',3};4try {5 const response = await plaidClient.sandboxTransferFireWebhook(request);6 // empty response upon success7} catch (error) {8 // handle error9}
Response fields and example
request_id
1{2 "request_id": "mdqfuVxeoza6mhu"3}
Was this helpful?
/sandbox/transfer/simulate
Simulate a transfer event in Sandbox
Use the /sandbox/transfer/simulate
endpoint to simulate a transfer event in the Sandbox environment. Note that while an event will be simulated and will appear when using endpoints such as /transfer/event/sync
or /transfer/event/list
, no transactions will actually take place and funds will not move between accounts, even within the Sandbox.
client_id
client_id
. The client_id
is required and may be provided either in the PLAID-CLIENT-ID
header or as part of a request body.secret
secret
. The secret
is required and may be provided either in the PLAID-SECRET
header or as part of a request body.transfer_id
test_clock_id
virtual_time
on the provided test_clock
.event_type
posted
, settled
, failed
, funds_available
, or returned
.An error will be returned if the event type is incompatible with the current transfer status. Compatible status --> event type transitions include:
pending
--> failed
pending
--> posted
posted
--> returned
posted
--> settled
settled
--> funds_available
(only applicable to ACH debits.)failure_reason
"failed"
or "returned"
. Null value otherwise.ach_return_code
R01
. A return code will be provided if and only if the transfer status is returned
. For a full listing of ACH return codes, see Transfer errors.description
webhook
TRANSFER_EVENTS_UPDATE
webhook should be sent.1const request: SandboxTransferSimulateRequest = {2 transfer_id,3 event_type: 'posted',4 failure_reason: failureReason,5};6try {7 const response = await plaidClient.sandboxTransferSimulate(request);8 // empty response upon success9} catch (error) {10 // handle error11}
Response fields and example
request_id
1{2 "request_id": "mdqfuVxeoza6mhu"3}
Was this helpful?
/sandbox/transfer/refund/simulate
Simulate a refund event in Sandbox
Use the /sandbox/transfer/refund/simulate
endpoint to simulate a refund event in the Sandbox environment. Note that while an event will be simulated and will appear when using endpoints such as /transfer/event/sync
or /transfer/event/list
, no transactions will actually take place and funds will not move between accounts, even within the Sandbox.
client_id
client_id
. The client_id
is required and may be provided either in the PLAID-CLIENT-ID
header or as part of a request body.secret
secret
. The secret
is required and may be provided either in the PLAID-SECRET
header or as part of a request body.refund_id
test_clock_id
virtual_time
on the provided test_clock
.event_type
refund.posted
, refund.settled
, refund.failed
, or refund.returned
.An error will be returned if the event type is incompatible with the current refund status. Compatible status --> event type transitions include:
refund.pending
--> refund.failed
refund.pending
--> refund.posted
refund.posted
--> refund.returned
refund.posted
--> refund.settled
refund.posted
events can only be simulated if the refunded transfer has been transitioned to settled. This mimics the ordering of events in Production.failure_reason
"failed"
or "returned"
. Null value otherwise.ach_return_code
R01
. A return code will be provided if and only if the transfer status is returned
. For a full listing of ACH return codes, see Transfer errors.description
webhook
TRANSFER_EVENTS_UPDATE
webhook should be sent.1const request: SandboxTransferRefundSimulateRequest = {2 refund_id: refundId,3 event_type: 'refund.posted',4};5try {6 const response = await plaidClient.sandboxTransferRefundSimulate(request);7 // empty response upon success8} catch (error) {9 // handle error10}
Response fields and example
request_id
1{2 "request_id": "mdqfuVxeoza6mhu"3}
Was this helpful?
/sandbox/transfer/sweep/simulate
Simulate creating a sweep
Use the /sandbox/transfer/sweep/simulate
endpoint to create a sweep and associated events in the Sandbox environment. Upon calling this endpoint, all transfers with a sweep status of swept
will become swept_settled
, all posted
or pending
transfers with a sweep status of unswept
will become swept
, and all returned
transfers with a sweep status of swept
will become return_swept
.
client_id
client_id
. The client_id
is required and may be provided either in the PLAID-CLIENT-ID
header or as part of a request body.secret
secret
. The secret
is required and may be provided either in the PLAID-SECRET
header or as part of a request body.test_clock_id
virtual_time
on the test_clock
. If the date of virtual_time
is on weekend or a federal holiday, the next available banking day is used.webhook
TRANSFER_EVENTS_UPDATE
webhook should be sent.1try {2 const response = await plaidClient.sandboxTransferSweepSimulate({});3 const sweep = response.data.sweep;4} catch (error) {5 // handle error6}
Response fields and example
sweep
/sandbox/transfer/sweep/simulate
endpoint.
Can be null if there are no transfers to include in a sweep.id
funding_account_id
ledger_id
created
date-time
amount
If amount is not present, the sweep was net-settled to zero and outstanding debits and credits between the sweep account and Plaid are balanced.
iso_currency_code
settled
date
status
"pending"
- The sweep is currently pending
"posted"
- The sweep has been posted
"settled"
- The sweep has settled
"returned"
- The sweep has been returned
"failed"
- The sweep has failedpending
, posted
, settled
, returned
, failed
, null
trigger
"manual"
- The sweep is created manually by the customer
"incoming"
- The sweep is created by incoming funds flow (e.g. Incoming Wire)
"balance_threshold"
- The sweep is created by balance threshold setting
"automatic_aggregate"
- The sweep is created by the Plaid automatic aggregation process. These funds did not pass through the Plaid Ledger balance.manual
, incoming
, balance_threshold
, automatic_aggregate
description
network_trace_id
For
ach
or same-day-ach
transfers, this is the ACH trace number.
For rtp
transfers, this is the Transaction Identification number.
For wire
transfers, this is the IMAD (Input Message Accountability Data) number.request_id
1{2 "sweep": {3 "id": "d5394a4d-0b04-4a02-9f4a-7ca5c0f52f9d",4 "funding_account_id": "8945fedc-e703-463d-86b1-dc0607b55460",5 "created": "2020-08-06T17:27:15Z",6 "amount": "12.34",7 "iso_currency_code": "USD",8 "settled": "2020-08-07",9 "network_trace_id": null10 },11 "request_id": "mdqfuVxeoza6mhu"12}
Was this helpful?
/sandbox/transfer/ledger/deposit/simulate
Simulate a ledger deposit event in Sandbox
Use the /sandbox/transfer/ledger/deposit/simulate
endpoint to simulate a ledger deposit event in the Sandbox environment.
client_id
client_id
. The client_id
is required and may be provided either in the PLAID-CLIENT-ID
header or as part of a request body.secret
secret
. The secret
is required and may be provided either in the PLAID-SECRET
header or as part of a request body.sweep_id
event_type
posted
, settled
, failed
, or returned
.An error will be returned if the event type is incompatible with the current ledger sweep status. Compatible status --> event type transitions include:
sweep.pending
--> sweep.posted
sweep.pending
--> sweep.failed
sweep.posted
--> sweep.settled
sweep.posted
--> sweep.returned
sweep.settled
--> sweep.returned
sweep.posted
, sweep.settled
, sweep.returned
, sweep.failed
failure_reason
"failed"
or "returned"
. Null value otherwise.ach_return_code
R01
. A return code will be provided if and only if the transfer status is returned
. For a full listing of ACH return codes, see Transfer errors.description
1const request: SandboxTransferLedgerDepositSimulateRequest = {2 sweep_id: 'f4ba7a287eae4d228d12331b68a9f35a',3 event_type: 'sweep.posted',4};5try {6 const response = await plaidClient.sandboxTransferLedgerDepositSimulate(7 request,8 );9 // empty response upon success10} catch (error) {11 // handle error12}
Response fields and example
request_id
1{2 "request_id": "mdqfuVxeoza6mhu"3}
Was this helpful?
/sandbox/transfer/ledger/simulate_available
Simulate converting pending balance to available balance
Use the /sandbox/transfer/ledger/simulate_available
endpoint to simulate converting pending balance to available balance for all originators in the Sandbox environment.
client_id
client_id
. The client_id
is required and may be provided either in the PLAID-CLIENT-ID
header or as part of a request body.secret
secret
. The secret
is required and may be provided either in the PLAID-SECRET
header or as part of a request body.ledger_id
test_clock_id
virtual_timestamp
on the test clock will be converted.webhook
TRANSFER_EVENTS_UPDATE
webhook should be sent.1try {2 const response = await plaidClient.sandboxTransferLedgerSimulateAvailable({});3 const available = response.data.balance.available;4} catch (error) {5 // handle error6}
Response fields and example
request_id
1{2 "request_id": "mdqfuVxeoza6mhu"3}
Was this helpful?
/sandbox/transfer/ledger/withdraw/simulate
Simulate a ledger withdraw event in Sandbox
Use the /sandbox/transfer/ledger/withdraw/simulate
endpoint to simulate a ledger withdraw event in the Sandbox environment.
client_id
client_id
. The client_id
is required and may be provided either in the PLAID-CLIENT-ID
header or as part of a request body.secret
secret
. The secret
is required and may be provided either in the PLAID-SECRET
header or as part of a request body.sweep_id
event_type
posted
, settled
, failed
, or returned
.An error will be returned if the event type is incompatible with the current ledger sweep status. Compatible status --> event type transitions include:
sweep.pending
--> sweep.posted
sweep.pending
--> sweep.failed
sweep.posted
--> sweep.settled
sweep.posted
--> sweep.returned
sweep.settled
--> sweep.returned
sweep.posted
, sweep.settled
, sweep.returned
, sweep.failed
failure_reason
"failed"
or "returned"
. Null value otherwise.ach_return_code
R01
. A return code will be provided if and only if the transfer status is returned
. For a full listing of ACH return codes, see Transfer errors.description
1const request: SandboxTransferLedgerWithdrawSimulateRequest = {2 sweep_id: 'f4ba7a287eae4d228d12331b68a9f35a',3 event_type: 'sweep.posted',4};5try {6 const response = await plaidClient.sandboxTransferLedgerWithdrawSimulate(7 request,8 );9 // empty response upon success10} catch (error) {11 // handle error12}
Response fields and example
request_id
1{2 "request_id": "mdqfuVxeoza6mhu"3}
Was this helpful?
/sandbox/transfer/test_clock/create
Create a test clock
Use the /sandbox/transfer/test_clock/create
endpoint to create a test_clock
in the Sandbox environment.
A test clock object represents an independent timeline and has a virtual_time
field indicating the current timestamp of the timeline. Test clocks are used for testing recurring transfers in Sandbox.
A test clock can be associated with up to 5 recurring transfers.
client_id
client_id
. The client_id
is required and may be provided either in the PLAID-CLIENT-ID
header or as part of a request body.secret
secret
. The secret
is required and may be provided either in the PLAID-SECRET
header or as part of a request body.virtual_time
2006-01-02T15:04:05Z
.date-time
1const request: SandboxTransferTestClockCreateRequest = {2 virtual_time: '2006-01-02T15:04:05Z',3};4try {5 const response = await plaidClient.sandboxTransferTestClockCreate(request);6 const test_clock = response.data.test_clock;7} catch (error) {8 // handle error9}
Response fields and example
test_clock
test_clock_id
virtual_time
2006-01-02T15:04:05Z
.date-time
request_id
1{2 "test_clock": {3 "test_clock_id": "b33a6eda-5e97-5d64-244a-a9274110151c",4 "virtual_time": "2006-01-02T15:04:05Z"5 },6 "request_id": "mdqfuVxeoza6mhu"7}
Was this helpful?
/sandbox/transfer/test_clock/advance
Advance a test clock
Use the /sandbox/transfer/test_clock/advance
endpoint to advance a test_clock
in the Sandbox environment.
A test clock object represents an independent timeline and has a virtual_time
field indicating the current timestamp of the timeline. A test clock can be advanced by incrementing virtual_time
, but may never go back to a lower virtual_time
.
If a test clock is advanced, we will simulate the changes that ought to occur during the time that elapsed.
For example, a client creates a weekly recurring transfer with a test clock set at t. When the client advances the test clock by setting virtual_time
= t + 15 days, 2 new originations should be created, along with the webhook events.
The advancement of the test clock from its current virtual_time
should be limited such that there are no more than 20 originations resulting from the advance operation on each recurring_transfer
associated with the test_clock
.
For example, if the recurring transfer associated with this test clock originates once every 4 weeks, you can advance the virtual_time
up to 80 weeks on each API call.
client_id
client_id
. The client_id
is required and may be provided either in the PLAID-CLIENT-ID
header or as part of a request body.secret
secret
. The secret
is required and may be provided either in the PLAID-SECRET
header or as part of a request body.test_clock_id
new_virtual_time
2006-01-02T15:04:05Z
.date-time
1const request: SandboxTransferTestClockAdvanceRequest = {2 test_clock_id: 'b33a6eda-5e97-5d64-244a-a9274110151c',3 new_virtual_time: '2006-01-02T15:04:05Z',4};5try {6 const response = await plaidClient.sandboxTransferTestClockAdvance(request);7} catch (error) {8 // handle error9}
Response fields and example
request_id
1{2 "request_id": "mdqfuVxeoza6mhu"3}
Was this helpful?
/sandbox/transfer/test_clock/get
Get a test clock
Use the /sandbox/transfer/test_clock/get
endpoint to get a test_clock
in the Sandbox environment.
client_id
client_id
. The client_id
is required and may be provided either in the PLAID-CLIENT-ID
header or as part of a request body.secret
secret
. The secret
is required and may be provided either in the PLAID-SECRET
header or as part of a request body.test_clock_id
1const request: SandboxTransferTestClockGetRequest = {2 test_clock_id: 'b33a6eda-5e97-5d64-244a-a9274110151c',3};4try {5 const response = await plaidClient.sandboxTransferTestClockGet(request);6 const test_clock = response.data.test_clock;7} catch (error) {8 // handle error9}
Response fields and example
test_clock
test_clock_id
virtual_time
2006-01-02T15:04:05Z
.date-time
request_id
1{2 "test_clock": {3 "test_clock_id": "b33a6eda-5e97-5d64-244a-a9274110151c",4 "virtual_time": "2006-01-02T15:04:05Z"5 },6 "request_id": "mdqfuVxeoza6mhu"7}
Was this helpful?
/sandbox/transfer/test_clock/list
List test clocks
Use the /sandbox/transfer/test_clock/list
endpoint to see a list of all your test clocks in the Sandbox environment, by ascending virtual_time
. Results are paginated; use the count
and offset
query parameters to retrieve the desired test clocks.
client_id
client_id
. The client_id
is required and may be provided either in the PLAID-CLIENT-ID
header or as part of a request body.secret
secret
. The secret
is required and may be provided either in the PLAID-SECRET
header or as part of a request body.start_virtual_time
2019-12-06T22:35:49Z
)date-time
end_virtual_time
2019-12-06T22:35:49Z
)date-time
count
1
25
25
offset
0
0
1const request: SandboxTransferTestClockListRequest = {2 count: 2,3};4try {5 const response = await plaidClient.sandboxTransferTestClockList(request);6 const test_clocks = response.data.test_clocks;7} catch (error) {8 // handle error9}
Response fields and example
test_clocks
test_clock_id
virtual_time
2006-01-02T15:04:05Z
.date-time
request_id
1{2 "test_clocks": [3 {4 "test_clock_id": "b33a6eda-5e97-5d64-244a-a9274110151c",5 "virtual_time": "2006-01-02T15:04:05Z"6 },7 {8 "test_clock_id": "a33a6eda-5e97-5d64-244a-a9274110152d",9 "virtual_time": "2006-02-02T15:04:05Z"10 }11 ],12 "request_id": "mdqfuVxeoza6mhu"13}
Was this helpful?
/sandbox/income/fire_webhook
Manually fire an Income webhook
Use the /sandbox/income/fire_webhook
endpoint to manually trigger a Payroll or Document Income webhook in the Sandbox environment.
client_id
client_id
. The client_id
is required and may be provided either in the PLAID-CLIENT-ID
header or as part of a request body.secret
secret
. The secret
is required and may be provided either in the PLAID-SECRET
header or as part of a request body.item_id
user_id
user_id
of the User associated with this webhook, warning, or error.webhook
verification_status
VERIFICATION_STATUS_PROCESSING_COMPLETE
: The income verification status processing has completed. If the user uploaded multiple documents, this webhook will fire when all documents have finished processing. Call the /income/verification/paystubs/get
endpoint and check the document metadata to see which documents were successfully parsed.VERIFICATION_STATUS_PROCESSING_FAILED
: A failure occurred when attempting to process the verification documentation.VERIFICATION_STATUS_PENDING_APPROVAL
: (deprecated) The income verification has been sent to the user for review.VERIFICATION_STATUS_PROCESSING_COMPLETE
, VERIFICATION_STATUS_PROCESSING_FAILED
, VERIFICATION_STATUS_PENDING_APPROVAL
webhook_code
INCOME_VERIFICATION
, INCOME_VERIFICATION_RISK_SIGNALS
1const request: SandboxIncomeFireWebhookRequest = {2 item_id: 'Rn3637v1adCNj5Dl1LG6idQBzqBLwRcRZLbgM',3 webhook: 'https://webhook.com/',4 verification_status: 'VERIFICATION_STATUS_PROCESSING_COMPLETE',5};6try {7 const response = await plaidClient.sandboxIncomeFireWebhook(request);8 // empty response upon success9} catch (error) {10 // handle error11}
Response fields and example
request_id
1{2 "request_id": "mdqfuVxeoza6mhu"3}