---
title: "Create a customization template"
method: POST
path: "/v1/templates/"
tags: ["Customization Templates"]
---

# Create a customization template

`POST /v1/templates/`

The endpoint creates a customization template.

## Request body

- CustomizationTemplateRequestCreate
  - `name` string, required — Template name
  - `products` string[], required — Products list this template applies to
  - `default_for_products` boolean — If enabled, the template will be applied for the products by default
  - `bridge` CustomizationTemplateBridge — Settings for bridge
    - `texts` CustomizationBridgeTexts
      - `search_header` string, nullable — Search screen header text
      - `success_title` string, nullable — Success screen title
      - `success_subtitle` string, nullable — Success screen subtitle
      - `success_cta` string, nullable — Success button label
    - `hide_truv_logo` boolean — Hide the Truv logo
    - `hide_support_button` boolean — Hide the support button
    - `product_settings` CustomizationBridgeProductsConfig[] — List of product types configurations
      - `product_type` 'income' | 'employment' | 'deposit_switch' | 'pll' | 'insurance' | 'transactions' | 'assets', required — Product type
      - `data_source` 'payroll' | 'docs' | 'insurance' | 'financial_accounts' | 'tax' — Data source
      - `texts` CustomizationBridgeTexts
        - `search_header` string, nullable — Search screen header text
        - `success_title` string, nullable — Success screen title
        - `success_subtitle` string, nullable — Success screen subtitle
        - `success_cta` string, nullable — Success button label
  - `branding` CustomizationTemplateBranding — Settings for branding
    - `company_name` string, nullable — Client name
    - `accent_color` string, nullable — Main color
    - `background_color` string, nullable — Background color
    - `logo` string, uri, nullable — Company logo image.
    - `hide_confetti` boolean — Option to hide confetti on the success screen
    - `custom_end_user_agreement` CustomizationTemplateAgreement
      - `header` string, nullable — End-user agreement or privacy policy label
      - `url` string, uri, nullable — End-user agreement or privacy policy URL
  - `orders` CustomizationTemplateOrders — Settings for orders
    - `link_expiration` '24' | '48' | '72' | '120' | '240' | '336' | '360' | '480' | '1440' | 'null', nullable — Expiration of the link to the landing page
    - `auto_open` 'income' | 'assets' | 'insurance' | 'disabled' | 'null', nullable — Product name to auto-open in the widget for order-based flows, or 'disabled' to always suppress auto-open
    - `custom_field_title` string, nullable — Custom field title
    - `support_email` string, email, nullable — Email address for customer support
    - `auto_complete_after_hours` integer, nullable — Hours to wait after a successful data collection before automatically completing the order. Defaults to 24. Applies only when `skip_behavior` has at least one product set to `expire`.
    - `skip_behavior` object, nullable — Per-product skip behavior applied to orders using this template. Keys must be in this template's products list. Values: - `disabled`: product is required. - `all`: skip is allowed only after the user has tried every data provider for this product in the order. - `any`: skip is allowed after the user has tried at least one data provider for this product in the order. - `expire`: same as `any`, plus the order is auto-completed after `auto_complete_after_hours`.
    - `allow_additional_connections` string[], nullable — Product types for which an end user can add more than one connection in a single order. Overrides the account-level default. Omit or set to null to inherit the default; pass `[]` to disallow all additional connections; pass a subset of the template's products to allow only those.
    - `notification_settings` object — Configuration for order notifications applied to orders created with this template.
      - `suppress_user_notifications` boolean, nullable — When true, suppresses all user-facing notifications. If enabled, first_notification_delay_hours is ignored.
      - `first_notification_delay_hours` integer, nullable — Number of hours to delay the first notification. Default is 0 (immediate). Ignored when suppress_user_notifications is true.
    - `first_sms` CustomizationTemplateFirstSMS
      - `text` string, nullable — SMS text message
      - `apply_for_reminder` boolean — If enabled, the first SMS text message will also be used as the reminder
    - `reminder_sms` CustomizationTemplateReminderSMS
      - `text` string, nullable — SMS text message
    - `first_email` CustomizationTemplateFirstEmail
      - `title` string, nullable — Title of the email
      - `subject` string, nullable — Subject line of the email
      - `header` string, nullable — Main header content of the email
      - `button` string, nullable — Text within the call-to-action button
      - `caption` string, nullable — Small text below the call-to-action button
      - `apply_for_reminder` boolean — If enabled, the first email fields will also be used as the reminder email fields
    - `reminder_email` CustomizationTemplateReminderEmail
      - `title` string, nullable — Title of the email
      - `subject` string, nullable — Subject line of the email
      - `header` string, nullable — Main header content of the email
      - `button` string, nullable — Text within the call-to-action button
      - `caption` string, nullable — Small text below the call-to-action button
    - `refresh_first_sms` CustomizationTemplateFirstSMS
      - `text` string, nullable — SMS text message
      - `apply_for_reminder` boolean — If enabled, the first SMS text message will also be used as the reminder
    - `refresh_reminder_sms` CustomizationTemplateReminderSMS
      - `text` string, nullable — SMS text message
    - `refresh_first_email` CustomizationTemplateFirstEmail
      - `title` string, nullable — Title of the email
      - `subject` string, nullable — Subject line of the email
      - `header` string, nullable — Main header content of the email
      - `button` string, nullable — Text within the call-to-action button
      - `caption` string, nullable — Small text below the call-to-action button
      - `apply_for_reminder` boolean — If enabled, the first email fields will also be used as the reminder email fields
    - `refresh_reminder_email` CustomizationTemplateReminderEmail
      - `title` string, nullable — Title of the email
      - `subject` string, nullable — Subject line of the email
      - `header` string, nullable — Main header content of the email
      - `button` string, nullable — Text within the call-to-action button
      - `caption` string, nullable — Small text below the call-to-action button
    - `first_call` CustomizationTemplateFirstCall
      - `text` string, nullable — Text message that will be spelled out during an automated phone call. The message should be composed of alphanumeric characters and standard punctuation.
      - `delay_seconds` integer, nullable — Delay in seconds after the order is placed.
      - `apply_for_reminder` boolean — Flag that determines whether the associated text message should be utilized in automated reminder phone calls
    - `reminder_call` CustomizationTemplateReminderCall
      - `text` string, nullable — Call text
      - `delay_seconds` integer, nullable — Call delay in seconds
    - `landing` CustomizationTemplateLanding
      - `header` string, nullable — Title header text
      - `body` string, nullable — Body text
      - `hide_faq` boolean — If enabled, FAQ will be suppressed on the Landing page
      - `success_screen` CustomizationTemplateScreen
        - `header` string, nullable — Title header text
        - `body` string, nullable — Body text
      - `expired_screen` CustomizationTemplateScreen
        - `header` string, nullable — Title header text
        - `body` string, nullable — Body text
    - `bank_info` CustomizationTemplateBankInfo
      - `bank_name` string, nullable
    - `self_certification` CustomizationTemplateSelfCertification — Settings for the self-certification page
      - `main_header` string, nullable — Main header text. Use {first_name} and {last_name} as placeholders
      - `main_body` string, nullable — Main body text
      - `deposits_header` string, nullable — Deposits section header text
      - `deposits_body` string, nullable — Deposits section body text
      - `community_engagement` CustomizationTemplateCommunityEngagement
        - `enabled` boolean — If enabled, community engagement section will be shown
        - `text` string, nullable — Community engagement text. Use {total_hours} to display the sum of hours
      - `non_certifiable_income` CustomizationTemplateNonCertifiableIncome
        - `enabled` boolean — If enabled, non-certifiable income sources section will be shown
        - `header` string, nullable — Header displayed for non-certifiable income sources
        - `text` string, nullable — Text displayed for non-certifiable income sources
      - `caption` string, nullable — Small text below the action button
      - `button` string, nullable — Text within the action button
      - `certification_mode` 'financial_accounts' | 'bank_income' | 'null', nullable — Certification mode for the self-certification page.
    - `employment_duration_requirement` EmploymentDurationRequirement, nullable
      - `enabled` boolean — Whether the employment duration requirement is active
      - `minimum_duration` object, nullable — Minimum cumulative employment duration
        - `value` integer, required
        - `unit` 'years' | 'months' | 'days', required
      - `warning_header` string, nullable — Header text shown when employment duration is below the minimum
      - `warning_body` string, nullable — Body text shown when employment duration is below the minimum
  - `document_upload` CustomizationTemplateDocumentUpload — Settings for document upload. When the `other` document type is enabled, end users can upload arbitrary documents that don't fit the other categories. Truv does not parse these documents into structured data (they are captured only) — you can collect the uploaded files through the Uploaded Documents API (`GET /v1/links/{link_id}/documents/`).
    - `is_enabled` boolean, nullable — If document upload is enabled for the template or not. Set to null - for global settings. If set to true document types should be enabled in the template explicitly.
    - `freddie_aim_check` CustomizationTemplateDocumentUploadFreddieAimCheck — Freddie Mac AIM check settings for this template. Each value takes priority over the account-level setting; null falls back to it.
      - `is_enabled` boolean, nullable — Enable Freddie Mac AIM check document upload for this template.
      - `seller_id` string, nullable — Freddie Mac seller ID used for the AIM check.
    - `paystub` CustomizationTemplateDocumentUploadConfig
      - `is_enabled` boolean — If the document type is enabled
      - `is_required` boolean — If the document type is required
      - `title` string, nullable — Title on the first document upload screen
      - `description` string, nullable — Description on the first document upload screen
      - `button` string, nullable — Text on the upload button
      - `submit_title` string, nullable — Title on the submit screen
      - `min_count` integer, nullable — Minimum required number of uploaded documents
      - `max_count` integer, nullable — Maximum required number of uploaded documents
    - `w2` CustomizationTemplateDocumentUploadConfig
      - `is_enabled` boolean — If the document type is enabled
      - `is_required` boolean — If the document type is required
      - `title` string, nullable — Title on the first document upload screen
      - `description` string, nullable — Description on the first document upload screen
      - `button` string, nullable — Text on the upload button
      - `submit_title` string, nullable — Title on the submit screen
      - `min_count` integer, nullable — Minimum required number of uploaded documents
      - `max_count` integer, nullable — Maximum required number of uploaded documents
    - `f1099` CustomizationTemplateDocumentUploadConfig
      - `is_enabled` boolean — If the document type is enabled
      - `is_required` boolean — If the document type is required
      - `title` string, nullable — Title on the first document upload screen
      - `description` string, nullable — Description on the first document upload screen
      - `button` string, nullable — Text on the upload button
      - `submit_title` string, nullable — Title on the submit screen
      - `min_count` integer, nullable — Minimum required number of uploaded documents
      - `max_count` integer, nullable — Maximum required number of uploaded documents
    - `f1040` CustomizationTemplateDocumentUploadConfig
      - `is_enabled` boolean — If the document type is enabled
      - `is_required` boolean — If the document type is required
      - `title` string, nullable — Title on the first document upload screen
      - `description` string, nullable — Description on the first document upload screen
      - `button` string, nullable — Text on the upload button
      - `submit_title` string, nullable — Title on the submit screen
      - `min_count` integer, nullable — Minimum required number of uploaded documents
      - `max_count` integer, nullable — Maximum required number of uploaded documents
    - `insurance_home_policy` CustomizationTemplateDocumentUploadConfig
      - `is_enabled` boolean — If the document type is enabled
      - `is_required` boolean — If the document type is required
      - `title` string, nullable — Title on the first document upload screen
      - `description` string, nullable — Description on the first document upload screen
      - `button` string, nullable — Text on the upload button
      - `submit_title` string, nullable — Title on the submit screen
      - `min_count` integer, nullable — Minimum required number of uploaded documents
      - `max_count` integer, nullable — Maximum required number of uploaded documents
    - `insurance_auto_policy` CustomizationTemplateDocumentUploadConfig
      - `is_enabled` boolean — If the document type is enabled
      - `is_required` boolean — If the document type is required
      - `title` string, nullable — Title on the first document upload screen
      - `description` string, nullable — Description on the first document upload screen
      - `button` string, nullable — Text on the upload button
      - `submit_title` string, nullable — Title on the submit screen
      - `min_count` integer, nullable — Minimum required number of uploaded documents
      - `max_count` integer, nullable — Maximum required number of uploaded documents
    - `volunteer_letter` CustomizationTemplateDocumentUploadConfig
      - `is_enabled` boolean — If the document type is enabled
      - `is_required` boolean — If the document type is required
      - `title` string, nullable — Title on the first document upload screen
      - `description` string, nullable — Description on the first document upload screen
      - `button` string, nullable — Text on the upload button
      - `submit_title` string, nullable — Title on the submit screen
      - `min_count` integer, nullable — Minimum required number of uploaded documents
      - `max_count` integer, nullable — Maximum required number of uploaded documents
    - `other` CustomizationTemplateDocumentUploadConfig
      - `is_enabled` boolean — If the document type is enabled
      - `is_required` boolean — If the document type is required
      - `title` string, nullable — Title on the first document upload screen
      - `description` string, nullable — Description on the first document upload screen
      - `button` string, nullable — Text on the upload button
      - `submit_title` string, nullable — Title on the submit screen
      - `min_count` integer, nullable — Minimum required number of uploaded documents
      - `max_count` integer, nullable — Maximum required number of uploaded documents
  - `data` CustomizationTemplateReturnedDocuments, nullable — Settings for returned documents data
    - `paystubs_count` integer, nullable — The number of most recent paystubs to include in the response. Specify the desired count of paystubs to be returned.
    - `w2_count` integer, nullable — The number of most recent W2 forms to include in the response. Specify the desired count of W2 forms to be returned.
    - `paystubs_ytd_count` integer, nullable — The number of most recent year-to-date paystubs to include in the response. Specify the desired count of year-to-date paystubs to be returned.
    - `extended_history` CustomizationTemplateExtendedHistory — Settings for extended data collection
      - `statements_history_days` integer, nullable — The number of days of paystub history to fetch from the payroll source.
    - `bank_statements_count` integer, nullable — The number of most recent bank statements to include in the response per account. Set to 0 to disable; leave null to fall back to the account-level setting. Applies only to bank account connections; the provider may return fewer statements, or none. Note - enabling this feature incurs an additional fee.
  - `reports` CustomizationTemplateReportSettings, nullable — Settings for reports
    - `hidden_sections` CustomizationTemplateHiddenSections — Sections to hide in PDF reports
      - `deposits` boolean — Hide Deposits in VOIE reports
      - `large_deposits` boolean — Hide Large Deposits in VOA reports
      - `historical_payment_summary` boolean — Hide Historical Pay Summary
    - `days_requested` integer, nullable — The specific duration in days for which the VOA report is requested to be generated. If not specified, returns the default value.
    - `large_deposit_threshold` integer, nullable — Amount that must be met or exceeded for deposits to be marked as large for VOA reports. If not specified, returns the default value.
    - `transaction_categories` string[], nullable — List of transaction categories to include in VOA/DVOE reports. Only transactions with at least one matching category will be shown. If not specified or empty, all transactions are included. Applies to VOA JSON, VOA PDF, and DVOE PDF reports only.
    - `transaction_account_types` string[], nullable — List of account types to include in VOA/DVOE reports. Only transactions from accounts matching these types will be shown. If not specified or empty, all account types are included. Applies to VOA JSON, VOA PDF, and DVOE PDF reports only.
    - `transaction_account_subtypes` string[], nullable — List of account subtypes to include in VOA/DVOE reports. Only transactions from accounts matching these subtypes will be shown. If not specified or empty, all account subtypes are included. Applies to VOA JSON, VOA PDF, and DVOE PDF reports only.
    - `income_insights` CustomizationTemplateIncomeInsights — Default parameters for income insights reports
      - `days_requested` integer, nullable — The specific duration in days for which an income insights report is requested to be generated.
      - `consumer_report_permissible_purpose` 'ACCOUNT_REVIEW_CREDIT' | 'ACCOUNT_REVIEW_NON_CREDIT' | 'EMPLOYMENT' | 'EXTENSION_OF_CREDIT' | 'LEGITIMATE_BUSINESS_NEED_TENANT_SCREENING' | 'LEGITIMATE_BUSINESS_NEED_OTHER' | 'WRITTEN_INSTRUCTION_PREQUALIFICATION' | 'WRITTEN_INSTRUCTION_OTHER' | 'null', nullable — Describes the reason you are generating an income insights report.
    - `labeled_transaction_categories` string[], nullable — List of transaction categories that will have colored labels in VOA reports. Only selected categories will display colored badge labels. If not specified or empty, all categories are labeled.
  - `data_sources_flow` CustomizationTemplateDataSourcesFlow — Data sources and flow configuration per product type. Supported product keys: employment, income, insurance.
    - `employment` CustomizationTemplateDataSourcesFlowEmployment
      - `flow` 'fallback' | 'waterfall' | 'smart_routing' | 'manual_selection' — Specifies the presentation order and fallback behavior for multiple data sources in the widget.
      - `data_sources` string[] — Data sources to use for this product type, in the order they are attempted.
    - `income` CustomizationTemplateDataSourcesFlowIncome
      - `flow` 'fallback' | 'waterfall' | 'smart_routing' | 'manual_selection' — Specifies the presentation order and fallback behavior for multiple data sources in the widget.
      - `data_sources` string[] — Data sources to use for this product type, in the order they are attempted.
    - `insurance` CustomizationTemplateDataSourcesFlowInsurance
      - `flow` 'fallback' | 'waterfall' | 'smart_routing' | 'manual_selection' — Specifies the presentation order and fallback behavior for multiple data sources in the widget.
      - `data_sources` string[] — Data sources to use for this product type, in the order they are attempted.

## Response `201`

- CustomizationTemplate
  - `id` string, required — Unique identifier of the template.
  - `name` string, required — Template name
  - `products` string[], required — Products list this template applies to
  - `default_for_products` boolean, required — If enabled, the template will be applied for the products by default
  - `bridge` CustomizationTemplateBridge — Settings for bridge
    - `texts` CustomizationBridgeTexts
      - `search_header` string, nullable — Search screen header text
      - `success_title` string, nullable — Success screen title
      - `success_subtitle` string, nullable — Success screen subtitle
      - `success_cta` string, nullable — Success button label
    - `hide_truv_logo` boolean — Hide the Truv logo
    - `hide_support_button` boolean — Hide the support button
    - `product_settings` CustomizationBridgeProductsConfig[] — List of product types configurations
      - `product_type` 'income' | 'employment' | 'deposit_switch' | 'pll' | 'insurance' | 'transactions' | 'assets', required — Product type
      - `data_source` 'payroll' | 'docs' | 'insurance' | 'financial_accounts' | 'tax' — Data source
      - `texts` CustomizationBridgeTexts
        - `search_header` string, nullable — Search screen header text
        - `success_title` string, nullable — Success screen title
        - `success_subtitle` string, nullable — Success screen subtitle
        - `success_cta` string, nullable — Success button label
  - `branding` CustomizationTemplateBranding — Settings for branding
    - `company_name` string, nullable — Client name
    - `accent_color` string, nullable — Main color
    - `background_color` string, nullable — Background color
    - `logo` string, uri, nullable — Company logo image.
    - `hide_confetti` boolean — Option to hide confetti on the success screen
    - `custom_end_user_agreement` CustomizationTemplateAgreement
      - `header` string, nullable — End-user agreement or privacy policy label
      - `url` string, uri, nullable — End-user agreement or privacy policy URL
  - `orders` CustomizationTemplateOrders — Settings for orders
    - `link_expiration` '24' | '48' | '72' | '120' | '240' | '336' | '360' | '480' | '1440' | 'null', nullable — Expiration of the link to the landing page
    - `auto_open` 'income' | 'assets' | 'insurance' | 'disabled' | 'null', nullable — Product name to auto-open in the widget for order-based flows, or 'disabled' to always suppress auto-open
    - `custom_field_title` string, nullable — Custom field title
    - `support_email` string, email, nullable — Email address for customer support
    - `auto_complete_after_hours` integer, nullable — Hours to wait after a successful data collection before automatically completing the order. Defaults to 24. Applies only when `skip_behavior` has at least one product set to `expire`.
    - `skip_behavior` object, nullable — Per-product skip behavior applied to orders using this template. Keys must be in this template's products list. Values: - `disabled`: product is required. - `all`: skip is allowed only after the user has tried every data provider for this product in the order. - `any`: skip is allowed after the user has tried at least one data provider for this product in the order. - `expire`: same as `any`, plus the order is auto-completed after `auto_complete_after_hours`.
    - `allow_additional_connections` string[], nullable — Product types for which an end user can add more than one connection in a single order. Overrides the account-level default. Omit or set to null to inherit the default; pass `[]` to disallow all additional connections; pass a subset of the template's products to allow only those.
    - `notification_settings` object — Configuration for order notifications applied to orders created with this template.
      - `suppress_user_notifications` boolean, nullable — When true, suppresses all user-facing notifications. If enabled, first_notification_delay_hours is ignored.
      - `first_notification_delay_hours` integer, nullable — Number of hours to delay the first notification. Default is 0 (immediate). Ignored when suppress_user_notifications is true.
    - `first_sms` CustomizationTemplateFirstSMS
      - `text` string, nullable — SMS text message
      - `apply_for_reminder` boolean — If enabled, the first SMS text message will also be used as the reminder
    - `reminder_sms` CustomizationTemplateReminderSMS
      - `text` string, nullable — SMS text message
    - `first_email` CustomizationTemplateFirstEmail
      - `title` string, nullable — Title of the email
      - `subject` string, nullable — Subject line of the email
      - `header` string, nullable — Main header content of the email
      - `button` string, nullable — Text within the call-to-action button
      - `caption` string, nullable — Small text below the call-to-action button
      - `apply_for_reminder` boolean — If enabled, the first email fields will also be used as the reminder email fields
    - `reminder_email` CustomizationTemplateReminderEmail
      - `title` string, nullable — Title of the email
      - `subject` string, nullable — Subject line of the email
      - `header` string, nullable — Main header content of the email
      - `button` string, nullable — Text within the call-to-action button
      - `caption` string, nullable — Small text below the call-to-action button
    - `refresh_first_sms` CustomizationTemplateFirstSMS
      - `text` string, nullable — SMS text message
      - `apply_for_reminder` boolean — If enabled, the first SMS text message will also be used as the reminder
    - `refresh_reminder_sms` CustomizationTemplateReminderSMS
      - `text` string, nullable — SMS text message
    - `refresh_first_email` CustomizationTemplateFirstEmail
      - `title` string, nullable — Title of the email
      - `subject` string, nullable — Subject line of the email
      - `header` string, nullable — Main header content of the email
      - `button` string, nullable — Text within the call-to-action button
      - `caption` string, nullable — Small text below the call-to-action button
      - `apply_for_reminder` boolean — If enabled, the first email fields will also be used as the reminder email fields
    - `refresh_reminder_email` CustomizationTemplateReminderEmail
      - `title` string, nullable — Title of the email
      - `subject` string, nullable — Subject line of the email
      - `header` string, nullable — Main header content of the email
      - `button` string, nullable — Text within the call-to-action button
      - `caption` string, nullable — Small text below the call-to-action button
    - `first_call` CustomizationTemplateFirstCall
      - `text` string, nullable — Text message that will be spelled out during an automated phone call. The message should be composed of alphanumeric characters and standard punctuation.
      - `delay_seconds` integer, nullable — Delay in seconds after the order is placed.
      - `apply_for_reminder` boolean — Flag that determines whether the associated text message should be utilized in automated reminder phone calls
    - `reminder_call` CustomizationTemplateReminderCall
      - `text` string, nullable — Call text
      - `delay_seconds` integer, nullable — Call delay in seconds
    - `landing` CustomizationTemplateLanding
      - `header` string, nullable — Title header text
      - `body` string, nullable — Body text
      - `hide_faq` boolean — If enabled, FAQ will be suppressed on the Landing page
      - `success_screen` CustomizationTemplateScreen
        - `header` string, nullable — Title header text
        - `body` string, nullable — Body text
      - `expired_screen` CustomizationTemplateScreen
        - `header` string, nullable — Title header text
        - `body` string, nullable — Body text
    - `bank_info` CustomizationTemplateBankInfo
      - `bank_name` string, nullable
    - `self_certification` CustomizationTemplateSelfCertification — Settings for the self-certification page
      - `main_header` string, nullable — Main header text. Use {first_name} and {last_name} as placeholders
      - `main_body` string, nullable — Main body text
      - `deposits_header` string, nullable — Deposits section header text
      - `deposits_body` string, nullable — Deposits section body text
      - `community_engagement` CustomizationTemplateCommunityEngagement
        - `enabled` boolean — If enabled, community engagement section will be shown
        - `text` string, nullable — Community engagement text. Use {total_hours} to display the sum of hours
      - `non_certifiable_income` CustomizationTemplateNonCertifiableIncome
        - `enabled` boolean — If enabled, non-certifiable income sources section will be shown
        - `header` string, nullable — Header displayed for non-certifiable income sources
        - `text` string, nullable — Text displayed for non-certifiable income sources
      - `caption` string, nullable — Small text below the action button
      - `button` string, nullable — Text within the action button
      - `certification_mode` 'financial_accounts' | 'bank_income' | 'null', nullable — Certification mode for the self-certification page.
    - `employment_duration_requirement` EmploymentDurationRequirement, nullable
      - `enabled` boolean — Whether the employment duration requirement is active
      - `minimum_duration` object, nullable — Minimum cumulative employment duration
        - `value` integer, required
        - `unit` 'years' | 'months' | 'days', required
      - `warning_header` string, nullable — Header text shown when employment duration is below the minimum
      - `warning_body` string, nullable — Body text shown when employment duration is below the minimum
  - `document_upload` CustomizationTemplateDocumentUpload — Settings for document upload. When the `other` document type is enabled, end users can upload arbitrary documents that don't fit the other categories. Truv does not parse these documents into structured data (they are captured only) — you can collect the uploaded files through the Uploaded Documents API (`GET /v1/links/{link_id}/documents/`).
    - `is_enabled` boolean, nullable — If document upload is enabled for the template or not. Set to null - for global settings. If set to true document types should be enabled in the template explicitly.
    - `freddie_aim_check` CustomizationTemplateDocumentUploadFreddieAimCheck — Freddie Mac AIM check settings for this template. Each value takes priority over the account-level setting; null falls back to it.
      - `is_enabled` boolean, nullable — Enable Freddie Mac AIM check document upload for this template.
      - `seller_id` string, nullable — Freddie Mac seller ID used for the AIM check.
    - `paystub` CustomizationTemplateDocumentUploadConfig
      - `is_enabled` boolean — If the document type is enabled
      - `is_required` boolean — If the document type is required
      - `title` string, nullable — Title on the first document upload screen
      - `description` string, nullable — Description on the first document upload screen
      - `button` string, nullable — Text on the upload button
      - `submit_title` string, nullable — Title on the submit screen
      - `min_count` integer, nullable — Minimum required number of uploaded documents
      - `max_count` integer, nullable — Maximum required number of uploaded documents
    - `w2` CustomizationTemplateDocumentUploadConfig
      - `is_enabled` boolean — If the document type is enabled
      - `is_required` boolean — If the document type is required
      - `title` string, nullable — Title on the first document upload screen
      - `description` string, nullable — Description on the first document upload screen
      - `button` string, nullable — Text on the upload button
      - `submit_title` string, nullable — Title on the submit screen
      - `min_count` integer, nullable — Minimum required number of uploaded documents
      - `max_count` integer, nullable — Maximum required number of uploaded documents
    - `f1099` CustomizationTemplateDocumentUploadConfig
      - `is_enabled` boolean — If the document type is enabled
      - `is_required` boolean — If the document type is required
      - `title` string, nullable — Title on the first document upload screen
      - `description` string, nullable — Description on the first document upload screen
      - `button` string, nullable — Text on the upload button
      - `submit_title` string, nullable — Title on the submit screen
      - `min_count` integer, nullable — Minimum required number of uploaded documents
      - `max_count` integer, nullable — Maximum required number of uploaded documents
    - `f1040` CustomizationTemplateDocumentUploadConfig
      - `is_enabled` boolean — If the document type is enabled
      - `is_required` boolean — If the document type is required
      - `title` string, nullable — Title on the first document upload screen
      - `description` string, nullable — Description on the first document upload screen
      - `button` string, nullable — Text on the upload button
      - `submit_title` string, nullable — Title on the submit screen
      - `min_count` integer, nullable — Minimum required number of uploaded documents
      - `max_count` integer, nullable — Maximum required number of uploaded documents
    - `insurance_home_policy` CustomizationTemplateDocumentUploadConfig
      - `is_enabled` boolean — If the document type is enabled
      - `is_required` boolean — If the document type is required
      - `title` string, nullable — Title on the first document upload screen
      - `description` string, nullable — Description on the first document upload screen
      - `button` string, nullable — Text on the upload button
      - `submit_title` string, nullable — Title on the submit screen
      - `min_count` integer, nullable — Minimum required number of uploaded documents
      - `max_count` integer, nullable — Maximum required number of uploaded documents
    - `insurance_auto_policy` CustomizationTemplateDocumentUploadConfig
      - `is_enabled` boolean — If the document type is enabled
      - `is_required` boolean — If the document type is required
      - `title` string, nullable — Title on the first document upload screen
      - `description` string, nullable — Description on the first document upload screen
      - `button` string, nullable — Text on the upload button
      - `submit_title` string, nullable — Title on the submit screen
      - `min_count` integer, nullable — Minimum required number of uploaded documents
      - `max_count` integer, nullable — Maximum required number of uploaded documents
    - `volunteer_letter` CustomizationTemplateDocumentUploadConfig
      - `is_enabled` boolean — If the document type is enabled
      - `is_required` boolean — If the document type is required
      - `title` string, nullable — Title on the first document upload screen
      - `description` string, nullable — Description on the first document upload screen
      - `button` string, nullable — Text on the upload button
      - `submit_title` string, nullable — Title on the submit screen
      - `min_count` integer, nullable — Minimum required number of uploaded documents
      - `max_count` integer, nullable — Maximum required number of uploaded documents
    - `other` CustomizationTemplateDocumentUploadConfig
      - `is_enabled` boolean — If the document type is enabled
      - `is_required` boolean — If the document type is required
      - `title` string, nullable — Title on the first document upload screen
      - `description` string, nullable — Description on the first document upload screen
      - `button` string, nullable — Text on the upload button
      - `submit_title` string, nullable — Title on the submit screen
      - `min_count` integer, nullable — Minimum required number of uploaded documents
      - `max_count` integer, nullable — Maximum required number of uploaded documents
  - `data` CustomizationTemplateReturnedDocuments, nullable — Settings for returned documents data
    - `paystubs_count` integer, nullable — The number of most recent paystubs to include in the response. Specify the desired count of paystubs to be returned.
    - `w2_count` integer, nullable — The number of most recent W2 forms to include in the response. Specify the desired count of W2 forms to be returned.
    - `paystubs_ytd_count` integer, nullable — The number of most recent year-to-date paystubs to include in the response. Specify the desired count of year-to-date paystubs to be returned.
    - `extended_history` CustomizationTemplateExtendedHistory — Settings for extended data collection
      - `statements_history_days` integer, nullable — The number of days of paystub history to fetch from the payroll source.
    - `bank_statements_count` integer, nullable — The number of most recent bank statements to include in the response per account. Set to 0 to disable; leave null to fall back to the account-level setting. Applies only to bank account connections; the provider may return fewer statements, or none. Note - enabling this feature incurs an additional fee.
  - `reports` CustomizationTemplateReportSettings, nullable — Settings for reports
    - `hidden_sections` CustomizationTemplateHiddenSections — Sections to hide in PDF reports
      - `deposits` boolean — Hide Deposits in VOIE reports
      - `large_deposits` boolean — Hide Large Deposits in VOA reports
      - `historical_payment_summary` boolean — Hide Historical Pay Summary
    - `days_requested` integer, nullable — The specific duration in days for which the VOA report is requested to be generated. If not specified, returns the default value.
    - `large_deposit_threshold` integer, nullable — Amount that must be met or exceeded for deposits to be marked as large for VOA reports. If not specified, returns the default value.
    - `transaction_categories` string[], nullable — List of transaction categories to include in VOA/DVOE reports. Only transactions with at least one matching category will be shown. If not specified or empty, all transactions are included. Applies to VOA JSON, VOA PDF, and DVOE PDF reports only.
    - `transaction_account_types` string[], nullable — List of account types to include in VOA/DVOE reports. Only transactions from accounts matching these types will be shown. If not specified or empty, all account types are included. Applies to VOA JSON, VOA PDF, and DVOE PDF reports only.
    - `transaction_account_subtypes` string[], nullable — List of account subtypes to include in VOA/DVOE reports. Only transactions from accounts matching these subtypes will be shown. If not specified or empty, all account subtypes are included. Applies to VOA JSON, VOA PDF, and DVOE PDF reports only.
    - `income_insights` CustomizationTemplateIncomeInsights — Default parameters for income insights reports
      - `days_requested` integer, nullable — The specific duration in days for which an income insights report is requested to be generated.
      - `consumer_report_permissible_purpose` 'ACCOUNT_REVIEW_CREDIT' | 'ACCOUNT_REVIEW_NON_CREDIT' | 'EMPLOYMENT' | 'EXTENSION_OF_CREDIT' | 'LEGITIMATE_BUSINESS_NEED_TENANT_SCREENING' | 'LEGITIMATE_BUSINESS_NEED_OTHER' | 'WRITTEN_INSTRUCTION_PREQUALIFICATION' | 'WRITTEN_INSTRUCTION_OTHER' | 'null', nullable — Describes the reason you are generating an income insights report.
    - `labeled_transaction_categories` string[], nullable — List of transaction categories that will have colored labels in VOA reports. Only selected categories will display colored badge labels. If not specified or empty, all categories are labeled.
  - `data_sources_flow` CustomizationTemplateDataSourcesFlow — Data sources and flow configuration per product type. Supported product keys: employment, income, insurance.
    - `employment` CustomizationTemplateDataSourcesFlowEmployment
      - `flow` 'fallback' | 'waterfall' | 'smart_routing' | 'manual_selection' — Specifies the presentation order and fallback behavior for multiple data sources in the widget.
      - `data_sources` string[] — Data sources to use for this product type, in the order they are attempted.
    - `income` CustomizationTemplateDataSourcesFlowIncome
      - `flow` 'fallback' | 'waterfall' | 'smart_routing' | 'manual_selection' — Specifies the presentation order and fallback behavior for multiple data sources in the widget.
      - `data_sources` string[] — Data sources to use for this product type, in the order they are attempted.
    - `insurance` CustomizationTemplateDataSourcesFlowInsurance
      - `flow` 'fallback' | 'waterfall' | 'smart_routing' | 'manual_selection' — Specifies the presentation order and fallback behavior for multiple data sources in the widget.
      - `data_sources` string[] — Data sources to use for this product type, in the order they are attempted.
  - `created_at` string, date-time, required — Timestamp when the template was created.
  - `updated_at` string, date-time, required — Timestamp when the template was updated last time.

## Other responses

- `400` — HTTP 400 Bad Request
- `401` — HTTP 401 Unauthorized
- `403` — HTTP 403 Forbidden

---

[API](https://skmtc.net/truv/apis/truv-api.md) · [All operations](https://skmtc.net/truv/apis/truv-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/truv/truv-api/versions/b92671dcb52d/schema)
