Skip to content
  • Auto
  • Light
  • Dark
Get started
View as Markdown
Copy Markdown

Open in Claude
Open in ChatGPT

Update a paykey's status

client.paykeys.review.decision(stringid, ReviewDecisionParams { status, correlationID, idempotencyKey, 2 more } params, RequestOptionsoptions?): PaykeyV1 { data, meta, response_type }
patch/v1/paykeys/{id}/review

Update the status of a paykey when in review status

ParametersExpand Collapse
id: string
params: ReviewDecisionParams { status, correlationID, idempotencyKey, 2 more }
status: "active" | "rejected"

Body param:

Accepts one of the following:
"active"
"rejected"
correlationID?: string

Header param: Optional client generated identifier to trace and debug a series of requests.

idempotencyKey?: string

Header param: Optional client generated value to use for idempotent requests.

maxLength40
minLength10
requestID?: string

Header param: Optional client generated identifier to trace and debug a request.

straddleAccountID?: string

Header param: For use by platforms to specify an account id and set scope of a request.

formatuuid
ReturnsExpand Collapse
PaykeyV1 { data, meta, response_type }
data: Data { id, config, created_at, 13 more }
id: string

Unique identifier for the paykey.

formatuuid
config: Config { processing_method, sandbox_outcome }
processing_method?: "inline" | "background" | "skip"
Accepts one of the following:
"inline"
"background"
"skip"
sandbox_outcome?: "standard" | "active" | "rejected" | "review"
Accepts one of the following:
"standard"
"active"
"rejected"
"review"
created_at: string

Timestamp of when the paykey was created.

formatdate-time
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" | "straddle" | "mx" | 3 more
Accepts one of the following:
"bank_account"
"straddle"
"mx"
"plaid"
"tan"
"quiltt"
status: "pending" | "active" | "inactive" | 2 more
Accepts one of the following:
"pending"
"active"
"inactive"
"rejected"
"review"
updated_at: string

Timestamp of the most recent update to the paykey.

formatdate-time
balance?: Balance { status, account_balance, updated_at }
status: "pending" | "completed" | "failed"
Accepts one of the following:
"pending"
"completed"
"failed"
account_balance?: number | null

Account Balance when last retrieved

formatint32
updated_at?: string | null

Last time account balance was updated.

formatdate-time
bank_data?: BankData { 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" | "savings"
Accepts one of the following:
"checking"
"savings"
routing_number: string

The routing number of the bank account.

minLength9
maxLength9
customer_id?: string | null

Unique identifier of the related customer object.

formatuuid
expires_at?: string | null

Expiration date and time of the paykey, if applicable.

formatdate-time
external_id?: string | null

Unique identifier for the paykey in your database, used for cross-referencing between Straddle and your systems.

institution_name?: string | null

Name of the financial institution.

metadata?: Record<string, string> | null

Up to 20 additional user-defined key-value pairs. Useful for storing additional information about the paykey in a structured format.

status_details?: StatusDetails { changed_at, message, reason, 2 more }
changed_at: string

The time the status change occurred.

formatdate-time
message: string

A human-readable description of the current status.

reason: "insufficient_funds" | "closed_bank_account" | "invalid_bank_account" | 17 more
Accepts one of the following:
"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"
source: "watchtower" | "bank_decline" | "customer_dispute" | 2 more
Accepts one of the following:
"watchtower"
"bank_decline"
"customer_dispute"
"user_action"
"system"
code?: string | null

The status code if applicable.

meta: ResponseMetadata { 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.

formatuuid
api_request_timestamp: string

Timestamp for this API request, useful for troubleshooting.

formatdate-time
response_type: "object" | "array" | "error" | "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.
Accepts one of the following:
"object"
"array"
"error"
"none"
Update a paykey's status
import Straddle from '@straddlecom/straddle';

const client = new Straddle({
  apiKey: 'My API Key',
});

const paykeyV1 = await client.paykeys.review.decision('182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e', {
  status: 'active',
});

console.log(paykeyV1.data);
{
  "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"
    }
  },
  "meta": {
    "api_request_id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
    "api_request_timestamp": "2019-12-27T18:11:19.117Z"
  },
  "response_type": "object"
}
Returns Examples
{
  "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"
    }
  },
  "meta": {
    "api_request_id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
    "api_request_timestamp": "2019-12-27T18:11:19.117Z"
  },
  "response_type": "object"
}