> ## Documentation Index
> Fetch the complete documentation index at: https://docs.mx.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Build a Microdeposits Flow with our API

> Build a microdeposits flow using the Platform API to let end users verify their accounts with institutions that don't support Instant Account Verification.

Building a microdeposits flow lets your end users verify their accounts with institutions that don't support Instant Account Verification.

This guide shows you that process if you're using our Platform API to power your own connection experience.

<CardGroup cols={2}>
  <Card title="API Reference" cta="Go to Reference" href="/api-reference/platform-api/reference/microdeposits">
    Learn about Microdeposit fields in the API.
  </Card>

  <Card title="Webhooks" cta="Go to Reference" href="/resources/webhooks/microdeposits">
    Learn about the Microdeposits webhook.
  </Card>
</CardGroup>

<Steps>
  <Step title="Create a Microdeposit">
    After you have an account number, routing number, and account type, request [Create a Microdeposit](/api-reference/platform-api/reference/microdeposits).

    <CodeGroup>
      ```shell Request theme={null}
      curl -L -X POST 'https://int-api.mx.com/users/:user_guid/micro_deposits' \
      -H 'Content-Type: application/json' \
      -H 'Accept: application/json' \
      -H 'Authorization: Basic BASE_64_ENCODING_OF{client_id:api_key}' \
      --data-raw '{"micro_deposit":{"account_name":"My test account","account_number":"3331261","account_type":"CHECKING","email":"joshyboy2@example.com","first_name":"Joshy","last_name":"Grobanne","routing_number":"091000019"}}'
      ```

      ```json Response theme={null}
      {
        "micro_deposit": [
          {
            "account_name": "My test account",
            "account_number": "3331261",
            "account_type": "CHECKING",
            "email": "example@example.com",
            "first_name": "Josh",
            "last_name": "Smith",
            "routing_number": "091000019",
            "error_message": null,
            "guid": "MIC-09ba578e-8448-4f7f-89e1-b62ff2517edb",
            "institution_code": "mxbank",
            "institution_name": "MX Bank",
            "status": "INITIATED",
            "updated_at": "2023-06-01T19:18:06Z",
            "verified_at": null
          }
        ]
      }
      ```
    </CodeGroup>
  </Step>

  <Step title="Check the Microdeposit's Status">
    To track the status of microdeposits, you can either use the [Microdeposits webhook](/resources/webhooks/microdeposits) or poll the [Read a Microdeposit for a User](/api-reference/platform-api/reference/microdeposits) endpoint at regular intervals.

    Approximately 36 hours after creating a microdeposit, begin polling the [Read a Microdeposit for a User](/api-reference/platform-api/reference/microdeposits) endpoint at an interval of 15 minutes (which is the interval MX updates it at) until its `status` is either `DEPOSITED` or `ERRORED`.

    We recommend waiting 36 hours because microdeposits typically don't reach a `DEPOSITED` or `ERRORED` status for 12 to 36 hours.
  </Step>

  <Step title="Handle the Microdeposit Status">
    <Note>
      **NOTE**

      For a full list of all microdeposit statuses, see [Microdeposit Statuses](/api-reference/platform-api/reference/microdeposits#microdeposit-statuseses).
    </Note>

    If the `status` of the microdeposit is `DEPOSITED`, prompt the end user to verify the deposit amounts and send their input using [Verify Microdeposit](/api-reference/platform-api/reference/microdeposits).

    If the `status` of the microdeposit is `VERIFIED`, you can check the `connection_status` of the `member` to ensure you can retrieve any data from that connection.
  </Step>
</Steps>
