react-native-plaid-link-sdk
Version:
React Native Plaid Link SDK (New Architecture & Expo)
895 lines (824 loc) • 29.8 kB
text/typescript
export enum PlaidEnvironment {
PRODUCTION = "production",
SANDBOX = "sandbox",
}
export enum PlaidProduct {
ASSETS = "assets",
AUTH = "auth",
DEPOSIT_SWITCH = "deposit_switch",
IDENTITY = "identity",
INCOME = "income",
INVESTMENTS = "investments",
LIABILITIES = "liabilities",
LIABILITIES_REPORT = "liabilities_report",
PAYMENT_INITIATION = "payment_initiation",
TRANSACTIONS = "transactions",
}
export enum LinkAccountType {
CREDIT = "credit",
DEPOSITORY = "depository",
INVESTMENT = "investment",
LOAN = "loan",
OTHER = "other",
}
export enum LinkAccountSubtypes {
ALL = "all",
CREDIT_CARD = "credit card",
PAYPAL = "paypal",
AUTO = "auto",
BUSINESS = "business",
COMMERCIAL = "commercial",
CONSTRUCTION = "construction",
CONSUMER = "consumer",
HOME_EQUITY = "home equity",
LINE_OF_CREDIT = "line of credit",
LOAN = "loan",
MORTGAGE = "mortgage",
OVERDRAFT = "overdraft",
STUDENT = "student",
CASH_MANAGEMENT = "cash management",
CD = "cd",
CHECKING = "checking",
EBT = "ebt",
HSA = "hsa",
MONEY_MARKET = "money market",
PREPAID = "prepaid",
SAVINGS = "savings",
FOUR_0_1_A = "401a",
FOUR_0_1_K = "401k",
FOUR_0_3_B = "403B",
FOUR_5_7_B = "457b",
FIVE_2_9 = "529",
BROKERAGE = "brokerage",
CASH_ISA = "cash isa",
EDUCATION_SAVINGS_ACCOUNT = "education savings account",
FIXED_ANNUNITY = "fixed annuity",
GIC = "gic",
HEALTH_REIMBURSEMENT_ARRANGEMENT = "health reimbursement arrangement",
IRA = "ira",
ISA = "isa",
KEOGH = "keogh",
LIF = "lif",
LIRA = "lira",
LRIF = "lrif",
LRSP = "lrsp",
MUTUAL_FUND = "mutual fund",
NON_TAXABLE_BROKERAGE_ACCOUNT = "non-taxable brokerage account",
PENSION = "pension",
PLAN = "plan",
PRIF = "prif",
PROFIT_SHARING_PLAN = "profit sharing plan",
RDSP = "rdsp",
RESP = "resp",
RETIREMENT = "retirement",
RLIF = "rlif",
ROTH_401K = "roth 401k",
ROTH = "roth",
RRIF = "rrif",
RRSP = "rrsp",
SARSEP = "sarsep",
SEP_IRA = "sep ira",
SIMPLE_IRA = "simple ira",
SIPP = "sipp",
STOCK_PLAN = "stock plan",
TFSA = "tfsa",
THRIFT_SAVINGS_PLAN = "thrift savings plan",
TRUST = "trust",
UGMA = "ugma",
UTMA = "utma",
VARIABLE_ANNUITY = "variable annuity",
}
// eslint-disable-next-line @typescript-eslint/no-empty-object-type
export interface LinkAccountSubtype {}
export class LinkAccountSubtypeCredit implements LinkAccountSubtype {
public static readonly ALL = new LinkAccountSubtypeCredit(
LinkAccountType.CREDIT,
LinkAccountSubtypes.ALL,
);
public static readonly CREDIT_CARD = new LinkAccountSubtypeCredit(
LinkAccountType.CREDIT,
LinkAccountSubtypes.CREDIT_CARD,
);
public static readonly PAYPAL = new LinkAccountSubtypeCredit(
LinkAccountType.CREDIT,
LinkAccountSubtypes.PAYPAL,
);
private constructor(
public readonly type: LinkAccountType,
public readonly subtype: LinkAccountSubtype,
) {}
}
export class LinkAccountSubtypeDepository implements LinkAccountSubtype {
public static readonly ALL = new LinkAccountSubtypeDepository(
LinkAccountType.DEPOSITORY,
LinkAccountSubtypes.ALL,
);
public static readonly CASH_MANAGEMENT = new LinkAccountSubtypeDepository(
LinkAccountType.DEPOSITORY,
LinkAccountSubtypes.CASH_MANAGEMENT,
);
public static readonly CD = new LinkAccountSubtypeDepository(
LinkAccountType.DEPOSITORY,
LinkAccountSubtypes.CD,
);
public static readonly CHECKING = new LinkAccountSubtypeDepository(
LinkAccountType.DEPOSITORY,
LinkAccountSubtypes.CHECKING,
);
public static readonly EBT = new LinkAccountSubtypeDepository(
LinkAccountType.DEPOSITORY,
LinkAccountSubtypes.EBT,
);
public static readonly HSA = new LinkAccountSubtypeDepository(
LinkAccountType.DEPOSITORY,
LinkAccountSubtypes.HSA,
);
public static readonly MONEY_MARKET = new LinkAccountSubtypeDepository(
LinkAccountType.DEPOSITORY,
LinkAccountSubtypes.MONEY_MARKET,
);
public static readonly PAYPAL = new LinkAccountSubtypeDepository(
LinkAccountType.DEPOSITORY,
LinkAccountSubtypes.PAYPAL,
);
public static readonly PREPAID = new LinkAccountSubtypeDepository(
LinkAccountType.DEPOSITORY,
LinkAccountSubtypes.PREPAID,
);
public static readonly SAVINGS = new LinkAccountSubtypeDepository(
LinkAccountType.DEPOSITORY,
LinkAccountSubtypes.SAVINGS,
);
private constructor(
public readonly type: LinkAccountType,
public readonly subtype: LinkAccountSubtype,
) {}
}
export class LinkAccountSubtypeInvestment implements LinkAccountSubtype {
public static readonly ALL = new LinkAccountSubtypeInvestment(
LinkAccountType.INVESTMENT,
LinkAccountSubtypes.ALL,
);
public static readonly BROKERAGE = new LinkAccountSubtypeInvestment(
LinkAccountType.INVESTMENT,
LinkAccountSubtypes.BROKERAGE,
);
public static readonly CASH_ISA = new LinkAccountSubtypeInvestment(
LinkAccountType.INVESTMENT,
LinkAccountSubtypes.CASH_ISA,
);
public static readonly EDUCATION_SAVINGS_ACCOUNT =
new LinkAccountSubtypeInvestment(
LinkAccountType.INVESTMENT,
LinkAccountSubtypes.EDUCATION_SAVINGS_ACCOUNT,
);
public static readonly FIXED_ANNUNITY = new LinkAccountSubtypeInvestment(
LinkAccountType.INVESTMENT,
LinkAccountSubtypes.FIXED_ANNUNITY,
);
public static readonly GIC = new LinkAccountSubtypeInvestment(
LinkAccountType.INVESTMENT,
LinkAccountSubtypes.GIC,
);
public static readonly HEALTH_REIMBURSEMENT_ARRANGEMENT =
new LinkAccountSubtypeInvestment(
LinkAccountType.INVESTMENT,
LinkAccountSubtypes.HEALTH_REIMBURSEMENT_ARRANGEMENT,
);
public static readonly HSA = new LinkAccountSubtypeInvestment(
LinkAccountType.INVESTMENT,
LinkAccountSubtypes.HSA,
);
public static readonly INVESTMENT_401A = new LinkAccountSubtypeInvestment(
LinkAccountType.INVESTMENT,
LinkAccountSubtypes.FOUR_0_1_A,
);
public static readonly INVESTMENT_401K = new LinkAccountSubtypeInvestment(
LinkAccountType.INVESTMENT,
LinkAccountSubtypes.FOUR_0_1_K,
);
public static readonly INVESTMENT_403B = new LinkAccountSubtypeInvestment(
LinkAccountType.INVESTMENT,
LinkAccountSubtypes.FOUR_0_3_B,
);
public static readonly INVESTMENT_457B = new LinkAccountSubtypeInvestment(
LinkAccountType.INVESTMENT,
LinkAccountSubtypes.FOUR_5_7_B,
);
public static readonly INVESTMENT_529 = new LinkAccountSubtypeInvestment(
LinkAccountType.INVESTMENT,
LinkAccountSubtypes.FIVE_2_9,
);
public static readonly IRA = new LinkAccountSubtypeInvestment(
LinkAccountType.INVESTMENT,
LinkAccountSubtypes.IRA,
);
public static readonly ISA = new LinkAccountSubtypeInvestment(
LinkAccountType.INVESTMENT,
LinkAccountSubtypes.ISA,
);
public static readonly KEOGH = new LinkAccountSubtypeInvestment(
LinkAccountType.INVESTMENT,
LinkAccountSubtypes.KEOGH,
);
public static readonly LIF = new LinkAccountSubtypeInvestment(
LinkAccountType.INVESTMENT,
LinkAccountSubtypes.LIF,
);
public static readonly LIRA = new LinkAccountSubtypeInvestment(
LinkAccountType.INVESTMENT,
LinkAccountSubtypes.LIRA,
);
public static readonly LRIF = new LinkAccountSubtypeInvestment(
LinkAccountType.INVESTMENT,
LinkAccountSubtypes.LRIF,
);
public static readonly LRSP = new LinkAccountSubtypeInvestment(
LinkAccountType.INVESTMENT,
LinkAccountSubtypes.LRSP,
);
public static readonly MUTUAL_FUND = new LinkAccountSubtypeInvestment(
LinkAccountType.INVESTMENT,
LinkAccountSubtypes.MUTUAL_FUND,
);
public static readonly NON_TAXABLE_BROKERAGE_ACCOUNT =
new LinkAccountSubtypeInvestment(
LinkAccountType.INVESTMENT,
LinkAccountSubtypes.NON_TAXABLE_BROKERAGE_ACCOUNT,
);
public static readonly PENSION = new LinkAccountSubtypeInvestment(
LinkAccountType.INVESTMENT,
LinkAccountSubtypes.PENSION,
);
public static readonly PLAN = new LinkAccountSubtypeInvestment(
LinkAccountType.INVESTMENT,
LinkAccountSubtypes.PLAN,
);
public static readonly PRIF = new LinkAccountSubtypeInvestment(
LinkAccountType.INVESTMENT,
LinkAccountSubtypes.PRIF,
);
public static readonly PROFIT_SHARING_PLAN = new LinkAccountSubtypeInvestment(
LinkAccountType.INVESTMENT,
LinkAccountSubtypes.PROFIT_SHARING_PLAN,
);
public static readonly RDSP = new LinkAccountSubtypeInvestment(
LinkAccountType.INVESTMENT,
LinkAccountSubtypes.RDSP,
);
public static readonly RESP = new LinkAccountSubtypeInvestment(
LinkAccountType.INVESTMENT,
LinkAccountSubtypes.RESP,
);
public static readonly RETIREMENT = new LinkAccountSubtypeInvestment(
LinkAccountType.INVESTMENT,
LinkAccountSubtypes.RETIREMENT,
);
public static readonly RLIF = new LinkAccountSubtypeInvestment(
LinkAccountType.INVESTMENT,
LinkAccountSubtypes.RLIF,
);
public static readonly ROTH = new LinkAccountSubtypeInvestment(
LinkAccountType.INVESTMENT,
LinkAccountSubtypes.ROTH,
);
public static readonly ROTH_401K = new LinkAccountSubtypeInvestment(
LinkAccountType.INVESTMENT,
LinkAccountSubtypes.ROTH_401K,
);
public static readonly RRIF = new LinkAccountSubtypeInvestment(
LinkAccountType.INVESTMENT,
LinkAccountSubtypes.RRIF,
);
public static readonly RRSP = new LinkAccountSubtypeInvestment(
LinkAccountType.INVESTMENT,
LinkAccountSubtypes.RRSP,
);
public static readonly SARSEP = new LinkAccountSubtypeInvestment(
LinkAccountType.INVESTMENT,
LinkAccountSubtypes.SARSEP,
);
public static readonly SEP_IRA = new LinkAccountSubtypeInvestment(
LinkAccountType.INVESTMENT,
LinkAccountSubtypes.SEP_IRA,
);
public static readonly SIMPLE_IRA = new LinkAccountSubtypeInvestment(
LinkAccountType.INVESTMENT,
LinkAccountSubtypes.SIMPLE_IRA,
);
public static readonly SIPP = new LinkAccountSubtypeInvestment(
LinkAccountType.INVESTMENT,
LinkAccountSubtypes.SIPP,
);
public static readonly STOCK_PLAN = new LinkAccountSubtypeInvestment(
LinkAccountType.INVESTMENT,
LinkAccountSubtypes.STOCK_PLAN,
);
public static readonly TFSA = new LinkAccountSubtypeInvestment(
LinkAccountType.INVESTMENT,
LinkAccountSubtypes.TFSA,
);
public static readonly THRIFT_SAVINGS_PLAN = new LinkAccountSubtypeInvestment(
LinkAccountType.INVESTMENT,
LinkAccountSubtypes.THRIFT_SAVINGS_PLAN,
);
public static readonly TRUST = new LinkAccountSubtypeInvestment(
LinkAccountType.INVESTMENT,
LinkAccountSubtypes.TRUST,
);
public static readonly UGMA = new LinkAccountSubtypeInvestment(
LinkAccountType.INVESTMENT,
LinkAccountSubtypes.UGMA,
);
public static readonly UTMA = new LinkAccountSubtypeInvestment(
LinkAccountType.INVESTMENT,
LinkAccountSubtypes.UTMA,
);
public static readonly VARIABLE_ANNUITY = new LinkAccountSubtypeInvestment(
LinkAccountType.INVESTMENT,
LinkAccountSubtypes.VARIABLE_ANNUITY,
);
private constructor(
public readonly type: LinkAccountType,
public readonly subtype: LinkAccountSubtype,
) {}
}
export class LinkAccountSubtypeLoan implements LinkAccountSubtype {
public static readonly ALL = new LinkAccountSubtypeLoan(
LinkAccountType.LOAN,
LinkAccountSubtypes.ALL,
);
public static readonly AUTO = new LinkAccountSubtypeLoan(
LinkAccountType.LOAN,
LinkAccountSubtypes.AUTO,
);
public static readonly BUSINESS = new LinkAccountSubtypeLoan(
LinkAccountType.LOAN,
LinkAccountSubtypes.BUSINESS,
);
public static readonly COMMERCIAL = new LinkAccountSubtypeLoan(
LinkAccountType.LOAN,
LinkAccountSubtypes.COMMERCIAL,
);
public static readonly CONSTRUCTION = new LinkAccountSubtypeLoan(
LinkAccountType.LOAN,
LinkAccountSubtypes.CONSTRUCTION,
);
public static readonly CONSUMER = new LinkAccountSubtypeLoan(
LinkAccountType.LOAN,
LinkAccountSubtypes.CONSUMER,
);
public static readonly HOME_EQUITY = new LinkAccountSubtypeLoan(
LinkAccountType.LOAN,
LinkAccountSubtypes.HOME_EQUITY,
);
public static readonly LINE_OF_CREDIT = new LinkAccountSubtypeLoan(
LinkAccountType.LOAN,
LinkAccountSubtypes.LINE_OF_CREDIT,
);
public static readonly LOAN = new LinkAccountSubtypeLoan(
LinkAccountType.LOAN,
LinkAccountSubtypes.LOAN,
);
public static readonly MORTGAGE = new LinkAccountSubtypeLoan(
LinkAccountType.LOAN,
LinkAccountSubtypes.MORTGAGE,
);
public static readonly OVERDRAFT = new LinkAccountSubtypeLoan(
LinkAccountType.LOAN,
LinkAccountSubtypes.OVERDRAFT,
);
public static readonly STUDENT = new LinkAccountSubtypeLoan(
LinkAccountType.LOAN,
LinkAccountSubtypes.STUDENT,
);
private constructor(
public readonly type: LinkAccountType,
public readonly subtype: LinkAccountSubtype,
) {}
}
export class LinkAccountSubtypeUnknown implements LinkAccountSubtype {
constructor(
public readonly type: string,
public readonly subtype: string,
) {}
}
export interface LinkSuccess {
publicToken: string;
metadata: LinkSuccessMetadata;
}
export interface LinkSuccessMetadata {
institution?: LinkInstitution;
accounts: LinkAccount[];
linkSessionId: string;
metadataJson?: string;
}
export interface LinkAccount {
id: string;
name?: string;
mask?: string;
type: LinkAccountType;
subtype: LinkAccountSubtype;
verificationStatus?: LinkAccountVerificationStatus;
}
export enum LinkAccountVerificationStatus {
PENDING_AUTOMATIC_VERIFICATION = "pending_automatic_verification",
PENDING_MANUAL_VERIFICATION = "pending_manual_verification",
MANUALLY_VERIFIED = "manually_verified",
}
export interface LinkInstitution {
id: string;
name: string;
}
export interface LinkExit {
error?: LinkError;
metadata: LinkExitMetadata;
}
export interface LinkExitMetadata {
status?: LinkExitMetadataStatus;
institution?: LinkInstitution;
linkSessionId: string;
requestId: string;
metadataJson?: string;
}
export enum LinkExitMetadataStatus {
CONNECTED = "connected",
CHOOSE_DEVICE = "choose_device",
REQUIRES_ACCOUNT_SELECTION = "requires_account_selection",
REQUIRES_CODE = "requires_code",
REQUIRES_CREDENTIALS = "requires_credentials",
REQUIRES_EXTERNAL_ACTION = "requires_external_action",
REQUIRES_OAUTH = "requires_oauth",
REQUIRES_QUESTIONS = "requires_questions",
REQUIRES_RECAPTCHA = "requires_recaptcha",
REQUIRES_SELECTIONS = "requires_selections",
REQUIRES_DEPOSIT_SWITCH_ALLOCATION_CONFIGURATION = "requires_deposit_switch_allocation_configuration",
REQUIRES_DEPOSIT_SWITCH_ALLOCATION_SELECTION = "requires_deposit_switch_allocation_selection",
}
export interface LinkError {
errorCode: LinkErrorCode;
errorType: LinkErrorType;
errorMessage: string;
displayMessage?: string;
errorJson?: string;
}
export enum LinkErrorCode {
// ITEM_ERROR
INVALID_CREDENTIALS = "INVALID_CREDENTIALS",
INVALID_MFA = "INVALID_MFA",
ITEM_LOGIN_REQUIRED = "ITEM_LOGIN_REQUIRED",
INSUFFICIENT_CREDENTIALS = "INSUFFICIENT_CREDENTIALS",
ITEM_LOCKED = "ITEM_LOCKED",
USER_SETUP_REQUIRED = "USER_SETUP_REQUIRED",
MFA_NOT_SUPPORTED = "MFA_NOT_SUPPORTED",
INVALID_SEND_METHOD = "INVALID_SEND_METHOD",
NO_ACCOUNTS = "NO_ACCOUNTS",
ITEM_NOT_SUPPORTED = "ITEM_NOT_SUPPORTED",
TOO_MANY_VERIFICATION_ATTEMPTS = "TOO_MANY_VERIFICATION_ATTEMPTS",
INVALD_UPDATED_USERNAME = "INVALD_UPDATED_USERNAME",
INVALID_UPDATED_USERNAME = "INVALID_UPDATED_USERNAME",
ITEM_NO_ERROR = "ITEM_NO_ERROR",
item_no_error = "item-no-error",
NO_AUTH_ACCOUNTS = "NO_AUTH_ACCOUNTS",
NO_INVESTMENT_ACCOUNTS = "NO_INVESTMENT_ACCOUNTS",
NO_INVESTMENT_AUTH_ACCOUNTS = "NO_INVESTMENT_AUTH_ACCOUNTS",
NO_LIABILITY_ACCOUNTS = "NO_LIABILITY_ACCOUNTS",
PRODUCTS_NOT_SUPPORTED = "PRODUCTS_NOT_SUPPORTED",
ITEM_NOT_FOUND = "ITEM_NOT_FOUND",
ITEM_PRODUCT_NOT_READY = "ITEM_PRODUCT_NOT_READY",
// INSTITUTION_ERROR
INSTITUTION_DOWN = "INSTITUTION_DOWN",
INSTITUTION_NOT_RESPONDING = "INSTITUTION_NOT_RESPONDING",
INSTITUTION_NOT_AVAILABLE = "INSTITUTION_NOT_AVAILABLE",
INSTITUTION_NO_LONGER_SUPPORTED = "INSTITUTION_NO_LONGER_SUPPORTED",
// API_ERROR
INTERNAL_SERVER_ERROR = "INTERNAL_SERVER_ERROR",
PLANNED_MAINTENANCE = "PLANNED_MAINTENANCE",
// ASSET_REPORT_ERROR
PRODUCT_NOT_ENABLED = "PRODUCT_NOT_ENABLED",
DATA_UNAVAILABLE = "DATA_UNAVAILABLE",
ASSET_PRODUCT_NOT_READY = "ASSET_PRODUCT_NOT_READY",
ASSET_REPORT_GENERATION_FAILED = "ASSET_REPORT_GENERATION_FAILED",
INVALID_PARENT = "INVALID_PARENT",
INSIGHTS_NOT_ENABLED = "INSIGHTS_NOT_ENABLED",
INSIGHTS_PREVIOUSLY_NOT_ENABLED = "INSIGHTS_PREVIOUSLY_NOT_ENABLED",
// BANK_TRANSFER_ERROR
BANK_TRANSFER_LIMIT_EXCEEDED = "BANK_TRANSFER_LIMIT_EXCEEDED",
BANK_TRANSFER_MISSING_ORIGINATION_ACCOUNT = "BANK_TRANSFER_MISSING_ORIGINATION_ACCOUNT",
BANK_TRANSFER_INVALID_ORIGINATION_ACCOUNT = "BANK_TRANSFER_INVALID_ORIGINATION_ACCOUNT",
BANK_TRANSFER_ACCOUNT_BLOCKED = "BANK_TRANSFER_ACCOUNT_BLOCKED",
BANK_TRANSFER_INSUFFICIENT_FUNDS = "BANK_TRANSFER_INSUFFICIENT_FUNDS",
BANK_TRANSFER_NOT_CANCELLABLE = "BANK_TRANSFER_NOT_CANCELLABLE",
BANK_TRANSFER_UNSUPPORTED_ACCOUNT_TYPE = "BANK_TRANSFER_UNSUPPORTED_ACCOUNT_TYPE",
BANK_TRANSFER_UNSUPPORTED_ENVIRONMENT = "BANK_TRANSFER_UNSUPPORTED_ENVIRONMENT",
// SANDBOX_ERROR
SANDBOX_PRODUCT_NOT_ENABLED = "SANDBOX_PRODUCT_NOT_ENABLED",
SANDBOX_WEBHOOK_INVALID = "SANDBOX_WEBHOOK_INVALID",
SANDBOX_BANK_TRANSFER_EVENT_TRANSITION_INVALID = "SANDBOX_BANK_TRANSFER_EVENT_TRANSITION_INVALID",
// INVALID_REQUEST
MISSING_FIELDS = "MISSING_FIELDS",
UNKNOWN_FIELDS = "UNKNOWN_FIELDS",
INVALID_FIELD = "INVALID_FIELD",
INCOMPATIBLE_API_VERSION = "INCOMPATIBLE_API_VERSION",
INVALID_BODY = "INVALID_BODY",
INVALID_HEADERS = "INVALID_HEADERS",
NOT_FOUND = "NOT_FOUND",
NO_LONGER_AVAILABLE = "NO_LONGER_AVAILABLE",
SANDBOX_ONLY = "SANDBOX_ONLY",
INVALID_ACCOUNT_NUMBER = "INVALID_ACCOUNT_NUMBER",
// INVALID_INPUT
// From above ITEM_LOGIN_REQUIRED = "INVALID_CREDENTIALS",
INCORRECT_DEPOSIT_AMOUNTS = "INCORRECT_DEPOSIT_AMOUNTS",
UNAUTHORIZED_ENVIRONMENT = "UNAUTHORIZED_ENVIRONMENT",
INVALID_PRODUCT = "INVALID_PRODUCT",
UNAUTHORIZED_ROUTE_ACCESS = "UNAUTHORIZED_ROUTE_ACCESS",
DIRECT_INTEGRATION_NOT_ENABLED = "DIRECT_INTEGRATION_NOT_ENABLED",
INVALID_API_KEYS = "INVALID_API_KEYS",
INVALID_ACCESS_TOKEN = "INVALID_ACCESS_TOKEN",
INVALID_PUBLIC_TOKEN = "INVALID_PUBLIC_TOKEN",
INVALID_LINK_TOKEN = "INVALID_LINK_TOKEN",
INVALID_PROCESSOR_TOKEN = "INVALID_PROCESSOR_TOKEN",
INVALID_AUDIT_COPY_TOKEN = "INVALID_AUDIT_COPY_TOKEN",
INVALID_ACCOUNT_ID = "INVALID_ACCOUNT_ID",
MICRODEPOSITS_ALREADY_VERIFIED = "MICRODEPOSITS_ALREADY_VERIFIED",
// INVALID_RESULT
PLAID_DIRECT_ITEM_IMPORT_RETURNED_INVALID_MFA = "PLAID_DIRECT_ITEM_IMPORT_RETURNED_INVALID_MFA",
// RATE_LIMIT_EXCEEDED
ACCOUNTS_LIMIT = "ACCOUNTS_LIMIT",
ADDITION_LIMIT = "ADDITION_LIMIT",
AUTH_LIMIT = "AUTH_LIMIT",
BALANCE_LIMIT = "BALANCE_LIMIT",
IDENTITY_LIMIT = "IDENTITY_LIMIT",
ITEM_GET_LIMIT = "ITEM_GET_LIMIT",
RATE_LIMIT = "RATE_LIMIT",
TRANSACTIONS_LIMIT = "TRANSACTIONS_LIMIT",
// RECAPTCHA_ERROR
RECAPTCHA_REQUIRED = "RECAPTCHA_REQUIRED",
RECAPTCHA_BAD = "RECAPTCHA_BAD",
// OAUTH_ERROR
INCORRECT_OAUTH_NONCE = "INCORRECT_OAUTH_NONCE",
OAUTH_STATE_ID_ALREADY_PROCESSED = "OAUTH_STATE_ID_ALREADY_PROCESSED",
}
export enum LinkErrorType {
BANK_TRANSFER = "BANK_TRANSFER_ERROR",
INVALID_REQUEST = "INVALID_REQUEST",
INVALID_RESULT = "INVALID_RESULT",
INVALID_INPUT = "INVALID_INPUT",
INSTITUTION_ERROR = "INSTITUTION_ERROR",
RATE_LIMIT_EXCEEDED = "RATE_LIMIT_EXCEEDED",
API_ERROR = "API_ERROR",
ITEM_ERROR = "ITEM_ERROR",
AUTH_ERROR = "AUTH_ERROR",
ASSET_REPORT_ERROR = "ASSET_REPORT_ERROR",
SANDBOX_ERROR = "SANDBOX_ERROR",
RECAPTCHA_ERROR = "RECAPTCHA_ERROR",
OAUTH_ERROR = "OAUTH_ERROR",
}
export type LinkEventListener = (linkEvent: LinkEvent) => void;
export interface LinkEvent {
eventName: LinkEventName;
metadata: LinkEventMetadata;
}
export interface LinkEventMetadata {
accountNumberMask?: string;
linkSessionId: string;
mfaType?: string;
requestId?: string;
viewName: LinkEventViewName;
errorCode?: string;
errorMessage?: string;
errorType?: string;
exitStatus?: string;
institutionId?: string;
institutionName?: string;
institutionSearchQuery?: string;
isUpdateMode?: string;
matchReason?: string;
issueId?: string;
issueDescription?: string;
issueDetectedAt?: string;
// see possible values for selection at https://plaid.com/docs/link/web/#link-web-onevent-selection
selection?: null | string;
timestamp: string;
metadataJson: string;
}
export enum LinkEventName {
AUTO_SELECT_SAVED_INSTITUTION = "AUTO_SELECT_SAVED_INSTITUTION",
AUTO_SUBMIT_PHONE = "AUTO_SUBMIT_PHONE",
BANK_INCOME_INSIGHTS_COMPLETED = "BANK_INCOME_INSIGHTS_COMPLETED",
CLOSE_OAUTH = "CLOSE_OAUTH",
CONNECT_NEW_INSTITUTION = "CONNECT_NEW_INSTITUTION",
ERROR = "ERROR",
EXIT = "EXIT",
FAIL_OAUTH = "FAIL_OAUTH",
HANDOFF = "HANDOFF",
IDENTITY_MATCH_PASSED = "IDENTITY_MATCH_PASSED",
IDENTITY_MATCH_FAILED = "IDENTITY_MATCH_FAILED",
IDENTITY_VERIFICATION_CLOSE_UI = "IDENTITY_VERIFICATION_CLOSE_UI",
IDENTITY_VERIFICATION_CREATE_SESSION = "IDENTITY_VERIFICATION_CREATE_SESSION",
IDENTITY_VERIFICATION_FAIL_SESSION = "IDENTITY_VERIFICATION_FAIL_SESSION",
IDENTITY_VERIFICATION_FAIL_STEP = "IDENTITY_VERIFICATION_FAIL_STEP",
IDENTITY_VERIFICATION_OPEN_UI = "IDENTITY_VERIFICATION_OPEN_UI",
IDENTITY_VERIFICATION_PASS_SESSION = "IDENTITY_VERIFICATION_PASS_SESSION",
IDENTITY_VERIFICATION_PASS_STEP = "IDENTITY_VERIFICATION_PASS_STEP",
IDENTITY_VERIFICATION_PENDING_REVIEW_SESSION = "IDENTITY_VERIFICATION_PENDING_REVIEW_SESSION",
IDENTITY_VERIFICATION_PENDING_REVIEW_STEP = "IDENTITY_VERIFICATION_PENDING_REVIEW_STEP",
IDENTITY_VERIFICATION_RESUME_SESSION = "IDENTITY_VERIFICATION_RESUME_SESSION",
IDENTITY_VERIFICATION_RESUME_UI = "IDENTITY_VERIFICATION_RESUME_UI",
IDENTITY_VERIFICATION_START_STEP = "IDENTITY_VERIFICATION_START_STEP",
ISSUE_FOLLOWED = "ISSUE_FOLLOWED",
LAYER_AUTOFILL_NOT_AVAILABLE = "LAYER_AUTOFILL_NOT_AVAILABLE",
LAYER_NOT_AVAILABLE = "LAYER_NOT_AVAILABLE",
LAYER_READY = "LAYER_READY",
MATCHED_SELECT_INSTITUTION = "MATCHED_SELECT_INSTITUTION",
MATCHED_SELECT_VERIFY_METHOD = "MATCHED_SELECT_VERIFY_METHOD",
OPEN = "OPEN",
OPEN_MY_PLAID = "OPEN_MY_PLAID",
OPEN_OAUTH = "OPEN_OAUTH",
PLAID_CHECK_PANE = "PLAID_CHECK_PANE",
PROFILE_ELIGIBILITY_CHECK_ERROR = "PROFILE_ELIGIBILITY_CHECK_ERROR",
PROFILE_ELIGIBILITY_CHECK_READY = "PROFILE_ELIGIBILITY_CHECK_READY",
REMEMBER_ME_DISABLED = "REMEMBER_ME_DISABLED",
REMEMBER_ME_ENABLED = "REMEMBER_ME_ENABLED",
REMEMBER_ME_HOLDOUT = "REMEMBER_ME_HOLDOUT",
SEARCH_INSTITUTION = "SEARCH_INSTITUTION",
SELECT_ACCOUNT = "SELECT_ACCOUNT",
SELECT_AUTH_TYPE = "SELECT_AUTH_TYPE",
SELECT_BRAND = "SELECT_BRAND",
SELECT_DEGRADED_INSTITUTION = "SELECT_DEGRADED_INSTITUTION",
SELECT_DENYLISTED_INSTITUTION = "SELECT_DENYLISTED_INSTITUTION",
SELECT_DOWN_INSTITUTION = "SELECT_DOWN_INSTITUTION",
SELECT_FALLBACK_ROUTING_INSTITUTION = "SELECT_FALLBACK_ROUTING_INSTITUTION",
SELECT_FILTERED_INSTITUTION = "SELECT_FILTERED_INSTITUTION",
SELECT_INSTITUTION = "SELECT_INSTITUTION",
SELECT_REMEMBER_ME_DUPLICATE_INSTITUTION = "SELECT_REMEMBER_ME_DUPLICATE_INSTITUTION",
SELECT_SAVED_ACCOUNT = "SELECT_SAVED_ACCOUNT",
SELECT_SAVED_INSTITUTION = "SELECT_SAVED_INSTITUTION",
SKIP_SUBMIT_EMAIL = "SKIP_SUBMIT_EMAIL",
SKIP_SUBMIT_PHONE = "SKIP_SUBMIT_PHONE",
SUBMIT_ACCOUNT_NUMBER = "SUBMIT_ACCOUNT_NUMBER",
SUBMIT_CREDENTIALS = "SUBMIT_CREDENTIALS",
SUBMIT_DOCUMENTS = "SUBMIT_DOCUMENTS",
SUBMIT_DOCUMENTS_ERROR = "SUBMIT_DOCUMENTS_ERROR",
SUBMIT_DOCUMENTS_SUCCESS = "SUBMIT_DOCUMENTS_SUCCESS",
SUBMIT_EMAIL = "SUBMIT_EMAIL",
SUBMIT_MFA = "SUBMIT_MFA",
SUBMIT_OTP = "SUBMIT_OTP",
SUBMIT_PHONE = "SUBMIT_PHONE",
SUBMIT_ROUTING_NUMBER = "SUBMIT_ROUTING_NUMBER",
TRANSITION_VIEW = "TRANSITION_VIEW",
VERIFY_PHONE = "VERIFY_PHONE",
VIEW_DATA_TYPES = "VIEW_DATA_TYPES",
}
export enum LinkEventViewName {
ACCEPT_TOS = "ACCEPT_TOS",
BANK_INCOME_INSIGHTS_COMPLETED = "BANK_INCOME_INSIGHTS_COMPLETED",
CONNECTED = "CONNECTED",
CONSENT = "CONSENT",
CREDENTIAL = "CREDENTIAL",
CRA_CONSENT = "CRA_CONSENT",
DATA_TRANSPARENCY = "DATA_TRANSPARENCY",
DATA_TRANSPARENCY_CONSENT = "DATA_TRANSPARENCY_CONSENT",
DATA_TRANSPARENCY_MESSAGING_MODAL = "DATA_TRANSPARENCY_MESSAGING_MODAL",
DOCUMENTARY_VERIFICATION = "DOCUMENTARY_VERIFICATION",
ERROR = "ERROR",
EXIT = "EXIT",
IDENTITY_MATCH_BLOCK = "IDENTITY_MATCH_BLOCK",
INSTANT_MICRODEPOSIT_AUTHORIZED = "INSTANT_MICRODEPOSIT_AUTHORIZED",
INSTANT_MICRODEPOSIT_VERIFICATION = "INSTANT_MICRODEPOSIT_VERIFICATION",
KYC_CHECK = "KYC_CHECK",
LOADING = "LOADING",
MATCHED_CONSENT = "MATCHED_CONSENT",
MATCHED_CREDENTIAL = "MATCHED_CREDENTIAL",
MATCHED_MFA = "MATCHED_MFA",
MFA = "MFA",
NUMBERS = "NUMBERS",
NUMBERS_SELECT_INSTITUTION = "NUMBERS_SELECT_INSTITUTION",
OAUTH = "OAUTH",
PROFILE_DATA_REVIEW = "PROFILE_DATA_REVIEW",
RECAPTCHA = "RECAPTCHA",
RISK_CHECK = "RISK_CHECK",
SAME_DAY_MICRODEPOSIT_AUTHORIZED = "SAME_DAY_MICRODEPOSIT_AUTHORIZED",
SAME_DAY_MICRODEPOSIT_VERIFICATION = "SAME_DAY_MICRODEPOSIT_VERIFICATION",
SCREENING = "SCREENING",
SELECT_ACCOUNT = "SELECT_ACCOUNT",
SELECT_AUTH_TYPE = "SELECT_AUTH_TYPE",
SELECT_BRAND = "SELECT_BRAND",
SELECT_INSTITUTION = "SELECT_INSTITUTION",
SELECT_SAVED_ACCOUNT = "SELECT_SAVED_ACCOUNT",
SELECT_SAVED_INSTITUTION = "SELECT_SAVED_INSTITUTION",
SELFIE_CHECK = "SELFIE_CHECK",
SUBMIT_DOCUMENTS = "SUBMIT_DOCUMENTS",
SUBMIT_DOCUMENTS_ERROR = "SUBMIT_DOCUMENTS_ERROR",
SUBMIT_DOCUMENTS_SUCCESS = "SUBMIT_DOCUMENTS_SUCCESS",
SUBMIT_EMAIL = "SUBMIT_EMAIL",
SUBMIT_PHONE = "SUBMIT_PHONE",
TRANSFER_STATUS_CHECK = "TRANSFER_STATUS_CHECK",
UPLOAD_DOCUMENTS = "UPLOAD_DOCUMENTS",
VERIFY_EMAIL = "VERIFY_EMAIL",
VERIFY_PHONE = "VERIFY_PHONE",
VERIFY_SMS = "VERIFY_SMS",
}
/// Methods to present Link on iOS.
/// FULL_SCREEN is the converts to UIModalPresentationOverFullScreen on the native side.
/// MODAL will use the default presentation style for iOS which is UIModalPresentationAutomatic.
export enum LinkIOSPresentationStyle {
FULL_SCREEN = "FULL_SCREEN",
MODAL = "MODAL",
}
export type ReactNativePlaidLinkSdkModuleEvents = {
"PlaidLink.onSuccess": (success: LinkSuccess) => void;
"PlaidLink.onExit": (exit: LinkExit) => void;
"PlaidLink.onEvent": (event: LinkEvent) => void;
};
export type LinkSuccessListener = (LinkSuccess: LinkSuccess) => void;
export type LinkExitListener = (LinkExit: LinkExit) => void;
export type LinkOnEventListener = (LinkEvent: LinkEvent) => void;
export interface LinkTokenConfiguration {
/** The link-token your server retrieved from the /link/token/create endpoint. */
token: string;
/** Called when a user has successfully onboarded an Item. */
onSuccess: LinkSuccessListener;
/** Called when a user has specifically exited the Link flow. */
onExit: LinkExitListener;
/** Called when the user has reached certain points in the Link flow. */
onEvent: LinkOnEventListener;
/**
* Called when Plaid Link has finished loading and is ready to be presented.
* Use this to automatically open Link or enable UI elements that depend on
* Link being fully initialized.
*/
onLoad?: () => void;
}
export interface LayerTokenConfiguration {
/** The link-token your server retrieved from the /link/token/create endpoint. */
token: string;
/** Called when a user has successfully onboarded an Item. */
onSuccess: LinkSuccessListener;
/** Called when a user has specifically exited the Layer flow. */
onExit: LinkExitListener;
/** Called when the user has reached certain points in the Layer flow. */
onEvent: LinkOnEventListener;
}
export interface EmbeddedLinkTokenConfiguration {
/** The link-token your server retrieved from the /link/token/create endpoint. */
token: string;
/** Called when a user has successfully onboarded an Item. */
onSuccess: LinkSuccessListener;
/** Called when a user has specifically exited the Embedded Link flow. */
onExit?: LinkExitListener;
/** Called when the user has reached certain points in the Embedded Link flow. */
onEvent?: LinkOnEventListener;
}
export interface PlaidLinkSession {
open: (fullScreen?: boolean) => Promise<void>;
}
export interface SubmissionData {
phoneNumber?: string;
dateOfBirth?: string;
params?: Record<string, string>;
}
export interface PlaidLayerSession {
open: () => Promise<void>;
submit: (data: SubmissionData) => Promise<void>;
}
export interface PlaidHeadlessSession {
start: () => Promise<void>;
}
export enum FinanceKitSyncBehavior {
LIVE = 0,
SIMULATED = 1,
}
export enum FinanceKitErrorType {
InvalidToken = 0,
PermissionError = 1,
LinkApiError = 2,
PermissionAccessError = 3,
Unknown = 4,
}
interface InvalidTokenError {
type: FinanceKitErrorType.InvalidToken;
message: string;
}
interface PermissionError {
type: FinanceKitErrorType.PermissionError;
message: string;
}
interface LinkApiError {
type: FinanceKitErrorType.LinkApiError;
message: string;
}
interface PermissionAccessError {
type: FinanceKitErrorType.PermissionAccessError;
message: string;
}
interface UnknownError {
type: FinanceKitErrorType.Unknown;
message: string;
}
export type FinanceKitError =
| InvalidTokenError
| PermissionError
| LinkApiError
| PermissionAccessError
| UnknownError;