# Paykeys ## Lookup a paykey `$ straddle paykeys get` **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 - `--id: string` - `--correlation-id: optional string` Optional client generated identifier to trace and debug a series of requests. - `--request-id: optional string` Optional client generated identifier to trace and debug a request. - `--straddle-account-id: optional string` For use by platforms to specify an account id and set scope of a request. ### Returns - `paykeyV1: object { data, meta, response_type }` - `data: object { id, config, created_at, 14 more }` - `id: string` Unique identifier for the paykey. - `config: object { processing_method, sandbox_outcome }` - `processing_method: optional "inline" or "background" or "skip"` - `"inline"` - `"background"` - `"skip"` - `sandbox_outcome: optional "standard" or "active" or "rejected" or "review"` - `"standard"` - `"active"` - `"rejected"` - `"review"` - `created_at: string` Timestamp of when the paykey was created. - `label: string` Human-readable label used to represent this paykey in a UI. - `paykey: string` The tokenized paykey value. This value is used to create payments and should be stored securely. - `source: "bank_account" or "straddle" or "mx" or 3 more` - `"bank_account"` - `"straddle"` - `"mx"` - `"plaid"` - `"tan"` - `"quiltt"` - `status: "pending" or "active" or "inactive" or 3 more` - `"pending"` - `"active"` - `"inactive"` - `"rejected"` - `"review"` - `"blocked"` - `updated_at: string` Timestamp of the most recent update to the paykey. - `balance: optional object { status, account_balance, updated_at }` - `status: "pending" or "completed" or "failed"` - `"pending"` - `"completed"` - `"failed"` - `account_balance: optional number` Account Balance when last retrieved - `updated_at: optional string` Last time account balance was updated. - `bank_data: optional object { account_number, account_type, routing_number }` - `account_number: string` Bank account number. This value is masked by default for security reasons. Use the /unmask endpoint to access the unmasked value. - `account_type: "checking" or "savings"` - `"checking"` - `"savings"` - `routing_number: string` The routing number of the bank account. - `customer_id: optional string` Unique identifier of the related customer object. - `expires_at: optional string` Expiration date and time of the paykey, if applicable. - `external_id: optional string` Unique identifier for the paykey in your database, used for cross-referencing between Straddle and your systems. - `institution_name: optional string` Name of the financial institution. - `metadata: optional map[string]` Up to 20 additional user-defined key-value pairs. Useful for storing additional information about the paykey in a structured format. - `status_details: optional object { changed_at, message, reason, 2 more }` - `changed_at: string` The time the status change occurred. - `message: string` A human-readable description of the current status. - `reason: "insufficient_funds" or "closed_bank_account" or "invalid_bank_account" or 24 more` - `"insufficient_funds"` - `"closed_bank_account"` - `"invalid_bank_account"` - `"invalid_routing"` - `"disputed"` - `"payment_stopped"` - `"owner_deceased"` - `"frozen_bank_account"` - `"risk_review"` - `"fraudulent"` - `"duplicate_entry"` - `"invalid_paykey"` - `"payment_blocked"` - `"amount_too_large"` - `"too_many_attempts"` - `"internal_system_error"` - `"user_request"` - `"ok"` - `"other_network_return"` - `"payout_refused"` - `"cancel_request"` - `"failed_verification"` - `"require_review"` - `"blocked_by_system"` - `"watchtower_review"` - `"validating"` - `"auto_hold"` - `source: "watchtower" or "bank_decline" or "customer_dispute" or 2 more` - `"watchtower"` - `"bank_decline"` - `"customer_dispute"` - `"user_action"` - `"system"` - `code: optional string` The status code if applicable. - `unblock_eligible: optional boolean` 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. - `meta: object { api_request_id, api_request_timestamp }` Metadata about the API request, including an identifier and timestamp. - `api_request_id: string` Unique identifier for this API request, useful for troubleshooting. - `api_request_timestamp: string` Timestamp for this API request, useful for troubleshooting. - `response_type: "object" or "array" or "error" or "none"` 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"` - `"array"` - `"error"` - `"none"` ### Example ```cli straddle paykeys get \ --api-key 'My API Key' \ --id 182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e ``` #### 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 `$ straddle paykeys unmasked` **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 - `--id: string` - `--correlation-id: optional string` Optional client generated identifier to trace and debug a series of requests. - `--request-id: optional string` Optional client generated identifier to trace and debug a request. - `--straddle-account-id: optional string` For use by platforms to specify an account id and set scope of a request. ### Returns - `paykeyUnmaskedV1: object { data, meta, response_type }` - `data: object { id, config, created_at, 13 more }` - `id: string` Unique identifier for the paykey. - `config: object { processing_method, sandbox_outcome }` - `processing_method: optional "inline" or "background" or "skip"` - `"inline"` - `"background"` - `"skip"` - `sandbox_outcome: optional "standard" or "active" or "rejected" or "review"` - `"standard"` - `"active"` - `"rejected"` - `"review"` - `created_at: string` Timestamp of when the paykey was created. - `label: string` Human-readable label used to represent this paykey in a UI. - `paykey: string` The tokenized paykey value. This value is used to create payments and should be stored securely. - `source: "bank_account" or "straddle" or "mx" or 3 more` - `"bank_account"` - `"straddle"` - `"mx"` - `"plaid"` - `"tan"` - `"quiltt"` - `status: "pending" or "active" or "inactive" or 3 more` - `"pending"` - `"active"` - `"inactive"` - `"rejected"` - `"review"` - `"blocked"` - `updated_at: string` Timestamp of the most recent update to the paykey. - `balance: optional object { status, account_balance, updated_at }` - `status: "pending" or "completed" or "failed"` - `"pending"` - `"completed"` - `"failed"` - `account_balance: optional number` Account Balance when last retrieved - `updated_at: optional string` Last time account balance was updated. - `bank_data: optional object { account_number, account_type, routing_number }` - `account_number: string` The bank account number - `account_type: "checking" or "savings"` - `"checking"` - `"savings"` - `routing_number: string` The routing number of the bank account. - `customer_id: optional string` Unique identifier of the related customer object. - `expires_at: optional string` Expiration date and time of the paykey, if applicable. - `external_id: optional string` Unique identifier for the paykey in your database, used for cross-referencing between Straddle and your systems. - `institution_name: optional string` Name of the financial institution. - `metadata: optional map[string]` Up to 20 additional user-defined key-value pairs. Useful for storing additional information about the paykey in a structured format. - `status_details: optional object { changed_at, message, reason, 2 more }` - `changed_at: string` The time the status change occurred. - `message: string` A human-readable description of the current status. - `reason: "insufficient_funds" or "closed_bank_account" or "invalid_bank_account" or 24 more` - `"insufficient_funds"` - `"closed_bank_account"` - `"invalid_bank_account"` - `"invalid_routing"` - `"disputed"` - `"payment_stopped"` - `"owner_deceased"` - `"frozen_bank_account"` - `"risk_review"` - `"fraudulent"` - `"duplicate_entry"` - `"invalid_paykey"` - `"payment_blocked"` - `"amount_too_large"` - `"too_many_attempts"` - `"internal_system_error"` - `"user_request"` - `"ok"` - `"other_network_return"` - `"payout_refused"` - `"cancel_request"` - `"failed_verification"` - `"require_review"` - `"blocked_by_system"` - `"watchtower_review"` - `"validating"` - `"auto_hold"` - `source: "watchtower" or "bank_decline" or "customer_dispute" or 2 more` - `"watchtower"` - `"bank_decline"` - `"customer_dispute"` - `"user_action"` - `"system"` - `code: optional string` The status code if applicable. - `meta: object { api_request_id, api_request_timestamp }` Metadata about the API request, including an identifier and timestamp. - `api_request_id: string` Unique identifier for this API request, useful for troubleshooting. - `api_request_timestamp: string` Timestamp for this API request, useful for troubleshooting. - `response_type: "object" or "array" or "error" or "none"` 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"` - `"array"` - `"error"` - `"none"` ### Example ```cli straddle paykeys unmasked \ --api-key 'My API Key' \ --id 182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e ``` #### 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 `$ straddle paykeys list` **get** `/v1/paykeys` Returns a list of paykeys associated with a Straddle account. This endpoint supports advanced sorting and filtering options. ### Parameters - `--created-from: optional string` Query param: Start date for filtering by creation date. - `--created-to: optional string` Query param: End date for filtering by creation date. - `--customer-id: optional string` Query param: Filter paykeys by related customer ID. - `--page-number: optional number` Query param: Page number for paginated results. Starts at 1. - `--page-size: optional number` Query param: Number of results per page. Maximum: 1000. - `--search-text: optional string` Query param: General search term to filter paykeys. - `--sort-by: optional "institution_name" or "expires_at" or "created_at"` Query param - `--sort-order: optional "asc" or "desc"` Query param - `--source: optional array of "bank_account" or "straddle" or "mx" or 3 more` Query param: Filter paykeys by their source. - `--status: optional array of "pending" or "active" or "inactive" or 3 more` Query param: Filter paykeys by their current status. - `--unblock-eligible: optional boolean` 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. - `--correlation-id: optional string` Header param: Optional client generated identifier to trace and debug a series of requests. - `--request-id: optional string` Header param: Optional client generated identifier to trace and debug a request. - `--straddle-account-id: optional string` Header param: For use by platforms to specify an account id and set scope of a request. ### Returns - `paykeySummaryPagedV1: object { data, meta, response_type }` - `data: array of object { id, config, created_at, 12 more }` - `id: string` Unique identifier for the paykey. - `config: object { processing_method, sandbox_outcome }` - `processing_method: optional "inline" or "background" or "skip"` - `"inline"` - `"background"` - `"skip"` - `sandbox_outcome: optional "standard" or "active" or "rejected" or "review"` - `"standard"` - `"active"` - `"rejected"` - `"review"` - `created_at: string` Timestamp of when the paykey was created. - `label: string` Human-readable label that combines the bank name and masked account number to help easility represent this paykey in a UI - `paykey: string` The tokenized paykey value. This value is used to create payments and should be stored securely. - `source: "bank_account" or "straddle" or "mx" or 3 more` - `"bank_account"` - `"straddle"` - `"mx"` - `"plaid"` - `"tan"` - `"quiltt"` - `status: "pending" or "active" or "inactive" or 3 more` - `"pending"` - `"active"` - `"inactive"` - `"rejected"` - `"review"` - `"blocked"` - `updated_at: string` Timestamp of the most recent update to the paykey. - `bank_data: optional object { account_number, account_type, routing_number }` - `account_number: string` Bank account number. This value is masked by default for security reasons. Use the /unmask endpoint to access the unmasked value. - `account_type: "checking" or "savings"` - `"checking"` - `"savings"` - `routing_number: string` The routing number of the bank account. - `customer_id: optional string` Unique identifier of the related customer object. - `expires_at: optional string` Expiration date and time of the paykey, if applicable. - `external_id: optional string` Unique identifier for the paykey in your database, used for cross-referencing between Straddle and your systems. - `institution_name: optional string` Name of the financial institution. - `status_details: optional object { changed_at, message, reason, 2 more }` - `changed_at: string` The time the status change occurred. - `message: string` A human-readable description of the current status. - `reason: "insufficient_funds" or "closed_bank_account" or "invalid_bank_account" or 24 more` - `"insufficient_funds"` - `"closed_bank_account"` - `"invalid_bank_account"` - `"invalid_routing"` - `"disputed"` - `"payment_stopped"` - `"owner_deceased"` - `"frozen_bank_account"` - `"risk_review"` - `"fraudulent"` - `"duplicate_entry"` - `"invalid_paykey"` - `"payment_blocked"` - `"amount_too_large"` - `"too_many_attempts"` - `"internal_system_error"` - `"user_request"` - `"ok"` - `"other_network_return"` - `"payout_refused"` - `"cancel_request"` - `"failed_verification"` - `"require_review"` - `"blocked_by_system"` - `"watchtower_review"` - `"validating"` - `"auto_hold"` - `source: "watchtower" or "bank_decline" or "customer_dispute" or 2 more` - `"watchtower"` - `"bank_decline"` - `"customer_dispute"` - `"user_action"` - `"system"` - `code: optional string` The status code if applicable. - `unblock_eligible: optional boolean` 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. - `meta: object { api_request_id, api_request_timestamp, max_page_size, 6 more }` - `api_request_id: string` Unique identifier for this API request, useful for troubleshooting. - `api_request_timestamp: string` Timestamp for this API request, useful for troubleshooting. - `max_page_size: number` Maximum allowed page size for this endpoint. - `page_number: number` Page number for paginated results. - `page_size: number` Number of items per page in this response. - `sort_by: string` The field that the results were sorted by. - `sort_order: "asc" or "desc"` - `"asc"` - `"desc"` - `total_items: number` - `total_pages: number` The number of pages available. - `response_type: "object" or "array" or "error" or "none"` 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"` - `"array"` - `"error"` - `"none"` ### Example ```cli straddle paykeys list \ --api-key 'My API Key' ``` #### 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 `$ straddle paykeys reveal` **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 - `--id: string` - `--correlation-id: optional string` Optional client generated identifier to trace and debug a series of requests. - `--request-id: optional string` Optional client generated identifier to trace and debug a request. - `--straddle-account-id: optional string` For use by platforms to specify an account id and set scope of a request. ### Returns - `PaykeyRevealResponse: object { data, meta, response_type }` - `data: object { id, config, created_at, 13 more }` - `id: string` Unique identifier for the paykey. - `config: object { processing_method, sandbox_outcome }` - `processing_method: optional "inline" or "background" or "skip"` - `"inline"` - `"background"` - `"skip"` - `sandbox_outcome: optional "standard" or "active" or "rejected" or "review"` - `"standard"` - `"active"` - `"rejected"` - `"review"` - `created_at: string` Timestamp of when the paykey was created. - `label: string` Human-readable label that combines the bank name and masked account number to help easility represent this paykey in a UI - `paykey: string` The tokenized paykey value. This token is used to create payments and should be stored securely. - `source: "bank_account" or "straddle" or "mx" or 3 more` - `"bank_account"` - `"straddle"` - `"mx"` - `"plaid"` - `"tan"` - `"quiltt"` - `status: "pending" or "active" or "inactive" or 3 more` - `"pending"` - `"active"` - `"inactive"` - `"rejected"` - `"review"` - `"blocked"` - `updated_at: string` Timestamp of the most recent update to the paykey. - `balance: optional object { status, account_balance, updated_at }` - `status: "pending" or "completed" or "failed"` - `"pending"` - `"completed"` - `"failed"` - `account_balance: optional number` Account Balance when last retrieved - `updated_at: optional string` Last time account balance was updated. - `bank_data: optional object { account_number, account_type, routing_number }` - `account_number: string` Bank account number. This value is masked by default for security reasons. Use the /unmask endpoint to access the unmasked value. - `account_type: "checking" or "savings"` - `"checking"` - `"savings"` - `routing_number: string` The routing number of the bank account. - `customer_id: optional string` Unique identifier of the related customer object. - `expires_at: optional string` Expiration date and time of the paykey, if applicable. - `external_id: optional string` Unique identifier for the paykey in your database, used for cross-referencing between Straddle and your systems. - `institution_name: optional string` Name of the financial institution. - `metadata: optional map[string]` Up to 20 additional user-defined key-value pairs. Useful for storing additional information about the paykey in a structured format. - `status_details: optional object { changed_at, message, reason, 2 more }` - `changed_at: string` The time the status change occurred. - `message: string` A human-readable description of the current status. - `reason: "insufficient_funds" or "closed_bank_account" or "invalid_bank_account" or 24 more` - `"insufficient_funds"` - `"closed_bank_account"` - `"invalid_bank_account"` - `"invalid_routing"` - `"disputed"` - `"payment_stopped"` - `"owner_deceased"` - `"frozen_bank_account"` - `"risk_review"` - `"fraudulent"` - `"duplicate_entry"` - `"invalid_paykey"` - `"payment_blocked"` - `"amount_too_large"` - `"too_many_attempts"` - `"internal_system_error"` - `"user_request"` - `"ok"` - `"other_network_return"` - `"payout_refused"` - `"cancel_request"` - `"failed_verification"` - `"require_review"` - `"blocked_by_system"` - `"watchtower_review"` - `"validating"` - `"auto_hold"` - `source: "watchtower" or "bank_decline" or "customer_dispute" or 2 more` - `"watchtower"` - `"bank_decline"` - `"customer_dispute"` - `"user_action"` - `"system"` - `code: optional string` The status code if applicable. - `meta: object { api_request_id, api_request_timestamp }` Metadata about the API request, including an identifier and timestamp. - `api_request_id: string` Unique identifier for this API request, useful for troubleshooting. - `api_request_timestamp: string` Timestamp for this API request, useful for troubleshooting. - `response_type: "object" or "array" or "error" or "none"` 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"` - `"array"` - `"error"` - `"none"` ### Example ```cli straddle paykeys reveal \ --api-key 'My API Key' \ --id 182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e ``` #### 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 `$ straddle paykeys cancel` **put** `/v1/paykeys/{id}/cancel` ### Parameters - `--id: string` Path param - `--reason: optional string` Body param - `--correlation-id: optional string` Header param: Optional client generated identifier to trace and debug a series of requests. - `--idempotency-key: optional string` Header param: Optional client generated value to use for idempotent requests. - `--request-id: optional string` Header param: Optional client generated identifier to trace and debug a request. - `--straddle-account-id: optional string` Header param: For use by platforms to specify an account id and set scope of a request. ### Returns - `paykeyV1: object { data, meta, response_type }` - `data: object { id, config, created_at, 14 more }` - `id: string` Unique identifier for the paykey. - `config: object { processing_method, sandbox_outcome }` - `processing_method: optional "inline" or "background" or "skip"` - `"inline"` - `"background"` - `"skip"` - `sandbox_outcome: optional "standard" or "active" or "rejected" or "review"` - `"standard"` - `"active"` - `"rejected"` - `"review"` - `created_at: string` Timestamp of when the paykey was created. - `label: string` Human-readable label used to represent this paykey in a UI. - `paykey: string` The tokenized paykey value. This value is used to create payments and should be stored securely. - `source: "bank_account" or "straddle" or "mx" or 3 more` - `"bank_account"` - `"straddle"` - `"mx"` - `"plaid"` - `"tan"` - `"quiltt"` - `status: "pending" or "active" or "inactive" or 3 more` - `"pending"` - `"active"` - `"inactive"` - `"rejected"` - `"review"` - `"blocked"` - `updated_at: string` Timestamp of the most recent update to the paykey. - `balance: optional object { status, account_balance, updated_at }` - `status: "pending" or "completed" or "failed"` - `"pending"` - `"completed"` - `"failed"` - `account_balance: optional number` Account Balance when last retrieved - `updated_at: optional string` Last time account balance was updated. - `bank_data: optional object { account_number, account_type, routing_number }` - `account_number: string` Bank account number. This value is masked by default for security reasons. Use the /unmask endpoint to access the unmasked value. - `account_type: "checking" or "savings"` - `"checking"` - `"savings"` - `routing_number: string` The routing number of the bank account. - `customer_id: optional string` Unique identifier of the related customer object. - `expires_at: optional string` Expiration date and time of the paykey, if applicable. - `external_id: optional string` Unique identifier for the paykey in your database, used for cross-referencing between Straddle and your systems. - `institution_name: optional string` Name of the financial institution. - `metadata: optional map[string]` Up to 20 additional user-defined key-value pairs. Useful for storing additional information about the paykey in a structured format. - `status_details: optional object { changed_at, message, reason, 2 more }` - `changed_at: string` The time the status change occurred. - `message: string` A human-readable description of the current status. - `reason: "insufficient_funds" or "closed_bank_account" or "invalid_bank_account" or 24 more` - `"insufficient_funds"` - `"closed_bank_account"` - `"invalid_bank_account"` - `"invalid_routing"` - `"disputed"` - `"payment_stopped"` - `"owner_deceased"` - `"frozen_bank_account"` - `"risk_review"` - `"fraudulent"` - `"duplicate_entry"` - `"invalid_paykey"` - `"payment_blocked"` - `"amount_too_large"` - `"too_many_attempts"` - `"internal_system_error"` - `"user_request"` - `"ok"` - `"other_network_return"` - `"payout_refused"` - `"cancel_request"` - `"failed_verification"` - `"require_review"` - `"blocked_by_system"` - `"watchtower_review"` - `"validating"` - `"auto_hold"` - `source: "watchtower" or "bank_decline" or "customer_dispute" or 2 more` - `"watchtower"` - `"bank_decline"` - `"customer_dispute"` - `"user_action"` - `"system"` - `code: optional string` The status code if applicable. - `unblock_eligible: optional boolean` 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. - `meta: object { api_request_id, api_request_timestamp }` Metadata about the API request, including an identifier and timestamp. - `api_request_id: string` Unique identifier for this API request, useful for troubleshooting. - `api_request_timestamp: string` Timestamp for this API request, useful for troubleshooting. - `response_type: "object" or "array" or "error" or "none"` 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"` - `"array"` - `"error"` - `"none"` ### Example ```cli straddle paykeys cancel \ --api-key 'My API Key' \ --id 182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e ``` #### 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 `$ straddle paykeys update-balance` **put** `/v1/paykeys/{id}/refresh_balance` Updates the balance of a paykey. This endpoint allows you to refresh the balance of a paykey. ### Parameters - `--id: string` - `--correlation-id: optional string` Optional client generated identifier to trace and debug a series of requests. - `--idempotency-key: optional string` Optional client generated value to use for idempotent requests. - `--request-id: optional string` Optional client generated identifier to trace and debug a request. - `--straddle-account-id: optional string` For use by platforms to specify an account id and set scope of a request. ### Returns - `paykeyV1: object { data, meta, response_type }` - `data: object { id, config, created_at, 14 more }` - `id: string` Unique identifier for the paykey. - `config: object { processing_method, sandbox_outcome }` - `processing_method: optional "inline" or "background" or "skip"` - `"inline"` - `"background"` - `"skip"` - `sandbox_outcome: optional "standard" or "active" or "rejected" or "review"` - `"standard"` - `"active"` - `"rejected"` - `"review"` - `created_at: string` Timestamp of when the paykey was created. - `label: string` Human-readable label used to represent this paykey in a UI. - `paykey: string` The tokenized paykey value. This value is used to create payments and should be stored securely. - `source: "bank_account" or "straddle" or "mx" or 3 more` - `"bank_account"` - `"straddle"` - `"mx"` - `"plaid"` - `"tan"` - `"quiltt"` - `status: "pending" or "active" or "inactive" or 3 more` - `"pending"` - `"active"` - `"inactive"` - `"rejected"` - `"review"` - `"blocked"` - `updated_at: string` Timestamp of the most recent update to the paykey. - `balance: optional object { status, account_balance, updated_at }` - `status: "pending" or "completed" or "failed"` - `"pending"` - `"completed"` - `"failed"` - `account_balance: optional number` Account Balance when last retrieved - `updated_at: optional string` Last time account balance was updated. - `bank_data: optional object { account_number, account_type, routing_number }` - `account_number: string` Bank account number. This value is masked by default for security reasons. Use the /unmask endpoint to access the unmasked value. - `account_type: "checking" or "savings"` - `"checking"` - `"savings"` - `routing_number: string` The routing number of the bank account. - `customer_id: optional string` Unique identifier of the related customer object. - `expires_at: optional string` Expiration date and time of the paykey, if applicable. - `external_id: optional string` Unique identifier for the paykey in your database, used for cross-referencing between Straddle and your systems. - `institution_name: optional string` Name of the financial institution. - `metadata: optional map[string]` Up to 20 additional user-defined key-value pairs. Useful for storing additional information about the paykey in a structured format. - `status_details: optional object { changed_at, message, reason, 2 more }` - `changed_at: string` The time the status change occurred. - `message: string` A human-readable description of the current status. - `reason: "insufficient_funds" or "closed_bank_account" or "invalid_bank_account" or 24 more` - `"insufficient_funds"` - `"closed_bank_account"` - `"invalid_bank_account"` - `"invalid_routing"` - `"disputed"` - `"payment_stopped"` - `"owner_deceased"` - `"frozen_bank_account"` - `"risk_review"` - `"fraudulent"` - `"duplicate_entry"` - `"invalid_paykey"` - `"payment_blocked"` - `"amount_too_large"` - `"too_many_attempts"` - `"internal_system_error"` - `"user_request"` - `"ok"` - `"other_network_return"` - `"payout_refused"` - `"cancel_request"` - `"failed_verification"` - `"require_review"` - `"blocked_by_system"` - `"watchtower_review"` - `"validating"` - `"auto_hold"` - `source: "watchtower" or "bank_decline" or "customer_dispute" or 2 more` - `"watchtower"` - `"bank_decline"` - `"customer_dispute"` - `"user_action"` - `"system"` - `code: optional string` The status code if applicable. - `unblock_eligible: optional boolean` 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. - `meta: object { api_request_id, api_request_timestamp }` Metadata about the API request, including an identifier and timestamp. - `api_request_id: string` Unique identifier for this API request, useful for troubleshooting. - `api_request_timestamp: string` Timestamp for this API request, useful for troubleshooting. - `response_type: "object" or "array" or "error" or "none"` 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"` - `"array"` - `"error"` - `"none"` ### Example ```cli straddle paykeys update-balance \ --api-key 'My API Key' \ --id 182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e ``` #### 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 - `paykeySummaryPagedV1: object { data, meta, response_type }` - `data: array of object { id, config, created_at, 12 more }` - `id: string` Unique identifier for the paykey. - `config: object { processing_method, sandbox_outcome }` - `processing_method: optional "inline" or "background" or "skip"` - `"inline"` - `"background"` - `"skip"` - `sandbox_outcome: optional "standard" or "active" or "rejected" or "review"` - `"standard"` - `"active"` - `"rejected"` - `"review"` - `created_at: string` Timestamp of when the paykey was created. - `label: string` Human-readable label that combines the bank name and masked account number to help easility represent this paykey in a UI - `paykey: string` The tokenized paykey value. This value is used to create payments and should be stored securely. - `source: "bank_account" or "straddle" or "mx" or 3 more` - `"bank_account"` - `"straddle"` - `"mx"` - `"plaid"` - `"tan"` - `"quiltt"` - `status: "pending" or "active" or "inactive" or 3 more` - `"pending"` - `"active"` - `"inactive"` - `"rejected"` - `"review"` - `"blocked"` - `updated_at: string` Timestamp of the most recent update to the paykey. - `bank_data: optional object { account_number, account_type, routing_number }` - `account_number: string` Bank account number. This value is masked by default for security reasons. Use the /unmask endpoint to access the unmasked value. - `account_type: "checking" or "savings"` - `"checking"` - `"savings"` - `routing_number: string` The routing number of the bank account. - `customer_id: optional string` Unique identifier of the related customer object. - `expires_at: optional string` Expiration date and time of the paykey, if applicable. - `external_id: optional string` Unique identifier for the paykey in your database, used for cross-referencing between Straddle and your systems. - `institution_name: optional string` Name of the financial institution. - `status_details: optional object { changed_at, message, reason, 2 more }` - `changed_at: string` The time the status change occurred. - `message: string` A human-readable description of the current status. - `reason: "insufficient_funds" or "closed_bank_account" or "invalid_bank_account" or 24 more` - `"insufficient_funds"` - `"closed_bank_account"` - `"invalid_bank_account"` - `"invalid_routing"` - `"disputed"` - `"payment_stopped"` - `"owner_deceased"` - `"frozen_bank_account"` - `"risk_review"` - `"fraudulent"` - `"duplicate_entry"` - `"invalid_paykey"` - `"payment_blocked"` - `"amount_too_large"` - `"too_many_attempts"` - `"internal_system_error"` - `"user_request"` - `"ok"` - `"other_network_return"` - `"payout_refused"` - `"cancel_request"` - `"failed_verification"` - `"require_review"` - `"blocked_by_system"` - `"watchtower_review"` - `"validating"` - `"auto_hold"` - `source: "watchtower" or "bank_decline" or "customer_dispute" or 2 more` - `"watchtower"` - `"bank_decline"` - `"customer_dispute"` - `"user_action"` - `"system"` - `code: optional string` The status code if applicable. - `unblock_eligible: optional boolean` 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. - `meta: object { api_request_id, api_request_timestamp, max_page_size, 6 more }` - `api_request_id: string` Unique identifier for this API request, useful for troubleshooting. - `api_request_timestamp: string` Timestamp for this API request, useful for troubleshooting. - `max_page_size: number` Maximum allowed page size for this endpoint. - `page_number: number` Page number for paginated results. - `page_size: number` Number of items per page in this response. - `sort_by: string` The field that the results were sorted by. - `sort_order: "asc" or "desc"` - `"asc"` - `"desc"` - `total_items: number` - `total_pages: number` The number of pages available. - `response_type: "object" or "array" or "error" or "none"` 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"` - `"array"` - `"error"` - `"none"` ### Paykey Unmasked V1 - `paykeyUnmaskedV1: object { data, meta, response_type }` - `data: object { id, config, created_at, 13 more }` - `id: string` Unique identifier for the paykey. - `config: object { processing_method, sandbox_outcome }` - `processing_method: optional "inline" or "background" or "skip"` - `"inline"` - `"background"` - `"skip"` - `sandbox_outcome: optional "standard" or "active" or "rejected" or "review"` - `"standard"` - `"active"` - `"rejected"` - `"review"` - `created_at: string` Timestamp of when the paykey was created. - `label: string` Human-readable label used to represent this paykey in a UI. - `paykey: string` The tokenized paykey value. This value is used to create payments and should be stored securely. - `source: "bank_account" or "straddle" or "mx" or 3 more` - `"bank_account"` - `"straddle"` - `"mx"` - `"plaid"` - `"tan"` - `"quiltt"` - `status: "pending" or "active" or "inactive" or 3 more` - `"pending"` - `"active"` - `"inactive"` - `"rejected"` - `"review"` - `"blocked"` - `updated_at: string` Timestamp of the most recent update to the paykey. - `balance: optional object { status, account_balance, updated_at }` - `status: "pending" or "completed" or "failed"` - `"pending"` - `"completed"` - `"failed"` - `account_balance: optional number` Account Balance when last retrieved - `updated_at: optional string` Last time account balance was updated. - `bank_data: optional object { account_number, account_type, routing_number }` - `account_number: string` The bank account number - `account_type: "checking" or "savings"` - `"checking"` - `"savings"` - `routing_number: string` The routing number of the bank account. - `customer_id: optional string` Unique identifier of the related customer object. - `expires_at: optional string` Expiration date and time of the paykey, if applicable. - `external_id: optional string` Unique identifier for the paykey in your database, used for cross-referencing between Straddle and your systems. - `institution_name: optional string` Name of the financial institution. - `metadata: optional map[string]` Up to 20 additional user-defined key-value pairs. Useful for storing additional information about the paykey in a structured format. - `status_details: optional object { changed_at, message, reason, 2 more }` - `changed_at: string` The time the status change occurred. - `message: string` A human-readable description of the current status. - `reason: "insufficient_funds" or "closed_bank_account" or "invalid_bank_account" or 24 more` - `"insufficient_funds"` - `"closed_bank_account"` - `"invalid_bank_account"` - `"invalid_routing"` - `"disputed"` - `"payment_stopped"` - `"owner_deceased"` - `"frozen_bank_account"` - `"risk_review"` - `"fraudulent"` - `"duplicate_entry"` - `"invalid_paykey"` - `"payment_blocked"` - `"amount_too_large"` - `"too_many_attempts"` - `"internal_system_error"` - `"user_request"` - `"ok"` - `"other_network_return"` - `"payout_refused"` - `"cancel_request"` - `"failed_verification"` - `"require_review"` - `"blocked_by_system"` - `"watchtower_review"` - `"validating"` - `"auto_hold"` - `source: "watchtower" or "bank_decline" or "customer_dispute" or 2 more` - `"watchtower"` - `"bank_decline"` - `"customer_dispute"` - `"user_action"` - `"system"` - `code: optional string` The status code if applicable. - `meta: object { api_request_id, api_request_timestamp }` Metadata about the API request, including an identifier and timestamp. - `api_request_id: string` Unique identifier for this API request, useful for troubleshooting. - `api_request_timestamp: string` Timestamp for this API request, useful for troubleshooting. - `response_type: "object" or "array" or "error" or "none"` 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"` - `"array"` - `"error"` - `"none"` ### Paykey V1 - `paykeyV1: object { data, meta, response_type }` - `data: object { id, config, created_at, 14 more }` - `id: string` Unique identifier for the paykey. - `config: object { processing_method, sandbox_outcome }` - `processing_method: optional "inline" or "background" or "skip"` - `"inline"` - `"background"` - `"skip"` - `sandbox_outcome: optional "standard" or "active" or "rejected" or "review"` - `"standard"` - `"active"` - `"rejected"` - `"review"` - `created_at: string` Timestamp of when the paykey was created. - `label: string` Human-readable label used to represent this paykey in a UI. - `paykey: string` The tokenized paykey value. This value is used to create payments and should be stored securely. - `source: "bank_account" or "straddle" or "mx" or 3 more` - `"bank_account"` - `"straddle"` - `"mx"` - `"plaid"` - `"tan"` - `"quiltt"` - `status: "pending" or "active" or "inactive" or 3 more` - `"pending"` - `"active"` - `"inactive"` - `"rejected"` - `"review"` - `"blocked"` - `updated_at: string` Timestamp of the most recent update to the paykey. - `balance: optional object { status, account_balance, updated_at }` - `status: "pending" or "completed" or "failed"` - `"pending"` - `"completed"` - `"failed"` - `account_balance: optional number` Account Balance when last retrieved - `updated_at: optional string` Last time account balance was updated. - `bank_data: optional object { account_number, account_type, routing_number }` - `account_number: string` Bank account number. This value is masked by default for security reasons. Use the /unmask endpoint to access the unmasked value. - `account_type: "checking" or "savings"` - `"checking"` - `"savings"` - `routing_number: string` The routing number of the bank account. - `customer_id: optional string` Unique identifier of the related customer object. - `expires_at: optional string` Expiration date and time of the paykey, if applicable. - `external_id: optional string` Unique identifier for the paykey in your database, used for cross-referencing between Straddle and your systems. - `institution_name: optional string` Name of the financial institution. - `metadata: optional map[string]` Up to 20 additional user-defined key-value pairs. Useful for storing additional information about the paykey in a structured format. - `status_details: optional object { changed_at, message, reason, 2 more }` - `changed_at: string` The time the status change occurred. - `message: string` A human-readable description of the current status. - `reason: "insufficient_funds" or "closed_bank_account" or "invalid_bank_account" or 24 more` - `"insufficient_funds"` - `"closed_bank_account"` - `"invalid_bank_account"` - `"invalid_routing"` - `"disputed"` - `"payment_stopped"` - `"owner_deceased"` - `"frozen_bank_account"` - `"risk_review"` - `"fraudulent"` - `"duplicate_entry"` - `"invalid_paykey"` - `"payment_blocked"` - `"amount_too_large"` - `"too_many_attempts"` - `"internal_system_error"` - `"user_request"` - `"ok"` - `"other_network_return"` - `"payout_refused"` - `"cancel_request"` - `"failed_verification"` - `"require_review"` - `"blocked_by_system"` - `"watchtower_review"` - `"validating"` - `"auto_hold"` - `source: "watchtower" or "bank_decline" or "customer_dispute" or 2 more` - `"watchtower"` - `"bank_decline"` - `"customer_dispute"` - `"user_action"` - `"system"` - `code: optional string` The status code if applicable. - `unblock_eligible: optional boolean` 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. - `meta: object { api_request_id, api_request_timestamp }` Metadata about the API request, including an identifier and timestamp. - `api_request_id: string` Unique identifier for this API request, useful for troubleshooting. - `api_request_timestamp: string` Timestamp for this API request, useful for troubleshooting. - `response_type: "object" or "array" or "error" or "none"` 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"` - `"array"` - `"error"` - `"none"` # Review ## Update a paykey's status `$ straddle paykeys:review decision` **patch** `/v1/paykeys/{id}/review` Update the status of a paykey when in review status ### Parameters - `--id: string` Path param - `--status: "active" or "rejected"` Body param - `--correlation-id: optional string` Header param: Optional client generated identifier to trace and debug a series of requests. - `--idempotency-key: optional string` Header param: Optional client generated value to use for idempotent requests. - `--request-id: optional string` Header param: Optional client generated identifier to trace and debug a request. - `--straddle-account-id: optional string` Header param: For use by platforms to specify an account id and set scope of a request. ### Returns - `paykeyV1: object { data, meta, response_type }` - `data: object { id, config, created_at, 14 more }` - `id: string` Unique identifier for the paykey. - `config: object { processing_method, sandbox_outcome }` - `processing_method: optional "inline" or "background" or "skip"` - `"inline"` - `"background"` - `"skip"` - `sandbox_outcome: optional "standard" or "active" or "rejected" or "review"` - `"standard"` - `"active"` - `"rejected"` - `"review"` - `created_at: string` Timestamp of when the paykey was created. - `label: string` Human-readable label used to represent this paykey in a UI. - `paykey: string` The tokenized paykey value. This value is used to create payments and should be stored securely. - `source: "bank_account" or "straddle" or "mx" or 3 more` - `"bank_account"` - `"straddle"` - `"mx"` - `"plaid"` - `"tan"` - `"quiltt"` - `status: "pending" or "active" or "inactive" or 3 more` - `"pending"` - `"active"` - `"inactive"` - `"rejected"` - `"review"` - `"blocked"` - `updated_at: string` Timestamp of the most recent update to the paykey. - `balance: optional object { status, account_balance, updated_at }` - `status: "pending" or "completed" or "failed"` - `"pending"` - `"completed"` - `"failed"` - `account_balance: optional number` Account Balance when last retrieved - `updated_at: optional string` Last time account balance was updated. - `bank_data: optional object { account_number, account_type, routing_number }` - `account_number: string` Bank account number. This value is masked by default for security reasons. Use the /unmask endpoint to access the unmasked value. - `account_type: "checking" or "savings"` - `"checking"` - `"savings"` - `routing_number: string` The routing number of the bank account. - `customer_id: optional string` Unique identifier of the related customer object. - `expires_at: optional string` Expiration date and time of the paykey, if applicable. - `external_id: optional string` Unique identifier for the paykey in your database, used for cross-referencing between Straddle and your systems. - `institution_name: optional string` Name of the financial institution. - `metadata: optional map[string]` Up to 20 additional user-defined key-value pairs. Useful for storing additional information about the paykey in a structured format. - `status_details: optional object { changed_at, message, reason, 2 more }` - `changed_at: string` The time the status change occurred. - `message: string` A human-readable description of the current status. - `reason: "insufficient_funds" or "closed_bank_account" or "invalid_bank_account" or 24 more` - `"insufficient_funds"` - `"closed_bank_account"` - `"invalid_bank_account"` - `"invalid_routing"` - `"disputed"` - `"payment_stopped"` - `"owner_deceased"` - `"frozen_bank_account"` - `"risk_review"` - `"fraudulent"` - `"duplicate_entry"` - `"invalid_paykey"` - `"payment_blocked"` - `"amount_too_large"` - `"too_many_attempts"` - `"internal_system_error"` - `"user_request"` - `"ok"` - `"other_network_return"` - `"payout_refused"` - `"cancel_request"` - `"failed_verification"` - `"require_review"` - `"blocked_by_system"` - `"watchtower_review"` - `"validating"` - `"auto_hold"` - `source: "watchtower" or "bank_decline" or "customer_dispute" or 2 more` - `"watchtower"` - `"bank_decline"` - `"customer_dispute"` - `"user_action"` - `"system"` - `code: optional string` The status code if applicable. - `unblock_eligible: optional boolean` 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. - `meta: object { api_request_id, api_request_timestamp }` Metadata about the API request, including an identifier and timestamp. - `api_request_id: string` Unique identifier for this API request, useful for troubleshooting. - `api_request_timestamp: string` Timestamp for this API request, useful for troubleshooting. - `response_type: "object" or "array" or "error" or "none"` 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"` - `"array"` - `"error"` - `"none"` ### Example ```cli straddle paykeys:review decision \ --api-key 'My API Key' \ --id 182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e \ --status active ``` #### 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 `$ straddle paykeys:review get` **get** `/v1/paykeys/{id}/review` Get additional details about a paykey. ### Parameters - `--id: string` - `--correlation-id: optional string` Optional client generated identifier to trace and debug a series of requests. - `--request-id: optional string` Optional client generated identifier to trace and debug a request. - `--straddle-account-id: optional string` For use by platforms to specify an account id and set scope of a request. ### Returns - `PaykeyReviewGetResponse: object { data, meta, response_type }` - `data: object { paykey_details, verification_details }` - `paykey_details: object { id, config, created_at, 14 more }` - `id: string` Unique identifier for the paykey. - `config: object { processing_method, sandbox_outcome }` - `processing_method: optional "inline" or "background" or "skip"` - `"inline"` - `"background"` - `"skip"` - `sandbox_outcome: optional "standard" or "active" or "rejected" or "review"` - `"standard"` - `"active"` - `"rejected"` - `"review"` - `created_at: string` Timestamp of when the paykey was created. - `label: string` Human-readable label used to represent this paykey in a UI. - `paykey: string` The tokenized paykey value. This value is used to create payments and should be stored securely. - `source: "bank_account" or "straddle" or "mx" or 3 more` - `"bank_account"` - `"straddle"` - `"mx"` - `"plaid"` - `"tan"` - `"quiltt"` - `status: "pending" or "active" or "inactive" or 3 more` - `"pending"` - `"active"` - `"inactive"` - `"rejected"` - `"review"` - `"blocked"` - `updated_at: string` Timestamp of the most recent update to the paykey. - `balance: optional object { status, account_balance, updated_at }` - `status: "pending" or "completed" or "failed"` - `"pending"` - `"completed"` - `"failed"` - `account_balance: optional number` Account Balance when last retrieved - `updated_at: optional string` Last time account balance was updated. - `bank_data: optional object { account_number, account_type, routing_number }` - `account_number: string` Bank account number. This value is masked by default for security reasons. Use the /unmask endpoint to access the unmasked value. - `account_type: "checking" or "savings"` - `"checking"` - `"savings"` - `routing_number: string` The routing number of the bank account. - `customer_id: optional string` Unique identifier of the related customer object. - `expires_at: optional string` Expiration date and time of the paykey, if applicable. - `external_id: optional string` Unique identifier for the paykey in your database, used for cross-referencing between Straddle and your systems. - `institution_name: optional string` Name of the financial institution. - `metadata: optional map[string]` Up to 20 additional user-defined key-value pairs. Useful for storing additional information about the paykey in a structured format. - `status_details: optional object { changed_at, message, reason, 2 more }` - `changed_at: string` The time the status change occurred. - `message: string` A human-readable description of the current status. - `reason: "insufficient_funds" or "closed_bank_account" or "invalid_bank_account" or 24 more` - `"insufficient_funds"` - `"closed_bank_account"` - `"invalid_bank_account"` - `"invalid_routing"` - `"disputed"` - `"payment_stopped"` - `"owner_deceased"` - `"frozen_bank_account"` - `"risk_review"` - `"fraudulent"` - `"duplicate_entry"` - `"invalid_paykey"` - `"payment_blocked"` - `"amount_too_large"` - `"too_many_attempts"` - `"internal_system_error"` - `"user_request"` - `"ok"` - `"other_network_return"` - `"payout_refused"` - `"cancel_request"` - `"failed_verification"` - `"require_review"` - `"blocked_by_system"` - `"watchtower_review"` - `"validating"` - `"auto_hold"` - `source: "watchtower" or "bank_decline" or "customer_dispute" or 2 more` - `"watchtower"` - `"bank_decline"` - `"customer_dispute"` - `"user_action"` - `"system"` - `code: optional string` The status code if applicable. - `unblock_eligible: optional boolean` 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. - `verification_details: optional object { id, breakdown, created_at, 3 more }` - `id: string` Unique identifier for the verification details. - `breakdown: object { account_validation, name_match }` - `account_validation: optional object { codes, decision, reason }` - `codes: array of string` - `decision: "accept" or "reject" or "review"` - `"accept"` - `"reject"` - `"review"` - `reason: optional string` - `name_match: optional object { codes, decision, correlation_score, 4 more }` - `codes: array of string` - `decision: "accept" or "reject" or "review"` - `"accept"` - `"reject"` - `"review"` - `correlation_score: optional number` - `customer_name: optional string` - `matched_name: optional string` - `names_on_account: optional array of string` - `reason: optional string` - `created_at: string` Timestamp of when the verification was initiated. - `decision: "accept" or "reject" or "review"` - `"accept"` - `"reject"` - `"review"` - `messages: map[string]` Dictionary of all messages from the paykey verification process. - `updated_at: string` Timestamp of the most recent update to the verification details. - `meta: object { api_request_id, api_request_timestamp }` Metadata about the API request, including an identifier and timestamp. - `api_request_id: string` Unique identifier for this API request, useful for troubleshooting. - `api_request_timestamp: string` Timestamp for this API request, useful for troubleshooting. - `response_type: "object" or "array" or "error" or "none"` 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"` - `"array"` - `"error"` - `"none"` ### Example ```cli straddle paykeys:review get \ --api-key 'My API Key' \ --id 182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e ``` #### 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 `$ straddle paykeys:review refresh-review` **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 - `--id: string` - `--correlation-id: optional string` Optional client generated identifier to trace and debug a series of requests. - `--idempotency-key: optional string` Optional client generated value to use for idempotent requests. - `--request-id: optional string` Optional client generated identifier to trace and debug a request. - `--straddle-account-id: optional string` For use by platforms to specify an account id and set scope of a request. ### Returns - `paykeyV1: object { data, meta, response_type }` - `data: object { id, config, created_at, 14 more }` - `id: string` Unique identifier for the paykey. - `config: object { processing_method, sandbox_outcome }` - `processing_method: optional "inline" or "background" or "skip"` - `"inline"` - `"background"` - `"skip"` - `sandbox_outcome: optional "standard" or "active" or "rejected" or "review"` - `"standard"` - `"active"` - `"rejected"` - `"review"` - `created_at: string` Timestamp of when the paykey was created. - `label: string` Human-readable label used to represent this paykey in a UI. - `paykey: string` The tokenized paykey value. This value is used to create payments and should be stored securely. - `source: "bank_account" or "straddle" or "mx" or 3 more` - `"bank_account"` - `"straddle"` - `"mx"` - `"plaid"` - `"tan"` - `"quiltt"` - `status: "pending" or "active" or "inactive" or 3 more` - `"pending"` - `"active"` - `"inactive"` - `"rejected"` - `"review"` - `"blocked"` - `updated_at: string` Timestamp of the most recent update to the paykey. - `balance: optional object { status, account_balance, updated_at }` - `status: "pending" or "completed" or "failed"` - `"pending"` - `"completed"` - `"failed"` - `account_balance: optional number` Account Balance when last retrieved - `updated_at: optional string` Last time account balance was updated. - `bank_data: optional object { account_number, account_type, routing_number }` - `account_number: string` Bank account number. This value is masked by default for security reasons. Use the /unmask endpoint to access the unmasked value. - `account_type: "checking" or "savings"` - `"checking"` - `"savings"` - `routing_number: string` The routing number of the bank account. - `customer_id: optional string` Unique identifier of the related customer object. - `expires_at: optional string` Expiration date and time of the paykey, if applicable. - `external_id: optional string` Unique identifier for the paykey in your database, used for cross-referencing between Straddle and your systems. - `institution_name: optional string` Name of the financial institution. - `metadata: optional map[string]` Up to 20 additional user-defined key-value pairs. Useful for storing additional information about the paykey in a structured format. - `status_details: optional object { changed_at, message, reason, 2 more }` - `changed_at: string` The time the status change occurred. - `message: string` A human-readable description of the current status. - `reason: "insufficient_funds" or "closed_bank_account" or "invalid_bank_account" or 24 more` - `"insufficient_funds"` - `"closed_bank_account"` - `"invalid_bank_account"` - `"invalid_routing"` - `"disputed"` - `"payment_stopped"` - `"owner_deceased"` - `"frozen_bank_account"` - `"risk_review"` - `"fraudulent"` - `"duplicate_entry"` - `"invalid_paykey"` - `"payment_blocked"` - `"amount_too_large"` - `"too_many_attempts"` - `"internal_system_error"` - `"user_request"` - `"ok"` - `"other_network_return"` - `"payout_refused"` - `"cancel_request"` - `"failed_verification"` - `"require_review"` - `"blocked_by_system"` - `"watchtower_review"` - `"validating"` - `"auto_hold"` - `source: "watchtower" or "bank_decline" or "customer_dispute" or 2 more` - `"watchtower"` - `"bank_decline"` - `"customer_dispute"` - `"user_action"` - `"system"` - `code: optional string` The status code if applicable. - `unblock_eligible: optional boolean` 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. - `meta: object { api_request_id, api_request_timestamp }` Metadata about the API request, including an identifier and timestamp. - `api_request_id: string` Unique identifier for this API request, useful for troubleshooting. - `api_request_timestamp: string` Timestamp for this API request, useful for troubleshooting. - `response_type: "object" or "array" or "error" or "none"` 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"` - `"array"` - `"error"` - `"none"` ### Example ```cli straddle paykeys:review refresh-review \ --api-key 'My API Key' \ --id 182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e ``` #### 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" } ```