VRPlatformVRPlatform
Plaid

/plaid/connect/complete

Complete Plaid Link, persist credentials, discover accounts synchronously, and return one screen-ready configuration model without polling or secondary account requests. The response includes every discovered feed, eligible GL bank accounts, allowed categories, server-owned suggestions, action capabilities, and typed duplicate issues. Sandbox sessions ignore shared test masks for GL last-four matching; production sessions reserve masks across active and inactive GL accounts. Create and replace require publicToken; update forbids it and reuses stored credentials. Transaction history is never awaited. Retrying the same connectId resumes after the last durable state. PLAID_CONNECT_REQUIRES_NEW_LINK returns the only valid restart mode and any required tenant-scoped connectionId in context. Plaid Link errors such as INVALID_UPDATED_USERNAME are handled in Link before this operation. See https://docs.vrplatform.app/guides/build/banking.

Required scope: bank-connections:manage

POST
/plaid/connect/complete
X-API-Key<token>

API key provided in dashboard

In: header

Request Body

application/json

connectId*string
Match^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
Formatuuid
publicToken?string
linkSessionId*string

Response Body

application/json

application/json

application/json

application/json

application/json

application/json

application/json

application/json

application/json

application/json

curl -X POST "https://staging.api.vrplatform.app/plaid/connect/complete" \  -H "Content-Type: application/json" \  -d '{    "connectId": "b5b9696e-e02a-4940-9e42-1bad8e6e0913",    "linkSessionId": "string"  }'
{
  "connectId": "b5b9696e-e02a-4940-9e42-1bad8e6e0913",
  "connection": {
    "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
    "name": "string",
    "status": "active"
  },
  "accounts": [
    {
      "id": "string",
      "name": "string",
      "uniqueRef": "string",
      "status": "active",
      "banking": {
        "category": "trust",
        "currency": "string",
        "last4": "string",
        "type": "deposit"
      }
    }
  ],
  "bankAccountCategories": [
    "trust"
  ],
  "bankAccounts": [
    {
      "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
      "name": "string",
      "type": "deposit",
      "category": "trust",
      "currency": "string",
      "lastDigits": "string",
      "persistentRef": "string",
      "status": "active",
      "startDate": "string",
      "account": {
        "id": "string",
        "name": "string",
        "uniqueRef": "string",
        "status": "active"
      },
      "configuration": {
        "status": "configured",
        "canConnect": true,
        "canCreateAccount": true,
        "suggestedAccount": {
          "id": "string",
          "name": "string",
          "uniqueRef": "string",
          "status": "active"
        },
        "suggestedCategory": "trust",
        "suggestedStartDate": "string"
      },
      "issues": [
        {
          "code": "deterministicDuplicate",
          "severity": "error",
          "context": {
            "bankAccounts": [
              {
                "bankAccountId": "5b26b598-a880-4e32-8c41-126aa0206857",
                "name": "string",
                "lastDigits": "string",
                "connection": {
                  "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
                  "name": "string"
                },
                "account": {
                  "id": "string",
                  "name": "string",
                  "uniqueRef": "string",
                  "status": "active"
                }
              }
            ]
          }
        }
      ]
    }
  ],
  "status": "awaitingConfiguration",
  "sync": {
    "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
    "status": "queued"
  }
}
{
  "code": "string",
  "message": "string",
  "links": {
    "docs": "string",
    "schema": "string"
  },
  "issues": [
    {
      "message": "string",
      "path": [
        "string"
      ],
      "schema": "string"
    }
  ],
  "retryable": true,
  "context": null
}
{
  "code": "string",
  "message": "string",
  "links": {
    "docs": "string",
    "schema": "string"
  },
  "issues": [
    {
      "message": "string",
      "path": [
        "string"
      ],
      "schema": "string"
    }
  ],
  "retryable": true,
  "context": null
}
{
  "code": "string",
  "message": "string",
  "links": {
    "docs": "string",
    "schema": "string"
  },
  "issues": [
    {
      "message": "string",
      "path": [
        "string"
      ],
      "schema": "string"
    }
  ],
  "retryable": true,
  "context": null
}
{
  "code": "string",
  "message": "string",
  "links": {
    "docs": "string",
    "schema": "string"
  },
  "issues": [
    {
      "message": "string",
      "path": [
        "string"
      ],
      "schema": "string"
    }
  ],
  "retryable": true,
  "context": null
}
{
  "code": "string",
  "message": "string",
  "links": {
    "docs": "string",
    "schema": "string"
  },
  "issues": [
    {
      "message": "string",
      "path": [
        "string"
      ],
      "schema": "string"
    }
  ],
  "retryable": true,
  "context": null
}
{
  "code": "string",
  "message": "string",
  "links": {
    "docs": "string",
    "schema": "string"
  },
  "issues": [
    {
      "message": "string",
      "path": [
        "string"
      ],
      "schema": "string"
    }
  ],
  "retryable": true,
  "context": null
}
{
  "code": "PLAID_CONNECT_REQUIRES_NEW_LINK",
  "message": "string",
  "links": {
    "docs": "string",
    "schema": "string"
  },
  "issues": [
    {
      "message": "string",
      "path": [
        "string"
      ],
      "schema": "string"
    }
  ],
  "retryable": true,
  "context": {
    "restartMode": "create"
  }
}
{
  "code": "string",
  "message": "string",
  "links": {
    "docs": "string",
    "schema": "string"
  },
  "issues": [
    {
      "message": "string",
      "path": [
        "string"
      ],
      "schema": "string"
    }
  ],
  "retryable": true,
  "context": null
}
{
  "code": "string",
  "message": "string",
  "links": {
    "docs": "string",
    "schema": "string"
  },
  "issues": [
    {
      "message": "string",
      "path": [
        "string"
      ],
      "schema": "string"
    }
  ],
  "retryable": true,
  "context": null
}