Skip to main content

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:

  • registered and fully onboarded 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.

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. 

Example POST v2/validations/accounts 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.

Example callback response: Penny Test Acknowledgement
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. 

Example callback response: Penny Test validation response
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. 

Example POST v2/validations/accounts 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": [
      {
        "context": "DEPOSIT",
        "amount": {
          "amount": 0.03,
          "currency": "USD"
        }
      },
      {
        "context": "DEPOSIT",
        "amount": {
          "amount": 0.14,
          "currency": "USD"
        }
      }
    ]
  }
]

You will receive a successful response containing the challenge test acknowledgement. 

Example callback response: 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. 

Example callback response: Challenge Test “Ready for Validation”
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. 

Example POST v2/validations/account request
Json
[
  {
    "requestId": "123e4567-e89b-12d3-a456-426614174000",
    "profileName": "verificationauth",
    "account": {
      "accountNumber": "123456789",
      "financialInstitutionId": {
        "clearingSystemId": {
          "id": "223344556",
          "idType": "ABA"
        }
      }
    },
    "entity": {
      "individual": {
        "firstName": "George"
        "lastName": "White"
      }
    }
    "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.

Example POST v2/validations/account request
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

Next steps

Learn how to request Account Confidence Score.