# Paykeys ## Lookup a paykey `PaykeyV1 Paykeys.Get(PaykeyGetParamsparameters, CancellationTokencancellationToken = default)` **get** `/v1/paykeys/{id}` Retrieves the details of an existing paykey. Supply the unique paykey `id` and Straddle will return the corresponding paykey record , including the `paykey` token value and masked bank account details. ### Parameters - `PaykeyGetParams parameters` - `required string id` - `string correlationID` Optional client generated identifier to trace and debug a series of requests. - `string requestID` Optional client generated identifier to trace and debug a request. - `string straddleAccountID` For use by platforms to specify an account id and set scope of a request. ### Returns - `class PaykeyV1:` - `required Data Data` - `required string ID` Unique identifier for the paykey. - `required Config Config` - `ProcessingMethod ProcessingMethod` - `"inline"Inline` - `"background"Background` - `"skip"Skip` - `SandboxOutcome SandboxOutcome` - `"standard"Standard` - `"active"Active` - `"rejected"Rejected` - `"review"Review` - `required DateTimeOffset CreatedAt` Timestamp of when the paykey was created. - `required string Label` Human-readable label used to represent this paykey in a UI. - `required string Paykey` The tokenized paykey value. This value is used to create payments and should be stored securely. - `required Source Source` - `"bank_account"BankAccount` - `"straddle"Straddle` - `"mx"Mx` - `"plaid"Plaid` - `"tan"Tan` - `"quiltt"Quiltt` - `required Status Status` - `"pending"Pending` - `"active"Active` - `"inactive"Inactive` - `"rejected"Rejected` - `"review"Review` - `"blocked"Blocked` - `required DateTimeOffset UpdatedAt` Timestamp of the most recent update to the paykey. - `Balance Balance` - `required Status Status` - `"pending"Pending` - `"completed"Completed` - `"failed"Failed` - `Int? AccountBalance` Account Balance when last retrieved - `DateTimeOffset? UpdatedAt` Last time account balance was updated. - `BankData BankData` - `required string AccountNumber` Bank account number. This value is masked by default for security reasons. Use the /unmask endpoint to access the unmasked value. - `required AccountType AccountType` - `"checking"Checking` - `"savings"Savings` - `required string RoutingNumber` The routing number of the bank account. - `string? CustomerID` Unique identifier of the related customer object. - `DateTimeOffset? ExpiresAt` Expiration date and time of the paykey, if applicable. - `string? ExternalID` Unique identifier for the paykey in your database, used for cross-referencing between Straddle and your systems. - `string? InstitutionName` Name of the financial institution. - `IReadOnlyDictionary? Metadata` Up to 20 additional user-defined key-value pairs. Useful for storing additional information about the paykey in a structured format. - `StatusDetails StatusDetails` - `required DateTimeOffset ChangedAt` The time the status change occurred. - `required string Message` A human-readable description of the current status. - `required Reason Reason` - `"insufficient_funds"InsufficientFunds` - `"closed_bank_account"ClosedBankAccount` - `"invalid_bank_account"InvalidBankAccount` - `"invalid_routing"InvalidRouting` - `"disputed"Disputed` - `"payment_stopped"PaymentStopped` - `"owner_deceased"OwnerDeceased` - `"frozen_bank_account"FrozenBankAccount` - `"risk_review"RiskReview` - `"fraudulent"Fraudulent` - `"duplicate_entry"DuplicateEntry` - `"invalid_paykey"InvalidPaykey` - `"payment_blocked"PaymentBlocked` - `"amount_too_large"AmountTooLarge` - `"too_many_attempts"TooManyAttempts` - `"internal_system_error"InternalSystemError` - `"user_request"UserRequest` - `"ok"Ok` - `"other_network_return"OtherNetworkReturn` - `"payout_refused"PayoutRefused` - `"cancel_request"CancelRequest` - `"failed_verification"FailedVerification` - `"require_review"RequireReview` - `"blocked_by_system"BlockedBySystem` - `"watchtower_review"WatchtowerReview` - `"validating"Validating` - `"auto_hold"AutoHold` - `required Source Source` - `"watchtower"Watchtower` - `"bank_decline"BankDecline` - `"customer_dispute"CustomerDispute` - `"user_action"UserAction` - `"system"System` - `string? Code` The status code if applicable. - `Boolean? UnblockEligible` Indicates whether this paykey is eligible for client-initiated unblocking. Only present for blocked paykeys. True when blocked due to R29 returns and not previously unblocked, false otherwise. Null when paykey is not blocked. - `required ResponseMetadata Meta` Metadata about the API request, including an identifier and timestamp. - `required string ApiRequestID` Unique identifier for this API request, useful for troubleshooting. - `required DateTimeOffset ApiRequestTimestamp` Timestamp for this API request, useful for troubleshooting. - `required ResponseType ResponseType` Indicates the structure of the returned content. - "object" means the `data` field contains a single JSON object. - "array" means the `data` field contains an array of objects. - "error" means the `data` field contains an error object with details of the issue. - "none" means no data is returned. - `"object"Object` - `"array"Array` - `"error"Error` - `"none"None` ### Example ```csharp PaykeyGetParams parameters = new() { ID = "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e" }; var paykeyV1 = await client.Paykeys.Get(parameters); Console.WriteLine(paykeyV1); ``` #### Response ```json { "data": { "id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", "config": { "processing_method": "inline", "sandbox_outcome": "standard" }, "created_at": "2019-12-27T18:11:19.117Z", "label": "label", "paykey": "paykey", "source": "bank_account", "status": "pending", "updated_at": "2019-12-27T18:11:19.117Z", "balance": { "status": "pending", "account_balance": 0, "updated_at": "2019-12-27T18:11:19.117Z" }, "bank_data": { "account_number": "****1234", "account_type": "checking", "routing_number": "021000021" }, "customer_id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", "expires_at": "2019-12-27T18:11:19.117Z", "external_id": "external_id", "institution_name": "Bank of America", "metadata": { "foo": "string" }, "status_details": { "changed_at": "2019-12-27T18:11:19.117Z", "message": "Bank account sucesfully validated", "reason": "insufficient_funds", "source": "watchtower", "code": "code" }, "unblock_eligible": true }, "meta": { "api_request_id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", "api_request_timestamp": "2019-12-27T18:11:19.117Z" }, "response_type": "object" } ``` ## Unmask a paykey `PaykeyUnmaskedV1 Paykeys.Unmasked(PaykeyUnmaskedParamsparameters, CancellationTokencancellationToken = default)` **get** `/v1/paykeys/{id}/unmasked` Retrieves the unmasked details of an existing paykey. Supply the unique paykey `id` and Straddle will return the corresponding paykey record, including the unmasked bank account details. This endpoint needs to be enabled by Straddle for your account and should only be used when absolutely necessary. ### Parameters - `PaykeyUnmaskedParams parameters` - `required string id` - `string correlationID` Optional client generated identifier to trace and debug a series of requests. - `string requestID` Optional client generated identifier to trace and debug a request. - `string straddleAccountID` For use by platforms to specify an account id and set scope of a request. ### Returns - `class PaykeyUnmaskedV1:` - `required Data Data` - `required string ID` Unique identifier for the paykey. - `required Config Config` - `ProcessingMethod ProcessingMethod` - `"inline"Inline` - `"background"Background` - `"skip"Skip` - `SandboxOutcome SandboxOutcome` - `"standard"Standard` - `"active"Active` - `"rejected"Rejected` - `"review"Review` - `required DateTimeOffset CreatedAt` Timestamp of when the paykey was created. - `required string Label` Human-readable label used to represent this paykey in a UI. - `required string Paykey` The tokenized paykey value. This value is used to create payments and should be stored securely. - `required Source Source` - `"bank_account"BankAccount` - `"straddle"Straddle` - `"mx"Mx` - `"plaid"Plaid` - `"tan"Tan` - `"quiltt"Quiltt` - `required Status Status` - `"pending"Pending` - `"active"Active` - `"inactive"Inactive` - `"rejected"Rejected` - `"review"Review` - `"blocked"Blocked` - `required DateTimeOffset UpdatedAt` Timestamp of the most recent update to the paykey. - `Balance Balance` - `required Status Status` - `"pending"Pending` - `"completed"Completed` - `"failed"Failed` - `Int? AccountBalance` Account Balance when last retrieved - `DateTimeOffset? UpdatedAt` Last time account balance was updated. - `BankData BankData` - `required string AccountNumber` The bank account number - `required AccountType AccountType` - `"checking"Checking` - `"savings"Savings` - `required string RoutingNumber` The routing number of the bank account. - `string? CustomerID` Unique identifier of the related customer object. - `DateTimeOffset? ExpiresAt` Expiration date and time of the paykey, if applicable. - `string? ExternalID` Unique identifier for the paykey in your database, used for cross-referencing between Straddle and your systems. - `string? InstitutionName` Name of the financial institution. - `IReadOnlyDictionary? Metadata` Up to 20 additional user-defined key-value pairs. Useful for storing additional information about the paykey in a structured format. - `StatusDetails StatusDetails` - `required DateTimeOffset ChangedAt` The time the status change occurred. - `required string Message` A human-readable description of the current status. - `required Reason Reason` - `"insufficient_funds"InsufficientFunds` - `"closed_bank_account"ClosedBankAccount` - `"invalid_bank_account"InvalidBankAccount` - `"invalid_routing"InvalidRouting` - `"disputed"Disputed` - `"payment_stopped"PaymentStopped` - `"owner_deceased"OwnerDeceased` - `"frozen_bank_account"FrozenBankAccount` - `"risk_review"RiskReview` - `"fraudulent"Fraudulent` - `"duplicate_entry"DuplicateEntry` - `"invalid_paykey"InvalidPaykey` - `"payment_blocked"PaymentBlocked` - `"amount_too_large"AmountTooLarge` - `"too_many_attempts"TooManyAttempts` - `"internal_system_error"InternalSystemError` - `"user_request"UserRequest` - `"ok"Ok` - `"other_network_return"OtherNetworkReturn` - `"payout_refused"PayoutRefused` - `"cancel_request"CancelRequest` - `"failed_verification"FailedVerification` - `"require_review"RequireReview` - `"blocked_by_system"BlockedBySystem` - `"watchtower_review"WatchtowerReview` - `"validating"Validating` - `"auto_hold"AutoHold` - `required Source Source` - `"watchtower"Watchtower` - `"bank_decline"BankDecline` - `"customer_dispute"CustomerDispute` - `"user_action"UserAction` - `"system"System` - `string? Code` The status code if applicable. - `required ResponseMetadata Meta` Metadata about the API request, including an identifier and timestamp. - `required string ApiRequestID` Unique identifier for this API request, useful for troubleshooting. - `required DateTimeOffset ApiRequestTimestamp` Timestamp for this API request, useful for troubleshooting. - `required ResponseType ResponseType` Indicates the structure of the returned content. - "object" means the `data` field contains a single JSON object. - "array" means the `data` field contains an array of objects. - "error" means the `data` field contains an error object with details of the issue. - "none" means no data is returned. - `"object"Object` - `"array"Array` - `"error"Error` - `"none"None` ### Example ```csharp PaykeyUnmaskedParams parameters = new() { ID = "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e" }; var paykeyUnmaskedV1 = await client.Paykeys.Unmasked(parameters); Console.WriteLine(paykeyUnmaskedV1); ``` #### Response ```json { "data": { "id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", "config": { "processing_method": "inline", "sandbox_outcome": "standard" }, "created_at": "2019-12-27T18:11:19.117Z", "label": "label", "paykey": "paykey", "source": "bank_account", "status": "pending", "updated_at": "2019-12-27T18:11:19.117Z", "balance": { "status": "pending", "account_balance": 0, "updated_at": "2019-12-27T18:11:19.117Z" }, "bank_data": { "account_number": "123456789", "account_type": "checking", "routing_number": "021000021" }, "customer_id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", "expires_at": "2019-12-27T18:11:19.117Z", "external_id": "external_id", "institution_name": "Bank of America", "metadata": { "foo": "string" }, "status_details": { "changed_at": "2019-12-27T18:11:19.117Z", "message": "Bank account sucesfully validated", "reason": "insufficient_funds", "source": "watchtower", "code": "code" } }, "meta": { "api_request_id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", "api_request_timestamp": "2019-12-27T18:11:19.117Z" }, "response_type": "object" } ``` ## List paykeys `PaykeySummaryPagedV1 Paykeys.List(PaykeyListParams?parameters, CancellationTokencancellationToken = default)` **get** `/v1/paykeys` Returns a list of paykeys associated with a Straddle account. This endpoint supports advanced sorting and filtering options. ### Parameters - `PaykeyListParams parameters` - `string customerID` Query param: Filter paykeys by related customer ID. - `Int pageNumber` Query param: Page number for paginated results. Starts at 1. - `Int pageSize` Query param: Number of results per page. Maximum: 1000. - `string searchText` Query param: General search term to filter paykeys. - `SortBy sortBy` Query param - `"institution_name"InstitutionName` - `"expires_at"ExpiresAt` - `"created_at"CreatedAt` - `SortOrder sortOrder` Query param - `"asc"Asc` - `"desc"Desc` - `IReadOnlyList source` Query param: Filter paykeys by their source. - `"bank_account"BankAccount` - `"straddle"Straddle` - `"mx"Mx` - `"plaid"Plaid` - `"tan"Tan` - `"quiltt"Quiltt` - `IReadOnlyList status` Query param: Filter paykeys by their current status. - `"pending"Pending` - `"active"Active` - `"inactive"Inactive` - `"rejected"Rejected` - `"review"Review` - `"blocked"Blocked` - `Boolean unblockEligible` Query param: Filter paykeys by unblock eligibility. When true, returns only blocked paykeys eligible for client-initiated unblocking (blocked due to R29 returns and not previously unblocked). When false, returns only blocked paykeys that are not eligible for unblocking. - `string correlationID` Header param: Optional client generated identifier to trace and debug a series of requests. - `string requestID` Header param: Optional client generated identifier to trace and debug a request. - `string straddleAccountID` Header param: For use by platforms to specify an account id and set scope of a request. ### Returns - `class PaykeySummaryPagedV1:` - `required IReadOnlyList Data` - `required string ID` Unique identifier for the paykey. - `required Config Config` - `ProcessingMethod ProcessingMethod` - `"inline"Inline` - `"background"Background` - `"skip"Skip` - `SandboxOutcome SandboxOutcome` - `"standard"Standard` - `"active"Active` - `"rejected"Rejected` - `"review"Review` - `required DateTimeOffset CreatedAt` Timestamp of when the paykey was created. - `required string Label` Human-readable label that combines the bank name and masked account number to help easility represent this paykey in a UI - `required string Paykey` The tokenized paykey value. This value is used to create payments and should be stored securely. - `required Source Source` - `"bank_account"BankAccount` - `"straddle"Straddle` - `"mx"Mx` - `"plaid"Plaid` - `"tan"Tan` - `"quiltt"Quiltt` - `required Status Status` - `"pending"Pending` - `"active"Active` - `"inactive"Inactive` - `"rejected"Rejected` - `"review"Review` - `"blocked"Blocked` - `required DateTimeOffset UpdatedAt` Timestamp of the most recent update to the paykey. - `BankData BankData` - `required string AccountNumber` Bank account number. This value is masked by default for security reasons. Use the /unmask endpoint to access the unmasked value. - `required AccountType AccountType` - `"checking"Checking` - `"savings"Savings` - `required string RoutingNumber` The routing number of the bank account. - `string? CustomerID` Unique identifier of the related customer object. - `DateTimeOffset? ExpiresAt` Expiration date and time of the paykey, if applicable. - `string? ExternalID` Unique identifier for the paykey in your database, used for cross-referencing between Straddle and your systems. - `string? InstitutionName` Name of the financial institution. - `StatusDetails StatusDetails` - `required DateTimeOffset ChangedAt` The time the status change occurred. - `required string Message` A human-readable description of the current status. - `required Reason Reason` - `"insufficient_funds"InsufficientFunds` - `"closed_bank_account"ClosedBankAccount` - `"invalid_bank_account"InvalidBankAccount` - `"invalid_routing"InvalidRouting` - `"disputed"Disputed` - `"payment_stopped"PaymentStopped` - `"owner_deceased"OwnerDeceased` - `"frozen_bank_account"FrozenBankAccount` - `"risk_review"RiskReview` - `"fraudulent"Fraudulent` - `"duplicate_entry"DuplicateEntry` - `"invalid_paykey"InvalidPaykey` - `"payment_blocked"PaymentBlocked` - `"amount_too_large"AmountTooLarge` - `"too_many_attempts"TooManyAttempts` - `"internal_system_error"InternalSystemError` - `"user_request"UserRequest` - `"ok"Ok` - `"other_network_return"OtherNetworkReturn` - `"payout_refused"PayoutRefused` - `"cancel_request"CancelRequest` - `"failed_verification"FailedVerification` - `"require_review"RequireReview` - `"blocked_by_system"BlockedBySystem` - `"watchtower_review"WatchtowerReview` - `"validating"Validating` - `"auto_hold"AutoHold` - `required Source Source` - `"watchtower"Watchtower` - `"bank_decline"BankDecline` - `"customer_dispute"CustomerDispute` - `"user_action"UserAction` - `"system"System` - `string? Code` The status code if applicable. - `Boolean? UnblockEligible` Indicates whether this paykey is eligible for client-initiated unblocking. Only present for blocked paykeys. True when blocked due to R29 returns and not previously unblocked, false otherwise. Null when paykey is not blocked. - `required Meta Meta` - `required string ApiRequestID` Unique identifier for this API request, useful for troubleshooting. - `required DateTimeOffset ApiRequestTimestamp` Timestamp for this API request, useful for troubleshooting. - `required Int MaxPageSize` Maximum allowed page size for this endpoint. - `required Int PageNumber` Page number for paginated results. - `required Int PageSize` Number of items per page in this response. - `required string SortBy` The field that the results were sorted by. - `required SortOrder SortOrder` - `"asc"Asc` - `"desc"Desc` - `required Int TotalItems` - `required Int TotalPages` The number of pages available. - `required ResponseType ResponseType` Indicates the structure of the returned content. - "object" means the `data` field contains a single JSON object. - "array" means the `data` field contains an array of objects. - "error" means the `data` field contains an error object with details of the issue. - "none" means no data is returned. - `"object"Object` - `"array"Array` - `"error"Error` - `"none"None` ### Example ```csharp PaykeyListParams parameters = new(); var page = await client.Paykeys.List(parameters); await foreach (var item in page.Paginate()) { Console.WriteLine(item); } ``` #### Response ```json { "data": [ { "id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", "config": { "processing_method": "inline", "sandbox_outcome": "standard" }, "created_at": "2019-12-27T18:11:19.117Z", "label": "Bank of America ****1234", "paykey": "paykey", "source": "bank_account", "status": "pending", "updated_at": "2019-12-27T18:11:19.117Z", "bank_data": { "account_number": "****1234", "account_type": "checking", "routing_number": "021000021" }, "customer_id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", "expires_at": "2019-12-27T18:11:19.117Z", "external_id": "external_id", "institution_name": "Bank of America", "status_details": { "changed_at": "2019-12-27T18:11:19.117Z", "message": "Bank account sucesfully validated", "reason": "insufficient_funds", "source": "watchtower", "code": "code" }, "unblock_eligible": true } ], "meta": { "api_request_id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", "api_request_timestamp": "2019-12-27T18:11:19.117Z", "max_page_size": 0, "page_number": 0, "page_size": 0, "sort_by": "sort_by", "sort_order": "asc", "total_items": 0, "total_pages": 0 }, "response_type": "object" } ``` ## Retrieve an unmasked paykey token `PaykeyRevealResponse Paykeys.Reveal(PaykeyRevealParamsparameters, CancellationTokencancellationToken = default)` **get** `/v1/paykeys/{id}/reveal` Retrieves the details of a paykey that has previously been created. Supply the unique paykey ID that was returned from your previous request, and Straddle will return the corresponding paykey information including the unmasked token. ### Parameters - `PaykeyRevealParams parameters` - `required string id` - `string correlationID` Optional client generated identifier to trace and debug a series of requests. - `string requestID` Optional client generated identifier to trace and debug a request. - `string straddleAccountID` For use by platforms to specify an account id and set scope of a request. ### Returns - `class PaykeyRevealResponse:` - `required Data Data` - `required string ID` Unique identifier for the paykey. - `required Config Config` - `ProcessingMethod ProcessingMethod` - `"inline"Inline` - `"background"Background` - `"skip"Skip` - `SandboxOutcome SandboxOutcome` - `"standard"Standard` - `"active"Active` - `"rejected"Rejected` - `"review"Review` - `required DateTimeOffset CreatedAt` Timestamp of when the paykey was created. - `required string Label` Human-readable label that combines the bank name and masked account number to help easility represent this paykey in a UI - `required string Paykey` The tokenized paykey value. This token is used to create payments and should be stored securely. - `required Source Source` - `"bank_account"BankAccount` - `"straddle"Straddle` - `"mx"Mx` - `"plaid"Plaid` - `"tan"Tan` - `"quiltt"Quiltt` - `required Status Status` - `"pending"Pending` - `"active"Active` - `"inactive"Inactive` - `"rejected"Rejected` - `"review"Review` - `"blocked"Blocked` - `required DateTimeOffset UpdatedAt` Timestamp of the most recent update to the paykey. - `Balance Balance` - `required Status Status` - `"pending"Pending` - `"completed"Completed` - `"failed"Failed` - `Int? AccountBalance` Account Balance when last retrieved - `DateTimeOffset? UpdatedAt` Last time account balance was updated. - `BankData BankData` - `required string AccountNumber` Bank account number. This value is masked by default for security reasons. Use the /unmask endpoint to access the unmasked value. - `required AccountType AccountType` - `"checking"Checking` - `"savings"Savings` - `required string RoutingNumber` The routing number of the bank account. - `string? CustomerID` Unique identifier of the related customer object. - `DateTimeOffset? ExpiresAt` Expiration date and time of the paykey, if applicable. - `string? ExternalID` Unique identifier for the paykey in your database, used for cross-referencing between Straddle and your systems. - `string? InstitutionName` Name of the financial institution. - `IReadOnlyDictionary? Metadata` Up to 20 additional user-defined key-value pairs. Useful for storing additional information about the paykey in a structured format. - `StatusDetails StatusDetails` - `required DateTimeOffset ChangedAt` The time the status change occurred. - `required string Message` A human-readable description of the current status. - `required Reason Reason` - `"insufficient_funds"InsufficientFunds` - `"closed_bank_account"ClosedBankAccount` - `"invalid_bank_account"InvalidBankAccount` - `"invalid_routing"InvalidRouting` - `"disputed"Disputed` - `"payment_stopped"PaymentStopped` - `"owner_deceased"OwnerDeceased` - `"frozen_bank_account"FrozenBankAccount` - `"risk_review"RiskReview` - `"fraudulent"Fraudulent` - `"duplicate_entry"DuplicateEntry` - `"invalid_paykey"InvalidPaykey` - `"payment_blocked"PaymentBlocked` - `"amount_too_large"AmountTooLarge` - `"too_many_attempts"TooManyAttempts` - `"internal_system_error"InternalSystemError` - `"user_request"UserRequest` - `"ok"Ok` - `"other_network_return"OtherNetworkReturn` - `"payout_refused"PayoutRefused` - `"cancel_request"CancelRequest` - `"failed_verification"FailedVerification` - `"require_review"RequireReview` - `"blocked_by_system"BlockedBySystem` - `"watchtower_review"WatchtowerReview` - `"validating"Validating` - `"auto_hold"AutoHold` - `required Source Source` - `"watchtower"Watchtower` - `"bank_decline"BankDecline` - `"customer_dispute"CustomerDispute` - `"user_action"UserAction` - `"system"System` - `string? Code` The status code if applicable. - `required ResponseMetadata Meta` Metadata about the API request, including an identifier and timestamp. - `required string ApiRequestID` Unique identifier for this API request, useful for troubleshooting. - `required DateTimeOffset ApiRequestTimestamp` Timestamp for this API request, useful for troubleshooting. - `required ResponseType ResponseType` Indicates the structure of the returned content. - "object" means the `data` field contains a single JSON object. - "array" means the `data` field contains an array of objects. - "error" means the `data` field contains an error object with details of the issue. - "none" means no data is returned. - `"object"Object` - `"array"Array` - `"error"Error` - `"none"None` ### Example ```csharp PaykeyRevealParams parameters = new() { ID = "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e" }; var response = await client.Paykeys.Reveal(parameters); Console.WriteLine(response); ``` #### Response ```json { "data": { "id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", "config": { "processing_method": "inline", "sandbox_outcome": "standard" }, "created_at": "2019-12-27T18:11:19.117Z", "label": "Bank of America ****1234", "paykey": "paykey", "source": "straddle", "status": "pending", "updated_at": "2019-12-27T18:11:19.117Z", "balance": { "status": "pending", "account_balance": 0, "updated_at": "2019-12-27T18:11:19.117Z" }, "bank_data": { "account_number": "****1234", "account_type": "checking", "routing_number": "021000021" }, "customer_id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", "expires_at": "2019-12-27T18:11:19.117Z", "external_id": "external_id", "institution_name": "Bank of America", "metadata": { "foo": "string" }, "status_details": { "changed_at": "2019-12-27T18:11:19.117Z", "message": "Bank account sucesfully validated", "reason": "insufficient_funds", "source": "watchtower", "code": "code" } }, "meta": { "api_request_id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", "api_request_timestamp": "2019-12-27T18:11:19.117Z" }, "response_type": "object" } ``` ## Cancel `PaykeyV1 Paykeys.Cancel(PaykeyCancelParamsparameters, CancellationTokencancellationToken = default)` **put** `/v1/paykeys/{id}/cancel` ### Parameters - `PaykeyCancelParams parameters` - `required string id` Path param - `string? reason` Body param - `string correlationID` Header param: Optional client generated identifier to trace and debug a series of requests. - `string idempotencyKey` Header param: Optional client generated value to use for idempotent requests. - `string requestID` Header param: Optional client generated identifier to trace and debug a request. - `string straddleAccountID` Header param: For use by platforms to specify an account id and set scope of a request. ### Returns - `class PaykeyV1:` - `required Data Data` - `required string ID` Unique identifier for the paykey. - `required Config Config` - `ProcessingMethod ProcessingMethod` - `"inline"Inline` - `"background"Background` - `"skip"Skip` - `SandboxOutcome SandboxOutcome` - `"standard"Standard` - `"active"Active` - `"rejected"Rejected` - `"review"Review` - `required DateTimeOffset CreatedAt` Timestamp of when the paykey was created. - `required string Label` Human-readable label used to represent this paykey in a UI. - `required string Paykey` The tokenized paykey value. This value is used to create payments and should be stored securely. - `required Source Source` - `"bank_account"BankAccount` - `"straddle"Straddle` - `"mx"Mx` - `"plaid"Plaid` - `"tan"Tan` - `"quiltt"Quiltt` - `required Status Status` - `"pending"Pending` - `"active"Active` - `"inactive"Inactive` - `"rejected"Rejected` - `"review"Review` - `"blocked"Blocked` - `required DateTimeOffset UpdatedAt` Timestamp of the most recent update to the paykey. - `Balance Balance` - `required Status Status` - `"pending"Pending` - `"completed"Completed` - `"failed"Failed` - `Int? AccountBalance` Account Balance when last retrieved - `DateTimeOffset? UpdatedAt` Last time account balance was updated. - `BankData BankData` - `required string AccountNumber` Bank account number. This value is masked by default for security reasons. Use the /unmask endpoint to access the unmasked value. - `required AccountType AccountType` - `"checking"Checking` - `"savings"Savings` - `required string RoutingNumber` The routing number of the bank account. - `string? CustomerID` Unique identifier of the related customer object. - `DateTimeOffset? ExpiresAt` Expiration date and time of the paykey, if applicable. - `string? ExternalID` Unique identifier for the paykey in your database, used for cross-referencing between Straddle and your systems. - `string? InstitutionName` Name of the financial institution. - `IReadOnlyDictionary? Metadata` Up to 20 additional user-defined key-value pairs. Useful for storing additional information about the paykey in a structured format. - `StatusDetails StatusDetails` - `required DateTimeOffset ChangedAt` The time the status change occurred. - `required string Message` A human-readable description of the current status. - `required Reason Reason` - `"insufficient_funds"InsufficientFunds` - `"closed_bank_account"ClosedBankAccount` - `"invalid_bank_account"InvalidBankAccount` - `"invalid_routing"InvalidRouting` - `"disputed"Disputed` - `"payment_stopped"PaymentStopped` - `"owner_deceased"OwnerDeceased` - `"frozen_bank_account"FrozenBankAccount` - `"risk_review"RiskReview` - `"fraudulent"Fraudulent` - `"duplicate_entry"DuplicateEntry` - `"invalid_paykey"InvalidPaykey` - `"payment_blocked"PaymentBlocked` - `"amount_too_large"AmountTooLarge` - `"too_many_attempts"TooManyAttempts` - `"internal_system_error"InternalSystemError` - `"user_request"UserRequest` - `"ok"Ok` - `"other_network_return"OtherNetworkReturn` - `"payout_refused"PayoutRefused` - `"cancel_request"CancelRequest` - `"failed_verification"FailedVerification` - `"require_review"RequireReview` - `"blocked_by_system"BlockedBySystem` - `"watchtower_review"WatchtowerReview` - `"validating"Validating` - `"auto_hold"AutoHold` - `required Source Source` - `"watchtower"Watchtower` - `"bank_decline"BankDecline` - `"customer_dispute"CustomerDispute` - `"user_action"UserAction` - `"system"System` - `string? Code` The status code if applicable. - `Boolean? UnblockEligible` Indicates whether this paykey is eligible for client-initiated unblocking. Only present for blocked paykeys. True when blocked due to R29 returns and not previously unblocked, false otherwise. Null when paykey is not blocked. - `required ResponseMetadata Meta` Metadata about the API request, including an identifier and timestamp. - `required string ApiRequestID` Unique identifier for this API request, useful for troubleshooting. - `required DateTimeOffset ApiRequestTimestamp` Timestamp for this API request, useful for troubleshooting. - `required ResponseType ResponseType` Indicates the structure of the returned content. - "object" means the `data` field contains a single JSON object. - "array" means the `data` field contains an array of objects. - "error" means the `data` field contains an error object with details of the issue. - "none" means no data is returned. - `"object"Object` - `"array"Array` - `"error"Error` - `"none"None` ### Example ```csharp PaykeyCancelParams parameters = new() { ID = "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e" }; var paykeyV1 = await client.Paykeys.Cancel(parameters); Console.WriteLine(paykeyV1); ``` #### Response ```json { "data": { "id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", "config": { "processing_method": "inline", "sandbox_outcome": "standard" }, "created_at": "2019-12-27T18:11:19.117Z", "label": "label", "paykey": "paykey", "source": "bank_account", "status": "pending", "updated_at": "2019-12-27T18:11:19.117Z", "balance": { "status": "pending", "account_balance": 0, "updated_at": "2019-12-27T18:11:19.117Z" }, "bank_data": { "account_number": "****1234", "account_type": "checking", "routing_number": "021000021" }, "customer_id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", "expires_at": "2019-12-27T18:11:19.117Z", "external_id": "external_id", "institution_name": "Bank of America", "metadata": { "foo": "string" }, "status_details": { "changed_at": "2019-12-27T18:11:19.117Z", "message": "Bank account sucesfully validated", "reason": "insufficient_funds", "source": "watchtower", "code": "code" }, "unblock_eligible": true }, "meta": { "api_request_id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", "api_request_timestamp": "2019-12-27T18:11:19.117Z" }, "response_type": "object" } ``` ## Update a paykey's balance `PaykeyV1 Paykeys.UpdateBalance(PaykeyUpdateBalanceParamsparameters, CancellationTokencancellationToken = default)` **put** `/v1/paykeys/{id}/refresh_balance` Updates the balance of a paykey. This endpoint allows you to refresh the balance of a paykey. ### Parameters - `PaykeyUpdateBalanceParams parameters` - `required string id` - `string correlationID` Optional client generated identifier to trace and debug a series of requests. - `string idempotencyKey` Optional client generated value to use for idempotent requests. - `string requestID` Optional client generated identifier to trace and debug a request. - `string straddleAccountID` For use by platforms to specify an account id and set scope of a request. ### Returns - `class PaykeyV1:` - `required Data Data` - `required string ID` Unique identifier for the paykey. - `required Config Config` - `ProcessingMethod ProcessingMethod` - `"inline"Inline` - `"background"Background` - `"skip"Skip` - `SandboxOutcome SandboxOutcome` - `"standard"Standard` - `"active"Active` - `"rejected"Rejected` - `"review"Review` - `required DateTimeOffset CreatedAt` Timestamp of when the paykey was created. - `required string Label` Human-readable label used to represent this paykey in a UI. - `required string Paykey` The tokenized paykey value. This value is used to create payments and should be stored securely. - `required Source Source` - `"bank_account"BankAccount` - `"straddle"Straddle` - `"mx"Mx` - `"plaid"Plaid` - `"tan"Tan` - `"quiltt"Quiltt` - `required Status Status` - `"pending"Pending` - `"active"Active` - `"inactive"Inactive` - `"rejected"Rejected` - `"review"Review` - `"blocked"Blocked` - `required DateTimeOffset UpdatedAt` Timestamp of the most recent update to the paykey. - `Balance Balance` - `required Status Status` - `"pending"Pending` - `"completed"Completed` - `"failed"Failed` - `Int? AccountBalance` Account Balance when last retrieved - `DateTimeOffset? UpdatedAt` Last time account balance was updated. - `BankData BankData` - `required string AccountNumber` Bank account number. This value is masked by default for security reasons. Use the /unmask endpoint to access the unmasked value. - `required AccountType AccountType` - `"checking"Checking` - `"savings"Savings` - `required string RoutingNumber` The routing number of the bank account. - `string? CustomerID` Unique identifier of the related customer object. - `DateTimeOffset? ExpiresAt` Expiration date and time of the paykey, if applicable. - `string? ExternalID` Unique identifier for the paykey in your database, used for cross-referencing between Straddle and your systems. - `string? InstitutionName` Name of the financial institution. - `IReadOnlyDictionary? Metadata` Up to 20 additional user-defined key-value pairs. Useful for storing additional information about the paykey in a structured format. - `StatusDetails StatusDetails` - `required DateTimeOffset ChangedAt` The time the status change occurred. - `required string Message` A human-readable description of the current status. - `required Reason Reason` - `"insufficient_funds"InsufficientFunds` - `"closed_bank_account"ClosedBankAccount` - `"invalid_bank_account"InvalidBankAccount` - `"invalid_routing"InvalidRouting` - `"disputed"Disputed` - `"payment_stopped"PaymentStopped` - `"owner_deceased"OwnerDeceased` - `"frozen_bank_account"FrozenBankAccount` - `"risk_review"RiskReview` - `"fraudulent"Fraudulent` - `"duplicate_entry"DuplicateEntry` - `"invalid_paykey"InvalidPaykey` - `"payment_blocked"PaymentBlocked` - `"amount_too_large"AmountTooLarge` - `"too_many_attempts"TooManyAttempts` - `"internal_system_error"InternalSystemError` - `"user_request"UserRequest` - `"ok"Ok` - `"other_network_return"OtherNetworkReturn` - `"payout_refused"PayoutRefused` - `"cancel_request"CancelRequest` - `"failed_verification"FailedVerification` - `"require_review"RequireReview` - `"blocked_by_system"BlockedBySystem` - `"watchtower_review"WatchtowerReview` - `"validating"Validating` - `"auto_hold"AutoHold` - `required Source Source` - `"watchtower"Watchtower` - `"bank_decline"BankDecline` - `"customer_dispute"CustomerDispute` - `"user_action"UserAction` - `"system"System` - `string? Code` The status code if applicable. - `Boolean? UnblockEligible` Indicates whether this paykey is eligible for client-initiated unblocking. Only present for blocked paykeys. True when blocked due to R29 returns and not previously unblocked, false otherwise. Null when paykey is not blocked. - `required ResponseMetadata Meta` Metadata about the API request, including an identifier and timestamp. - `required string ApiRequestID` Unique identifier for this API request, useful for troubleshooting. - `required DateTimeOffset ApiRequestTimestamp` Timestamp for this API request, useful for troubleshooting. - `required ResponseType ResponseType` Indicates the structure of the returned content. - "object" means the `data` field contains a single JSON object. - "array" means the `data` field contains an array of objects. - "error" means the `data` field contains an error object with details of the issue. - "none" means no data is returned. - `"object"Object` - `"array"Array` - `"error"Error` - `"none"None` ### Example ```csharp PaykeyUpdateBalanceParams parameters = new() { ID = "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e" }; var paykeyV1 = await client.Paykeys.UpdateBalance(parameters); Console.WriteLine(paykeyV1); ``` #### Response ```json { "data": { "id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", "config": { "processing_method": "inline", "sandbox_outcome": "standard" }, "created_at": "2019-12-27T18:11:19.117Z", "label": "label", "paykey": "paykey", "source": "bank_account", "status": "pending", "updated_at": "2019-12-27T18:11:19.117Z", "balance": { "status": "pending", "account_balance": 0, "updated_at": "2019-12-27T18:11:19.117Z" }, "bank_data": { "account_number": "****1234", "account_type": "checking", "routing_number": "021000021" }, "customer_id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", "expires_at": "2019-12-27T18:11:19.117Z", "external_id": "external_id", "institution_name": "Bank of America", "metadata": { "foo": "string" }, "status_details": { "changed_at": "2019-12-27T18:11:19.117Z", "message": "Bank account sucesfully validated", "reason": "insufficient_funds", "source": "watchtower", "code": "code" }, "unblock_eligible": true }, "meta": { "api_request_id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", "api_request_timestamp": "2019-12-27T18:11:19.117Z" }, "response_type": "object" } ``` ## Domain Types ### Paykey Summary Paged V1 - `class PaykeySummaryPagedV1:` - `required IReadOnlyList Data` - `required string ID` Unique identifier for the paykey. - `required Config Config` - `ProcessingMethod ProcessingMethod` - `"inline"Inline` - `"background"Background` - `"skip"Skip` - `SandboxOutcome SandboxOutcome` - `"standard"Standard` - `"active"Active` - `"rejected"Rejected` - `"review"Review` - `required DateTimeOffset CreatedAt` Timestamp of when the paykey was created. - `required string Label` Human-readable label that combines the bank name and masked account number to help easility represent this paykey in a UI - `required string Paykey` The tokenized paykey value. This value is used to create payments and should be stored securely. - `required Source Source` - `"bank_account"BankAccount` - `"straddle"Straddle` - `"mx"Mx` - `"plaid"Plaid` - `"tan"Tan` - `"quiltt"Quiltt` - `required Status Status` - `"pending"Pending` - `"active"Active` - `"inactive"Inactive` - `"rejected"Rejected` - `"review"Review` - `"blocked"Blocked` - `required DateTimeOffset UpdatedAt` Timestamp of the most recent update to the paykey. - `BankData BankData` - `required string AccountNumber` Bank account number. This value is masked by default for security reasons. Use the /unmask endpoint to access the unmasked value. - `required AccountType AccountType` - `"checking"Checking` - `"savings"Savings` - `required string RoutingNumber` The routing number of the bank account. - `string? CustomerID` Unique identifier of the related customer object. - `DateTimeOffset? ExpiresAt` Expiration date and time of the paykey, if applicable. - `string? ExternalID` Unique identifier for the paykey in your database, used for cross-referencing between Straddle and your systems. - `string? InstitutionName` Name of the financial institution. - `StatusDetails StatusDetails` - `required DateTimeOffset ChangedAt` The time the status change occurred. - `required string Message` A human-readable description of the current status. - `required Reason Reason` - `"insufficient_funds"InsufficientFunds` - `"closed_bank_account"ClosedBankAccount` - `"invalid_bank_account"InvalidBankAccount` - `"invalid_routing"InvalidRouting` - `"disputed"Disputed` - `"payment_stopped"PaymentStopped` - `"owner_deceased"OwnerDeceased` - `"frozen_bank_account"FrozenBankAccount` - `"risk_review"RiskReview` - `"fraudulent"Fraudulent` - `"duplicate_entry"DuplicateEntry` - `"invalid_paykey"InvalidPaykey` - `"payment_blocked"PaymentBlocked` - `"amount_too_large"AmountTooLarge` - `"too_many_attempts"TooManyAttempts` - `"internal_system_error"InternalSystemError` - `"user_request"UserRequest` - `"ok"Ok` - `"other_network_return"OtherNetworkReturn` - `"payout_refused"PayoutRefused` - `"cancel_request"CancelRequest` - `"failed_verification"FailedVerification` - `"require_review"RequireReview` - `"blocked_by_system"BlockedBySystem` - `"watchtower_review"WatchtowerReview` - `"validating"Validating` - `"auto_hold"AutoHold` - `required Source Source` - `"watchtower"Watchtower` - `"bank_decline"BankDecline` - `"customer_dispute"CustomerDispute` - `"user_action"UserAction` - `"system"System` - `string? Code` The status code if applicable. - `Boolean? UnblockEligible` Indicates whether this paykey is eligible for client-initiated unblocking. Only present for blocked paykeys. True when blocked due to R29 returns and not previously unblocked, false otherwise. Null when paykey is not blocked. - `required Meta Meta` - `required string ApiRequestID` Unique identifier for this API request, useful for troubleshooting. - `required DateTimeOffset ApiRequestTimestamp` Timestamp for this API request, useful for troubleshooting. - `required Int MaxPageSize` Maximum allowed page size for this endpoint. - `required Int PageNumber` Page number for paginated results. - `required Int PageSize` Number of items per page in this response. - `required string SortBy` The field that the results were sorted by. - `required SortOrder SortOrder` - `"asc"Asc` - `"desc"Desc` - `required Int TotalItems` - `required Int TotalPages` The number of pages available. - `required ResponseType ResponseType` Indicates the structure of the returned content. - "object" means the `data` field contains a single JSON object. - "array" means the `data` field contains an array of objects. - "error" means the `data` field contains an error object with details of the issue. - "none" means no data is returned. - `"object"Object` - `"array"Array` - `"error"Error` - `"none"None` ### Paykey Unmasked V1 - `class PaykeyUnmaskedV1:` - `required Data Data` - `required string ID` Unique identifier for the paykey. - `required Config Config` - `ProcessingMethod ProcessingMethod` - `"inline"Inline` - `"background"Background` - `"skip"Skip` - `SandboxOutcome SandboxOutcome` - `"standard"Standard` - `"active"Active` - `"rejected"Rejected` - `"review"Review` - `required DateTimeOffset CreatedAt` Timestamp of when the paykey was created. - `required string Label` Human-readable label used to represent this paykey in a UI. - `required string Paykey` The tokenized paykey value. This value is used to create payments and should be stored securely. - `required Source Source` - `"bank_account"BankAccount` - `"straddle"Straddle` - `"mx"Mx` - `"plaid"Plaid` - `"tan"Tan` - `"quiltt"Quiltt` - `required Status Status` - `"pending"Pending` - `"active"Active` - `"inactive"Inactive` - `"rejected"Rejected` - `"review"Review` - `"blocked"Blocked` - `required DateTimeOffset UpdatedAt` Timestamp of the most recent update to the paykey. - `Balance Balance` - `required Status Status` - `"pending"Pending` - `"completed"Completed` - `"failed"Failed` - `Int? AccountBalance` Account Balance when last retrieved - `DateTimeOffset? UpdatedAt` Last time account balance was updated. - `BankData BankData` - `required string AccountNumber` The bank account number - `required AccountType AccountType` - `"checking"Checking` - `"savings"Savings` - `required string RoutingNumber` The routing number of the bank account. - `string? CustomerID` Unique identifier of the related customer object. - `DateTimeOffset? ExpiresAt` Expiration date and time of the paykey, if applicable. - `string? ExternalID` Unique identifier for the paykey in your database, used for cross-referencing between Straddle and your systems. - `string? InstitutionName` Name of the financial institution. - `IReadOnlyDictionary? Metadata` Up to 20 additional user-defined key-value pairs. Useful for storing additional information about the paykey in a structured format. - `StatusDetails StatusDetails` - `required DateTimeOffset ChangedAt` The time the status change occurred. - `required string Message` A human-readable description of the current status. - `required Reason Reason` - `"insufficient_funds"InsufficientFunds` - `"closed_bank_account"ClosedBankAccount` - `"invalid_bank_account"InvalidBankAccount` - `"invalid_routing"InvalidRouting` - `"disputed"Disputed` - `"payment_stopped"PaymentStopped` - `"owner_deceased"OwnerDeceased` - `"frozen_bank_account"FrozenBankAccount` - `"risk_review"RiskReview` - `"fraudulent"Fraudulent` - `"duplicate_entry"DuplicateEntry` - `"invalid_paykey"InvalidPaykey` - `"payment_blocked"PaymentBlocked` - `"amount_too_large"AmountTooLarge` - `"too_many_attempts"TooManyAttempts` - `"internal_system_error"InternalSystemError` - `"user_request"UserRequest` - `"ok"Ok` - `"other_network_return"OtherNetworkReturn` - `"payout_refused"PayoutRefused` - `"cancel_request"CancelRequest` - `"failed_verification"FailedVerification` - `"require_review"RequireReview` - `"blocked_by_system"BlockedBySystem` - `"watchtower_review"WatchtowerReview` - `"validating"Validating` - `"auto_hold"AutoHold` - `required Source Source` - `"watchtower"Watchtower` - `"bank_decline"BankDecline` - `"customer_dispute"CustomerDispute` - `"user_action"UserAction` - `"system"System` - `string? Code` The status code if applicable. - `required ResponseMetadata Meta` Metadata about the API request, including an identifier and timestamp. - `required string ApiRequestID` Unique identifier for this API request, useful for troubleshooting. - `required DateTimeOffset ApiRequestTimestamp` Timestamp for this API request, useful for troubleshooting. - `required ResponseType ResponseType` Indicates the structure of the returned content. - "object" means the `data` field contains a single JSON object. - "array" means the `data` field contains an array of objects. - "error" means the `data` field contains an error object with details of the issue. - "none" means no data is returned. - `"object"Object` - `"array"Array` - `"error"Error` - `"none"None` ### Paykey V1 - `class PaykeyV1:` - `required Data Data` - `required string ID` Unique identifier for the paykey. - `required Config Config` - `ProcessingMethod ProcessingMethod` - `"inline"Inline` - `"background"Background` - `"skip"Skip` - `SandboxOutcome SandboxOutcome` - `"standard"Standard` - `"active"Active` - `"rejected"Rejected` - `"review"Review` - `required DateTimeOffset CreatedAt` Timestamp of when the paykey was created. - `required string Label` Human-readable label used to represent this paykey in a UI. - `required string Paykey` The tokenized paykey value. This value is used to create payments and should be stored securely. - `required Source Source` - `"bank_account"BankAccount` - `"straddle"Straddle` - `"mx"Mx` - `"plaid"Plaid` - `"tan"Tan` - `"quiltt"Quiltt` - `required Status Status` - `"pending"Pending` - `"active"Active` - `"inactive"Inactive` - `"rejected"Rejected` - `"review"Review` - `"blocked"Blocked` - `required DateTimeOffset UpdatedAt` Timestamp of the most recent update to the paykey. - `Balance Balance` - `required Status Status` - `"pending"Pending` - `"completed"Completed` - `"failed"Failed` - `Int? AccountBalance` Account Balance when last retrieved - `DateTimeOffset? UpdatedAt` Last time account balance was updated. - `BankData BankData` - `required string AccountNumber` Bank account number. This value is masked by default for security reasons. Use the /unmask endpoint to access the unmasked value. - `required AccountType AccountType` - `"checking"Checking` - `"savings"Savings` - `required string RoutingNumber` The routing number of the bank account. - `string? CustomerID` Unique identifier of the related customer object. - `DateTimeOffset? ExpiresAt` Expiration date and time of the paykey, if applicable. - `string? ExternalID` Unique identifier for the paykey in your database, used for cross-referencing between Straddle and your systems. - `string? InstitutionName` Name of the financial institution. - `IReadOnlyDictionary? Metadata` Up to 20 additional user-defined key-value pairs. Useful for storing additional information about the paykey in a structured format. - `StatusDetails StatusDetails` - `required DateTimeOffset ChangedAt` The time the status change occurred. - `required string Message` A human-readable description of the current status. - `required Reason Reason` - `"insufficient_funds"InsufficientFunds` - `"closed_bank_account"ClosedBankAccount` - `"invalid_bank_account"InvalidBankAccount` - `"invalid_routing"InvalidRouting` - `"disputed"Disputed` - `"payment_stopped"PaymentStopped` - `"owner_deceased"OwnerDeceased` - `"frozen_bank_account"FrozenBankAccount` - `"risk_review"RiskReview` - `"fraudulent"Fraudulent` - `"duplicate_entry"DuplicateEntry` - `"invalid_paykey"InvalidPaykey` - `"payment_blocked"PaymentBlocked` - `"amount_too_large"AmountTooLarge` - `"too_many_attempts"TooManyAttempts` - `"internal_system_error"InternalSystemError` - `"user_request"UserRequest` - `"ok"Ok` - `"other_network_return"OtherNetworkReturn` - `"payout_refused"PayoutRefused` - `"cancel_request"CancelRequest` - `"failed_verification"FailedVerification` - `"require_review"RequireReview` - `"blocked_by_system"BlockedBySystem` - `"watchtower_review"WatchtowerReview` - `"validating"Validating` - `"auto_hold"AutoHold` - `required Source Source` - `"watchtower"Watchtower` - `"bank_decline"BankDecline` - `"customer_dispute"CustomerDispute` - `"user_action"UserAction` - `"system"System` - `string? Code` The status code if applicable. - `Boolean? UnblockEligible` Indicates whether this paykey is eligible for client-initiated unblocking. Only present for blocked paykeys. True when blocked due to R29 returns and not previously unblocked, false otherwise. Null when paykey is not blocked. - `required ResponseMetadata Meta` Metadata about the API request, including an identifier and timestamp. - `required string ApiRequestID` Unique identifier for this API request, useful for troubleshooting. - `required DateTimeOffset ApiRequestTimestamp` Timestamp for this API request, useful for troubleshooting. - `required ResponseType ResponseType` Indicates the structure of the returned content. - "object" means the `data` field contains a single JSON object. - "array" means the `data` field contains an array of objects. - "error" means the `data` field contains an error object with details of the issue. - "none" means no data is returned. - `"object"Object` - `"array"Array` - `"error"Error` - `"none"None` # Review ## Update a paykey's status `PaykeyV1 Paykeys.Review.Decision(ReviewDecisionParamsparameters, CancellationTokencancellationToken = default)` **patch** `/v1/paykeys/{id}/review` Update the status of a paykey when in review status ### Parameters - `ReviewDecisionParams parameters` - `required string id` Path param - `required Status status` Body param - `"active"Active` - `"rejected"Rejected` - `string correlationID` Header param: Optional client generated identifier to trace and debug a series of requests. - `string idempotencyKey` Header param: Optional client generated value to use for idempotent requests. - `string requestID` Header param: Optional client generated identifier to trace and debug a request. - `string straddleAccountID` Header param: For use by platforms to specify an account id and set scope of a request. ### Returns - `class PaykeyV1:` - `required Data Data` - `required string ID` Unique identifier for the paykey. - `required Config Config` - `ProcessingMethod ProcessingMethod` - `"inline"Inline` - `"background"Background` - `"skip"Skip` - `SandboxOutcome SandboxOutcome` - `"standard"Standard` - `"active"Active` - `"rejected"Rejected` - `"review"Review` - `required DateTimeOffset CreatedAt` Timestamp of when the paykey was created. - `required string Label` Human-readable label used to represent this paykey in a UI. - `required string Paykey` The tokenized paykey value. This value is used to create payments and should be stored securely. - `required Source Source` - `"bank_account"BankAccount` - `"straddle"Straddle` - `"mx"Mx` - `"plaid"Plaid` - `"tan"Tan` - `"quiltt"Quiltt` - `required Status Status` - `"pending"Pending` - `"active"Active` - `"inactive"Inactive` - `"rejected"Rejected` - `"review"Review` - `"blocked"Blocked` - `required DateTimeOffset UpdatedAt` Timestamp of the most recent update to the paykey. - `Balance Balance` - `required Status Status` - `"pending"Pending` - `"completed"Completed` - `"failed"Failed` - `Int? AccountBalance` Account Balance when last retrieved - `DateTimeOffset? UpdatedAt` Last time account balance was updated. - `BankData BankData` - `required string AccountNumber` Bank account number. This value is masked by default for security reasons. Use the /unmask endpoint to access the unmasked value. - `required AccountType AccountType` - `"checking"Checking` - `"savings"Savings` - `required string RoutingNumber` The routing number of the bank account. - `string? CustomerID` Unique identifier of the related customer object. - `DateTimeOffset? ExpiresAt` Expiration date and time of the paykey, if applicable. - `string? ExternalID` Unique identifier for the paykey in your database, used for cross-referencing between Straddle and your systems. - `string? InstitutionName` Name of the financial institution. - `IReadOnlyDictionary? Metadata` Up to 20 additional user-defined key-value pairs. Useful for storing additional information about the paykey in a structured format. - `StatusDetails StatusDetails` - `required DateTimeOffset ChangedAt` The time the status change occurred. - `required string Message` A human-readable description of the current status. - `required Reason Reason` - `"insufficient_funds"InsufficientFunds` - `"closed_bank_account"ClosedBankAccount` - `"invalid_bank_account"InvalidBankAccount` - `"invalid_routing"InvalidRouting` - `"disputed"Disputed` - `"payment_stopped"PaymentStopped` - `"owner_deceased"OwnerDeceased` - `"frozen_bank_account"FrozenBankAccount` - `"risk_review"RiskReview` - `"fraudulent"Fraudulent` - `"duplicate_entry"DuplicateEntry` - `"invalid_paykey"InvalidPaykey` - `"payment_blocked"PaymentBlocked` - `"amount_too_large"AmountTooLarge` - `"too_many_attempts"TooManyAttempts` - `"internal_system_error"InternalSystemError` - `"user_request"UserRequest` - `"ok"Ok` - `"other_network_return"OtherNetworkReturn` - `"payout_refused"PayoutRefused` - `"cancel_request"CancelRequest` - `"failed_verification"FailedVerification` - `"require_review"RequireReview` - `"blocked_by_system"BlockedBySystem` - `"watchtower_review"WatchtowerReview` - `"validating"Validating` - `"auto_hold"AutoHold` - `required Source Source` - `"watchtower"Watchtower` - `"bank_decline"BankDecline` - `"customer_dispute"CustomerDispute` - `"user_action"UserAction` - `"system"System` - `string? Code` The status code if applicable. - `Boolean? UnblockEligible` Indicates whether this paykey is eligible for client-initiated unblocking. Only present for blocked paykeys. True when blocked due to R29 returns and not previously unblocked, false otherwise. Null when paykey is not blocked. - `required ResponseMetadata Meta` Metadata about the API request, including an identifier and timestamp. - `required string ApiRequestID` Unique identifier for this API request, useful for troubleshooting. - `required DateTimeOffset ApiRequestTimestamp` Timestamp for this API request, useful for troubleshooting. - `required ResponseType ResponseType` Indicates the structure of the returned content. - "object" means the `data` field contains a single JSON object. - "array" means the `data` field contains an array of objects. - "error" means the `data` field contains an error object with details of the issue. - "none" means no data is returned. - `"object"Object` - `"array"Array` - `"error"Error` - `"none"None` ### Example ```csharp ReviewDecisionParams parameters = new() { ID = "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", Status = Status.Active, }; var paykeyV1 = await client.Paykeys.Review.Decision(parameters); Console.WriteLine(paykeyV1); ``` #### Response ```json { "data": { "id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", "config": { "processing_method": "inline", "sandbox_outcome": "standard" }, "created_at": "2019-12-27T18:11:19.117Z", "label": "label", "paykey": "paykey", "source": "bank_account", "status": "pending", "updated_at": "2019-12-27T18:11:19.117Z", "balance": { "status": "pending", "account_balance": 0, "updated_at": "2019-12-27T18:11:19.117Z" }, "bank_data": { "account_number": "****1234", "account_type": "checking", "routing_number": "021000021" }, "customer_id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", "expires_at": "2019-12-27T18:11:19.117Z", "external_id": "external_id", "institution_name": "Bank of America", "metadata": { "foo": "string" }, "status_details": { "changed_at": "2019-12-27T18:11:19.117Z", "message": "Bank account sucesfully validated", "reason": "insufficient_funds", "source": "watchtower", "code": "code" }, "unblock_eligible": true }, "meta": { "api_request_id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", "api_request_timestamp": "2019-12-27T18:11:19.117Z" }, "response_type": "object" } ``` ## Get paykey review details `ReviewGetResponse Paykeys.Review.Get(ReviewGetParamsparameters, CancellationTokencancellationToken = default)` **get** `/v1/paykeys/{id}/review` Get additional details about a paykey. ### Parameters - `ReviewGetParams parameters` - `required string id` - `string correlationID` Optional client generated identifier to trace and debug a series of requests. - `string requestID` Optional client generated identifier to trace and debug a request. - `string straddleAccountID` For use by platforms to specify an account id and set scope of a request. ### Returns - `class ReviewGetResponse:` - `required Data Data` - `required PaykeyDetails PaykeyDetails` - `required string ID` Unique identifier for the paykey. - `required Config Config` - `ProcessingMethod ProcessingMethod` - `"inline"Inline` - `"background"Background` - `"skip"Skip` - `SandboxOutcome SandboxOutcome` - `"standard"Standard` - `"active"Active` - `"rejected"Rejected` - `"review"Review` - `required DateTimeOffset CreatedAt` Timestamp of when the paykey was created. - `required string Label` Human-readable label used to represent this paykey in a UI. - `required string Paykey` The tokenized paykey value. This value is used to create payments and should be stored securely. - `required Source Source` - `"bank_account"BankAccount` - `"straddle"Straddle` - `"mx"Mx` - `"plaid"Plaid` - `"tan"Tan` - `"quiltt"Quiltt` - `required Status Status` - `"pending"Pending` - `"active"Active` - `"inactive"Inactive` - `"rejected"Rejected` - `"review"Review` - `"blocked"Blocked` - `required DateTimeOffset UpdatedAt` Timestamp of the most recent update to the paykey. - `Balance Balance` - `required Status Status` - `"pending"Pending` - `"completed"Completed` - `"failed"Failed` - `Int? AccountBalance` Account Balance when last retrieved - `DateTimeOffset? UpdatedAt` Last time account balance was updated. - `BankData BankData` - `required string AccountNumber` Bank account number. This value is masked by default for security reasons. Use the /unmask endpoint to access the unmasked value. - `required AccountType AccountType` - `"checking"Checking` - `"savings"Savings` - `required string RoutingNumber` The routing number of the bank account. - `string? CustomerID` Unique identifier of the related customer object. - `DateTimeOffset? ExpiresAt` Expiration date and time of the paykey, if applicable. - `string? ExternalID` Unique identifier for the paykey in your database, used for cross-referencing between Straddle and your systems. - `string? InstitutionName` Name of the financial institution. - `IReadOnlyDictionary? Metadata` Up to 20 additional user-defined key-value pairs. Useful for storing additional information about the paykey in a structured format. - `StatusDetails StatusDetails` - `required DateTimeOffset ChangedAt` The time the status change occurred. - `required string Message` A human-readable description of the current status. - `required Reason Reason` - `"insufficient_funds"InsufficientFunds` - `"closed_bank_account"ClosedBankAccount` - `"invalid_bank_account"InvalidBankAccount` - `"invalid_routing"InvalidRouting` - `"disputed"Disputed` - `"payment_stopped"PaymentStopped` - `"owner_deceased"OwnerDeceased` - `"frozen_bank_account"FrozenBankAccount` - `"risk_review"RiskReview` - `"fraudulent"Fraudulent` - `"duplicate_entry"DuplicateEntry` - `"invalid_paykey"InvalidPaykey` - `"payment_blocked"PaymentBlocked` - `"amount_too_large"AmountTooLarge` - `"too_many_attempts"TooManyAttempts` - `"internal_system_error"InternalSystemError` - `"user_request"UserRequest` - `"ok"Ok` - `"other_network_return"OtherNetworkReturn` - `"payout_refused"PayoutRefused` - `"cancel_request"CancelRequest` - `"failed_verification"FailedVerification` - `"require_review"RequireReview` - `"blocked_by_system"BlockedBySystem` - `"watchtower_review"WatchtowerReview` - `"validating"Validating` - `"auto_hold"AutoHold` - `required Source Source` - `"watchtower"Watchtower` - `"bank_decline"BankDecline` - `"customer_dispute"CustomerDispute` - `"user_action"UserAction` - `"system"System` - `string? Code` The status code if applicable. - `Boolean? UnblockEligible` Indicates whether this paykey is eligible for client-initiated unblocking. Only present for blocked paykeys. True when blocked due to R29 returns and not previously unblocked, false otherwise. Null when paykey is not blocked. - `VerificationDetails VerificationDetails` - `required string ID` Unique identifier for the verification details. - `required Breakdown Breakdown` - `AccountValidation AccountValidation` - `required IReadOnlyList Codes` - `required Decision Decision` - `"accept"Accept` - `"reject"Reject` - `"review"Review` - `string? Reason` - `NameMatch NameMatch` - `required IReadOnlyList Codes` - `required Decision Decision` - `"accept"Accept` - `"reject"Reject` - `"review"Review` - `Double? CorrelationScore` - `string? CustomerName` - `string? MatchedName` - `IReadOnlyList? NamesOnAccount` - `string? Reason` - `required DateTimeOffset CreatedAt` Timestamp of when the verification was initiated. - `required Decision Decision` - `"accept"Accept` - `"reject"Reject` - `"review"Review` - `required IReadOnlyDictionary Messages` Dictionary of all messages from the paykey verification process. - `required DateTimeOffset UpdatedAt` Timestamp of the most recent update to the verification details. - `required ResponseMetadata Meta` Metadata about the API request, including an identifier and timestamp. - `required string ApiRequestID` Unique identifier for this API request, useful for troubleshooting. - `required DateTimeOffset ApiRequestTimestamp` Timestamp for this API request, useful for troubleshooting. - `required ResponseType ResponseType` Indicates the structure of the returned content. - "object" means the `data` field contains a single JSON object. - "array" means the `data` field contains an array of objects. - "error" means the `data` field contains an error object with details of the issue. - "none" means no data is returned. - `"object"Object` - `"array"Array` - `"error"Error` - `"none"None` ### Example ```csharp ReviewGetParams parameters = new() { ID = "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e" }; var review = await client.Paykeys.Review.Get(parameters); Console.WriteLine(review); ``` #### Response ```json { "data": { "paykey_details": { "id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", "config": { "processing_method": "inline", "sandbox_outcome": "standard" }, "created_at": "2019-12-27T18:11:19.117Z", "label": "label", "paykey": "paykey", "source": "bank_account", "status": "pending", "updated_at": "2019-12-27T18:11:19.117Z", "balance": { "status": "pending", "account_balance": 0, "updated_at": "2019-12-27T18:11:19.117Z" }, "bank_data": { "account_number": "****1234", "account_type": "checking", "routing_number": "021000021" }, "customer_id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", "expires_at": "2019-12-27T18:11:19.117Z", "external_id": "external_id", "institution_name": "Bank of America", "metadata": { "foo": "string" }, "status_details": { "changed_at": "2019-12-27T18:11:19.117Z", "message": "Bank account sucesfully validated", "reason": "insufficient_funds", "source": "watchtower", "code": "code" }, "unblock_eligible": true }, "verification_details": { "id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", "breakdown": { "account_validation": { "codes": [ "string" ], "decision": "accept", "reason": "reason" }, "name_match": { "codes": [ "string" ], "decision": "accept", "correlation_score": 0, "customer_name": "customer_name", "matched_name": "matched_name", "names_on_account": [ "string" ], "reason": "reason" } }, "created_at": "2019-12-27T18:11:19.117Z", "decision": "accept", "messages": { "foo": "string" }, "updated_at": "2019-12-27T18:11:19.117Z" } }, "meta": { "api_request_id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", "api_request_timestamp": "2019-12-27T18:11:19.117Z" }, "response_type": "object" } ``` ## Update a paykey's identity review decision `PaykeyV1 Paykeys.Review.RefreshReview(ReviewRefreshReviewParamsparameters, CancellationTokencancellationToken = default)` **put** `/v1/paykeys/{id}/refresh_review` Updates the decision of a paykey's review validation. This endpoint allows you to refresh the outcome of a paykey's decision and is useful for correcting or updating the status of a paykey's verification. ### Parameters - `ReviewRefreshReviewParams parameters` - `required string id` - `string correlationID` Optional client generated identifier to trace and debug a series of requests. - `string idempotencyKey` Optional client generated value to use for idempotent requests. - `string requestID` Optional client generated identifier to trace and debug a request. - `string straddleAccountID` For use by platforms to specify an account id and set scope of a request. ### Returns - `class PaykeyV1:` - `required Data Data` - `required string ID` Unique identifier for the paykey. - `required Config Config` - `ProcessingMethod ProcessingMethod` - `"inline"Inline` - `"background"Background` - `"skip"Skip` - `SandboxOutcome SandboxOutcome` - `"standard"Standard` - `"active"Active` - `"rejected"Rejected` - `"review"Review` - `required DateTimeOffset CreatedAt` Timestamp of when the paykey was created. - `required string Label` Human-readable label used to represent this paykey in a UI. - `required string Paykey` The tokenized paykey value. This value is used to create payments and should be stored securely. - `required Source Source` - `"bank_account"BankAccount` - `"straddle"Straddle` - `"mx"Mx` - `"plaid"Plaid` - `"tan"Tan` - `"quiltt"Quiltt` - `required Status Status` - `"pending"Pending` - `"active"Active` - `"inactive"Inactive` - `"rejected"Rejected` - `"review"Review` - `"blocked"Blocked` - `required DateTimeOffset UpdatedAt` Timestamp of the most recent update to the paykey. - `Balance Balance` - `required Status Status` - `"pending"Pending` - `"completed"Completed` - `"failed"Failed` - `Int? AccountBalance` Account Balance when last retrieved - `DateTimeOffset? UpdatedAt` Last time account balance was updated. - `BankData BankData` - `required string AccountNumber` Bank account number. This value is masked by default for security reasons. Use the /unmask endpoint to access the unmasked value. - `required AccountType AccountType` - `"checking"Checking` - `"savings"Savings` - `required string RoutingNumber` The routing number of the bank account. - `string? CustomerID` Unique identifier of the related customer object. - `DateTimeOffset? ExpiresAt` Expiration date and time of the paykey, if applicable. - `string? ExternalID` Unique identifier for the paykey in your database, used for cross-referencing between Straddle and your systems. - `string? InstitutionName` Name of the financial institution. - `IReadOnlyDictionary? Metadata` Up to 20 additional user-defined key-value pairs. Useful for storing additional information about the paykey in a structured format. - `StatusDetails StatusDetails` - `required DateTimeOffset ChangedAt` The time the status change occurred. - `required string Message` A human-readable description of the current status. - `required Reason Reason` - `"insufficient_funds"InsufficientFunds` - `"closed_bank_account"ClosedBankAccount` - `"invalid_bank_account"InvalidBankAccount` - `"invalid_routing"InvalidRouting` - `"disputed"Disputed` - `"payment_stopped"PaymentStopped` - `"owner_deceased"OwnerDeceased` - `"frozen_bank_account"FrozenBankAccount` - `"risk_review"RiskReview` - `"fraudulent"Fraudulent` - `"duplicate_entry"DuplicateEntry` - `"invalid_paykey"InvalidPaykey` - `"payment_blocked"PaymentBlocked` - `"amount_too_large"AmountTooLarge` - `"too_many_attempts"TooManyAttempts` - `"internal_system_error"InternalSystemError` - `"user_request"UserRequest` - `"ok"Ok` - `"other_network_return"OtherNetworkReturn` - `"payout_refused"PayoutRefused` - `"cancel_request"CancelRequest` - `"failed_verification"FailedVerification` - `"require_review"RequireReview` - `"blocked_by_system"BlockedBySystem` - `"watchtower_review"WatchtowerReview` - `"validating"Validating` - `"auto_hold"AutoHold` - `required Source Source` - `"watchtower"Watchtower` - `"bank_decline"BankDecline` - `"customer_dispute"CustomerDispute` - `"user_action"UserAction` - `"system"System` - `string? Code` The status code if applicable. - `Boolean? UnblockEligible` Indicates whether this paykey is eligible for client-initiated unblocking. Only present for blocked paykeys. True when blocked due to R29 returns and not previously unblocked, false otherwise. Null when paykey is not blocked. - `required ResponseMetadata Meta` Metadata about the API request, including an identifier and timestamp. - `required string ApiRequestID` Unique identifier for this API request, useful for troubleshooting. - `required DateTimeOffset ApiRequestTimestamp` Timestamp for this API request, useful for troubleshooting. - `required ResponseType ResponseType` Indicates the structure of the returned content. - "object" means the `data` field contains a single JSON object. - "array" means the `data` field contains an array of objects. - "error" means the `data` field contains an error object with details of the issue. - "none" means no data is returned. - `"object"Object` - `"array"Array` - `"error"Error` - `"none"None` ### Example ```csharp ReviewRefreshReviewParams parameters = new() { ID = "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e" }; var paykeyV1 = await client.Paykeys.Review.RefreshReview(parameters); Console.WriteLine(paykeyV1); ``` #### Response ```json { "data": { "id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", "config": { "processing_method": "inline", "sandbox_outcome": "standard" }, "created_at": "2019-12-27T18:11:19.117Z", "label": "label", "paykey": "paykey", "source": "bank_account", "status": "pending", "updated_at": "2019-12-27T18:11:19.117Z", "balance": { "status": "pending", "account_balance": 0, "updated_at": "2019-12-27T18:11:19.117Z" }, "bank_data": { "account_number": "****1234", "account_type": "checking", "routing_number": "021000021" }, "customer_id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", "expires_at": "2019-12-27T18:11:19.117Z", "external_id": "external_id", "institution_name": "Bank of America", "metadata": { "foo": "string" }, "status_details": { "changed_at": "2019-12-27T18:11:19.117Z", "message": "Bank account sucesfully validated", "reason": "insufficient_funds", "source": "watchtower", "code": "code" }, "unblock_eligible": true }, "meta": { "api_request_id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", "api_request_timestamp": "2019-12-27T18:11:19.117Z" }, "response_type": "object" } ```