# JPMC-PDP Documentation from https://developer.payments.jpmorgan.com # Perform micro-deposits In this tutorial, you will learn how to perform micro-deposits. By the end of this tutorial, you will know how to: - Validate the account status based on actual transactions. - Validate the account status and confirm owner’s access based on actual transactions. - Understand the test types for micro-deposits. - Understand required and optional parameters for each micro-deposit test type. ## Before you begin To retrieve a validation services request status, you will need the following: - A [registered and fully onboarded](/docs/quick-start) Developer Account on the J.P. Morgan Payments Developer Portal. - An active project that provides you with the credentials to make a request. ## Callback To enable receiving micro-deposit responses, you need to register your [callback URL](/api/authentication#add-callback-url-and-certificates). ## Validate account status using micro-deposits This service uses low-dollar-value transactions to validate the accounts requested by the client. There are two types of tests for micro-deposits: ### Penny test flow Verify account status using the penny test. 1. The client initiates a validation request with Account Validation Services (AVS). 2. AVS waterfalls the request through multiple data sources for a validation response. 3. If the initial data sources do not validate the request, AVS forwards the request to the micro-deposit services for further verification. 4. Micro-deposit services initiate a few dollar-value transactions with the requested bank account. The client is informed with a real-time response when the request moves to micro-deposit services for further verification. 5. The client receives a callback response within 5 days, indicating the system is “Ready for Validation”. ### Challenge test flow A challenge test is used to validate the account status (verification) and confirm the owner’s access to the account. 1. The client initiates a validation request with AVS. 2. AVS waterfalls the request through multiple data sources for a validation response. 3. If the initial data sources do not validate the request, AVS forwards the request to micro-deposit services for further verification. 4. Micro-deposit services initiate a few dollar-value transactions with the requested bank account. The client is informed with a real-time response when the request moves to micro-deposit services for further verification. 5. The client receives a callback response within 5 days, indicating the system is “Ready for Validation”. 6. The client resends the initial validation request and two deposit amounts to AVS. 7. The client receives a real-time response with the verification and access confirmation. ## Example request and response for a penny test The Account status validation process evaluates a bank account to determine if the account number is in good standing. To do this, call a `POST` request to the `v2/validations/accounts` endpoint. The following example shows the required fields for an Account verification request. ```json [ { "requestId": "223e4567-e89b-12d3-a456-426614174000", "profileName": "verificationauth", "account": { "accountNumber": "12345", "financialInstitutionId": { "clearingSystemId": { "id": "122199983", "idType": "ABA" } } }, "entity": { "individual": { "firstName": "Jane", "lastName": "Abbot", "fullName": "Jane Abbot" } }, "transactions": [] } ] ``` You will receive a successful response containing the acknowledgement for the penny test. ```json [ { "requestId": "223e4567-e89b-12d3-a456-426614174000", "responses": [ { "codes": { "verificationMicroDeposit": { "code": 8906, "message": "Initiated" } }, "provider": "MICRODEPOSITS" } ] } ] ``` You will receive a successful response containing the callback for the penny test validation. ```json [ { "requestId": "10082023-TEST-MD-0001", "profileName": "verificationauth", "responses": [ { "codes": { "verificationMicroDeposit": { "code": 1006, "message":"Open Valid" } }, "provider": "MICRODEPOSITS", "details" : { "providerResponse" : { "retry-count" : 0, "md-notification" : "Validation Complete" } } } ] } ] ``` ## Example request and response for challenge test Account status validation uses a challenge test to validate the account status by verifying the owner’s access to the account. To do this, call a `POST` request to the `v2/validations/accounts` endpoint. The following example shows the required fields for an Account verification request. ```json [ { "requestId": "123e4567-e89b-12d3-a456-426614174000", "profileName": "verificationauth", "account": { "accountNumber": "123456789", "financialInstitutionId": { "clearingSystemId": { "id": "223344556", "idType": "ABA" } } }, "entity": { "organization": { "name": "John Smith & Sons" } } "transactions": [ { "context": "ACCOUNT_VALIDATION", "amount": { "amount": 0.03, "currency": "USD" } }, { "context": "ACCOUNT_VALIDATION", "amount": { "amount": 0.14, "currency": "USD" } } ] } ] ``` You will receive a successful response containing the challenge test acknowledgement. ```json [ { "requestId": "223e4567-e89b-12d3-a456-426614174000", "profileName": "verificationauth", "responses": [ { "codes": { "verificationMicroDeposit": { "code": 1006, "message": "Open Valid" }, "authenticationMicroDeposit": { "code": 8006, "message": "Access Confirmed" } }, "provider": "MICRODEPOSITS" } ] } ] ``` You will receive a "Ready for Validation” response for your challenge test. ```json [ { "requestId": "10082023-TEST-MD-0001", "profileName": "verificationauth", "responses": [ { "codes": { "verificationMicroDeposit": { "code": 8906, "message":"Initiated" } }, "provider": "MICRODEPOSITS", "details" : { "providerResponse" : { "md-notification" : "Ready for validation”, "retry-count" : 0 } } } ] } ] ``` ## Example request and response for challenge test The Account status validation process evaluates a bank account to determine if the account number is in good standing. To do this, call a `POST `request to the `v2/validations/accounts` endpoint. The following example shows the required fields for an Account verification request. ```json [ { "requestId": "123e4567-e89b-12d3-a456-426614174000", "profileName": "verificationauth", "account": { "accountNumber": "123456789", "financialInstitutionId": { "clearingSystemId": { "id": "223344556", "idType": "ABA" } } }, "entity": { "individual": { "firstName": "Jane" "lastName": "Doe" } } "transactions": [ { "context":"DEPOSIT", "amount": { "amount": 0.01, "currency": "USD" } }, { "context":"DEPOSIT", "amount": { "amount": 0.18, "currency": "USD" } } ] } ] ``` You will receive a validation response for your challenge test. ```json [ { "requestId": "10082023-TEST-MD-0001", "responses": [ { "codes": { "verificationMicroDeposit": { "code": 1006, "message":"Open Valid" }, "authenticationMicroDeposit": { "code": 8006, "message":"Access Confirmed" } }, "provider":"MICRODEPOSITS" } ] } ] ``` ## Micro-deposit service details To incorporate a challenge request into the micro-deposit request, include required fields, plus the following fields. - transactions.context - transactions.amount - transactions.currency ## Related - For more information about parameters, see [Account Validation parameters](/docs/fraud-solutions/validation-services/capabilities/account-validation/account-validation-parameters). - For more information about the status responses and error codes supported by the Validation Services API, see [Validation Services error response codes](/api/fraud-solutions/validation-services/error-codes). ## Next steps Learn how to [request Account Confidence Score](/docs/fraud-solutions/validation-services/capabilities/account-validation/how-to/account-confidence-score).