{ "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://raw.githubusercontent.com/api-evangelist/plaid/main/json-schema/plaid-beta-partner-customer-v1-create-request-schema.json", "title": "BetaPartnerCustomerV1CreateRequest", "description": "Request schema for `/beta/partner/customer/v1/create`.", "x-generated": "2026-09-23", "x-method": "derived", "x-generator": "derive-json-schema.py", "x-source": "openapi/plaid-plaid-api-openapi.yml#/components/schemas/BetaPartnerCustomerV1CreateRequest", "properties": { "client_id": { "$ref": "#/$defs/APIClientID" }, "secret": { "$ref": "#/$defs/APISecret" }, "company_name": { "description": "The company name of the end customer being created. This will be used to display the end customer in the Plaid Dashboard. It will not be shown to end users.", "type": "string" }, "is_diligence_attested": { "description": "Denotes whether or not the partner has completed attestation of diligence for the end customer to be created.", "type": "boolean" }, "products": { "description": "The products to be enabled for the end customer. If empty or `null`, this field will default to the products enabled for the reseller at the time this endpoint is called.", "type": "array", "items": { "$ref": "#/$defs/Products" } }, "create_link_customization": { "description": "If `true`, the end customer's default Link customization will be set to match the partner's. You can always change the end customer's Link customization in the Plaid Dashboard. See the [Link Customization docs](https://plaid.com/docs/link/customization/) for more information. If you require the ability to programmatically create end customers using multiple different Link customization profiles, contact your Plaid account manager for assistance.\n\nImportant: Data Transparency Messaging (DTM) use cases will not be copied to the end customer's Link customization unless the **Publish changes** button is clicked after the use cases are applied. Link will not work in Production unless the end customer's DTM use cases are configured. For more details, see [Data Transparency Messaging](https://plaid.com/docs/link/data-transparency-messaging-migration-guide/).", "type": "boolean" }, "logo": { "description": "Base64-encoded representation of the end customer's logo. Must be a PNG of size 1024x1024 under 4MB. The logo will be shared with financial institutions and shown to the end user during Link flows. A logo is required if `create_link_customization` is `true`. If `create_link_customization` is `false` and the logo is omitted, the partner's logo will be used if one exists, otherwise a stock logo will be used.", "type": "string" }, "legal_entity_name": { "description": "The end customer's legal name. This will be shared with financial institutions as part of the OAuth registration process. It will not be shown to end users.", "type": "string" }, "website": { "description": "The end customer's website.", "type": "string" }, "application_name": { "description": "The name of the end customer's application. This will be shown to end users when they go through the Plaid Link flow. The application name must be unique and cannot match the name of another application already registered with Plaid.", "type": "string" }, "technical_contact": { "$ref": "#/$defs/PartnerEndCustomerTechnicalContact" }, "billing_contact": { "$ref": "#/$defs/PartnerEndCustomerBillingContact" }, "customer_support_info": { "$ref": "#/$defs/PartnerEndCustomerCustomerSupportInfo" }, "address": { "$ref": "#/$defs/PartnerEndCustomerAddress" }, "redirect_uris": { "description": "A list of URIs indicating the destination(s) where a user can be forwarded after completing the Link flow; used to support OAuth authentication flows when launching Link in the browser or another app. URIs should not contain any query parameters. When used in Production, URIs must use https. To modify redirect URIs for an end customer after creating them, go to the end customer's [API page](https://dashboard.plaid.com/team/api) in the Dashboard.", "type": "array", "items": { "type": "string" } }, "bank_addendum_acceptance": { "$ref": "#/$defs/PartnerEndCustomerBankAddendumAcceptance" }, "questionnaires": { "$ref": "#/$defs/PartnerEndCustomerQuestionnaires" } }, "required": [ "company_name", "website", "application_name", "address", "customer_support_info" ], "$defs": { "APIClientID": { "title": "ClientID", "type": "string", "description": "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header or as part of a request body." }, "APISecret": { "title": "APISecret", "type": "string", "description": "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part of a request body." }, "PartnerEndCustomerAddress": { "description": "The end customer's address.", "type": "object", "additionalProperties": true, "properties": { "city": { "type": "string" }, "street": { "type": "string" }, "region": { "type": "string" }, "postal_code": { "type": "string" }, "country_code": { "description": "ISO-3166-1 alpha-2 country code standard.", "type": "string" } } }, "PartnerEndCustomerBankAddendumAcceptance": { "description": "The bank addendum acceptance for the end customer.", "type": "object", "additionalProperties": true, "properties": { "customer_accepted": { "type": "boolean", "description": "Denotes whether the end customer has accepted the bank addendum terms." }, "customer_ip_address": { "type": "string", "description": "The IP address of the end customer when they accepted the bank addendum." }, "customer_agreement_timestamp": { "type": "string", "format": "date-time", "description": "The timestamp of when the end customer accepted the bank addendum in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format (`YYYY-MM-DDTHH:mm:ssZ`)." } } }, "PartnerEndCustomerBillingContact": { "description": "The billing contact for the end customer. Defaults to partner's billing contact if omitted.", "type": "object", "additionalProperties": true, "properties": { "given_name": { "type": "string" }, "family_name": { "type": "string" }, "email": { "type": "string" } } }, "PartnerEndCustomerCRAPurposes": { "description": "A map of permissible purposes to their corresponding use cases.", "type": "object", "additionalProperties": true, "properties": { "WRITTEN_INSTRUCTION": { "$ref": "#/$defs/PartnerEndCustomerCRAUseCases" }, "EXTENSION_OF_CREDIT_OR_ACCOUNT_REVIEW": { "$ref": "#/$defs/PartnerEndCustomerCRAUseCases" }, "EMPLOYMENT": { "$ref": "#/$defs/PartnerEndCustomerCRAUseCases" }, "INSURANCE_UNDERWRITING": { "$ref": "#/$defs/PartnerEndCustomerCRAUseCases" }, "LICENSE_ELIGIBILITY": { "$ref": "#/$defs/PartnerEndCustomerCRAUseCases" }, "RISK_ASSESSMENT": { "$ref": "#/$defs/PartnerEndCustomerCRAUseCases" }, "BUSINESS_NEED_TRANSACTION": { "$ref": "#/$defs/PartnerEndCustomerCRAUseCases" }, "BUSINESS_NEED_ACCOUNT_REVIEW": { "$ref": "#/$defs/PartnerEndCustomerCRAUseCases" } } }, "PartnerEndCustomerCRAQuestionnaire": { "description": "The CRA questionnaire for the end customer.", "type": "object", "additionalProperties": true, "properties": { "purposes": { "$ref": "#/$defs/PartnerEndCustomerCRAPurposes" }, "is_third_party_involved": { "type": "boolean", "description": "Denotes whether the third party is involved." }, "is_technical_service_provider_involved": { "type": "boolean", "description": "Denotes whether the technical service provider is involved." } } }, "PartnerEndCustomerCRAUseCase": { "description": "A CRA use case under a permissible purpose.", "type": "string", "enum": [ "CREDIT_UNDERWRITING", "TENANT_SCREENING", "INVESTOR_OR_SERVICER_OF_CREDIT", "UTILITIES", "BANK_ACCOUNT_OPENING", "IDENTITY_VERIFICATION_FRAUD_PREVENTION", "COLLECTIONS_DEBT_RECOVERY" ] }, "PartnerEndCustomerCRAUseCases": { "description": "The list of use cases associated with a given permissible purpose.", "type": "object", "properties": { "use_cases": { "type": "array", "description": "List of use cases for the given permissible purpose.", "items": { "$ref": "#/$defs/PartnerEndCustomerCRAUseCase" } } } }, "PartnerEndCustomerCustomerSupportInfo": { "description": "This information is public. Users of your app will see this information when managing connections between your app and their bank accounts in Plaid Portal. Defaults to partner's customer support info if omitted. This field is mandatory for partners whose Plaid accounts were created after November 26, 2024 and will be mandatory for all partners by the 1033 compliance deadline.", "type": "object", "additionalProperties": true, "properties": { "email": { "type": "string", "description": "This field is mandatory for partners whose Plaid accounts were created after November 26, 2024 and will be mandatory for all partners by the 1033 compliance deadline." }, "phone_number": { "type": "string" }, "contact_url": { "type": "string" }, "link_update_url": { "type": "string" } } }, "PartnerEndCustomerQuestionnaires": { "description": "The questionnaires for the end customer.", "type": "object", "additionalProperties": true, "properties": { "cra": { "$ref": "#/$defs/PartnerEndCustomerCRAQuestionnaire" } } }, "PartnerEndCustomerTechnicalContact": { "description": "The technical contact for the end customer. Defaults to partner's technical contact if omitted.", "type": "object", "additionalProperties": true, "properties": { "given_name": { "type": "string" }, "family_name": { "type": "string" }, "email": { "type": "string" } } }, "Products": { "title": "Products", "enum": [ "assets", "auth", "balance", "balance_plus", "beacon", "identity", "identity_match", "investments", "investments_auth", "liabilities", "payment_initiation", "identity_verification", "transactions", "credit_details", "income", "income_verification", "standing_orders", "transfer", "employment", "recurring_transactions", "transactions_refresh", "signal", "statements", "processor_payments", "processor_identity", "profile", "cra_base_report", "cra_income_insights", "cra_partner_insights", "cra_network_insights", "cra_cashflow_insights", "cra_monitoring", "cra_lend_score", "cra_plaid_credit_score", "cra_qualify", "cra_home_lending", "layer", "pay_by_bank", "protect_linked_bank", "protect_transactions" ], "description": "A list of products that an institution can support. All Items must be initialized with at least one product. The Balance product is always available and does not need to be specified during initialization.", "type": "string" } } }