
Bank Accounts
Bank Accounts
Data Contract Template
Data Contract Template
Ensure data from bank accounts is fresh, complete, and reliable before it is used for payment orchestration, account verification, financial reconciliation, and downstream data consumption.
Data contract description
This data contract is designed for GoCardless, where bank account information is treated as a governed data product within a contract-driven data infrastructure that can provision and manage downstream interfaces such as BigQuery and Pub/Sub. For this use case, the contract gives GoCardless a reliable way to standardize sensitive bank account data by anchoring it to a defined contract_name, schema_version, owning team, a 24-hour freshness expectation on event_time, and core account fields such as bank_account_id, account_balance, and account_holder_name, helping the company preserve trust, ownership, and operational consistency for data that supports payment-related workflows and downstream consumption.
bank_accounts_data_contract.yaml
dataset: datasource/database/schema/bank_accounts variables: CONTRACT_NAME: default: "bank_account_information" SCHEMA_VERSION: default: "1" DATA_OWNER_TEAM: default: "Bank Data Team"
checks: - schema: allow_extra_columns: false allow_other_column_order: false - row_count: threshold: must_be_greater_than: 0 - freshness: column: event_time threshold: unit: hour must_be_less_than: 24
columns: - name: bank_account_id data_type: string checks: - missing: - duplicate: - invalid: name: "Bank Account ID length guardrail" valid_min_length: 5 valid_max_length: 20 - name: event_time data_type: timestamp checks: - missing: - name: schema_version data_type: string checks: - missing: - invalid: name: "Valid schema versions" valid_values: - "1" - "2" - name: contract_name data_type: string checks: - missing: - invalid: name: "Contract Name must match" valid_values: - bank_account_information - name: data_owner_team data_type: string checks: - missing: - invalid: name: "Owner Team must be valid" valid_values: - Bank Data Team - name: account_balance data_type: float checks: - invalid: name: "Reasonable account balance range" valid_min: -1000000 valid_max: 1000000 - name: account_holder_name data_type: string checks: - invalid: name: "Account Holder Name guardrail" valid_min_length: 1 valid_max_length: 128
Data contract description
This data contract is designed for GoCardless, where bank account information is treated as a governed data product within a contract-driven data infrastructure that can provision and manage downstream interfaces such as BigQuery and Pub/Sub. For this use case, the contract gives GoCardless a reliable way to standardize sensitive bank account data by anchoring it to a defined contract_name, schema_version, owning team, a 24-hour freshness expectation on event_time, and core account fields such as bank_account_id, account_balance, and account_holder_name, helping the company preserve trust, ownership, and operational consistency for data that supports payment-related workflows and downstream consumption.
bank_accounts_data_contract.yaml
dataset: datasource/database/schema/bank_accounts variables: CONTRACT_NAME: default: "bank_account_information" SCHEMA_VERSION: default: "1" DATA_OWNER_TEAM: default: "Bank Data Team"
checks: - schema: allow_extra_columns: false allow_other_column_order: false - row_count: threshold: must_be_greater_than: 0 - freshness: column: event_time threshold: unit: hour must_be_less_than: 24
columns: - name: bank_account_id data_type: string checks: - missing: - duplicate: - invalid: name: "Bank Account ID length guardrail" valid_min_length: 5 valid_max_length: 20 - name: event_time data_type: timestamp checks: - missing: - name: schema_version data_type: string checks: - missing: - invalid: name: "Valid schema versions" valid_values: - "1" - "2" - name: contract_name data_type: string checks: - missing: - invalid: name: "Contract Name must match" valid_values: - bank_account_information - name: data_owner_team data_type: string checks: - missing: - invalid: name: "Owner Team must be valid" valid_values: - Bank Data Team - name: account_balance data_type: float checks: - invalid: name: "Reasonable account balance range" valid_min: -1000000 valid_max: 1000000 - name: account_holder_name data_type: string checks: - invalid: name: "Account Holder Name guardrail" valid_min_length: 1 valid_max_length: 128
Data contract description
This data contract is designed for GoCardless, where bank account information is treated as a governed data product within a contract-driven data infrastructure that can provision and manage downstream interfaces such as BigQuery and Pub/Sub. For this use case, the contract gives GoCardless a reliable way to standardize sensitive bank account data by anchoring it to a defined contract_name, schema_version, owning team, a 24-hour freshness expectation on event_time, and core account fields such as bank_account_id, account_balance, and account_holder_name, helping the company preserve trust, ownership, and operational consistency for data that supports payment-related workflows and downstream consumption.
bank_accounts_data_contract.yaml
dataset: datasource/database/schema/bank_accounts variables: CONTRACT_NAME: default: "bank_account_information" SCHEMA_VERSION: default: "1" DATA_OWNER_TEAM: default: "Bank Data Team"
checks: - schema: allow_extra_columns: false allow_other_column_order: false - row_count: threshold: must_be_greater_than: 0 - freshness: column: event_time threshold: unit: hour must_be_less_than: 24
columns: - name: bank_account_id data_type: string checks: - missing: - duplicate: - invalid: name: "Bank Account ID length guardrail" valid_min_length: 5 valid_max_length: 20 - name: event_time data_type: timestamp checks: - missing: - name: schema_version data_type: string checks: - missing: - invalid: name: "Valid schema versions" valid_values: - "1" - "2" - name: contract_name data_type: string checks: - missing: - invalid: name: "Contract Name must match" valid_values: - bank_account_information - name: data_owner_team data_type: string checks: - missing: - invalid: name: "Owner Team must be valid" valid_values: - Bank Data Team - name: account_balance data_type: float checks: - invalid: name: "Reasonable account balance range" valid_min: -1000000 valid_max: 1000000 - name: account_holder_name data_type: string checks: - invalid: name: "Account Holder Name guardrail" valid_min_length: 1 valid_max_length: 128
How to Enforce Data Contracts with Soda
Embed data quality through data contracts at any point in your pipeline.
Embed data quality through data contracts at any point in your pipeline.
# pip install soda-{data source} for other data sources
# pip install soda-{data source} for other data sources
pip install soda-postgres
pip install soda-postgres
# verify the contract locally against a data source
# verify the contract locally against a data source
soda contract verify -c contract.yml -ds ds_config.yml
soda contract verify -c contract.yml -ds ds_config.yml
# publish and schedule the contract with Soda Cloud
# publish and schedule the contract with Soda Cloud
soda contract publish -c contract.yml -sc sc_config.yml
soda contract publish -c contract.yml -sc sc_config.yml
Check out the CLI documentation to learn more.
Check out the CLI documentation to learn more.
How to Automatically Create Data Contracts.
In one Click.
Automatically write and publish data contracts using Soda's AI-powered data contract copilot.

Make data contracts work in production
Business knows what good data looks like. Engineering knows how to deliver it at scale. Soda unites both, turning governance expectations into executable contracts.
Explore more data contract templates
One new data contract template every day, across industries and use cases
4.4 of 5
Start trusting your data. Today.
Find, understand, and fix any data quality issue in seconds.
From table to record-level.
Trusted by




4.4 of 5
Start trusting your data. Today.
Find, understand, and fix any data quality issue in seconds.
From table to record-level.
Trusted by
Solutions




4.4 of 5
Start trusting your data. Today.
Find, understand, and fix any data quality issue in seconds.
From table to record-level.
Trusted by
Solutions








