Skip to content
Get started

Paykeys

Paykeys are secure tokens that link verified customer identities to their bank accounts. Each Paykey includes built-in balance checking, fraud detection through LSTM machine learning models, and can be reused for subscriptions and recurring payments without storing sensitive data. Paykeys eliminate fraud by ensuring the person initiating payment owns the funding account.

Lookup a paykey
client.Paykeys.Get(ctx, id, query) (*PaykeyV1, error)
GET/v1/paykeys/{id}
Unmask a paykey
client.Paykeys.Unmasked(ctx, id, query) (*PaykeyUnmaskedV1, error)
GET/v1/paykeys/{id}/unmasked
List paykeys
client.Paykeys.List(ctx, params) (*PageNumberSchema[PaykeySummaryPagedV1Data], error)
GET/v1/paykeys
Retrieve an unmasked paykey token
client.Paykeys.Reveal(ctx, id, query) (*PaykeyRevealResponse, error)
GET/v1/paykeys/{id}/reveal
Cancel
client.Paykeys.Cancel(ctx, id, params) (*PaykeyV1, error)
PUT/v1/paykeys/{id}/cancel
Update a paykey's balance
client.Paykeys.UpdateBalance(ctx, id, body) (*PaykeyV1, error)
PUT/v1/paykeys/{id}/refresh_balance
ModelsExpand Collapse
type PaykeySummaryPagedV1 struct{…}
Data []PaykeySummaryPagedV1Data
ID string

Unique identifier for the paykey.

formatuuid
Config PaykeySummaryPagedV1DataConfig
ProcessingMethod stringoptional
One of the following:
const PaykeySummaryPagedV1DataConfigProcessingMethodInline PaykeySummaryPagedV1DataConfigProcessingMethod = "inline"
const PaykeySummaryPagedV1DataConfigProcessingMethodBackground PaykeySummaryPagedV1DataConfigProcessingMethod = "background"
const PaykeySummaryPagedV1DataConfigProcessingMethodSkip PaykeySummaryPagedV1DataConfigProcessingMethod = "skip"
SandboxOutcome stringoptional
One of the following:
const PaykeySummaryPagedV1DataConfigSandboxOutcomeStandard PaykeySummaryPagedV1DataConfigSandboxOutcome = "standard"
const PaykeySummaryPagedV1DataConfigSandboxOutcomeActive PaykeySummaryPagedV1DataConfigSandboxOutcome = "active"
const PaykeySummaryPagedV1DataConfigSandboxOutcomeRejected PaykeySummaryPagedV1DataConfigSandboxOutcome = "rejected"
const PaykeySummaryPagedV1DataConfigSandboxOutcomeReview PaykeySummaryPagedV1DataConfigSandboxOutcome = "review"
CreatedAt Time

Timestamp of when the paykey was created.

formatdate-time
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 string
One of the following:
const PaykeySummaryPagedV1DataSourceBankAccount PaykeySummaryPagedV1DataSource = "bank_account"
const PaykeySummaryPagedV1DataSourceStraddle PaykeySummaryPagedV1DataSource = "straddle"
const PaykeySummaryPagedV1DataSourceMx PaykeySummaryPagedV1DataSource = "mx"
const PaykeySummaryPagedV1DataSourcePlaid PaykeySummaryPagedV1DataSource = "plaid"
const PaykeySummaryPagedV1DataSourceTan PaykeySummaryPagedV1DataSource = "tan"
const PaykeySummaryPagedV1DataSourceQuiltt PaykeySummaryPagedV1DataSource = "quiltt"
Status string
One of the following:
const PaykeySummaryPagedV1DataStatusPending PaykeySummaryPagedV1DataStatus = "pending"
const PaykeySummaryPagedV1DataStatusActive PaykeySummaryPagedV1DataStatus = "active"
const PaykeySummaryPagedV1DataStatusInactive PaykeySummaryPagedV1DataStatus = "inactive"
const PaykeySummaryPagedV1DataStatusRejected PaykeySummaryPagedV1DataStatus = "rejected"
const PaykeySummaryPagedV1DataStatusReview PaykeySummaryPagedV1DataStatus = "review"
const PaykeySummaryPagedV1DataStatusBlocked PaykeySummaryPagedV1DataStatus = "blocked"
UpdatedAt Time

Timestamp of the most recent update to the paykey.

formatdate-time
BankData PaykeySummaryPagedV1DataBankDataoptional
AccountNumber string

Bank account number. This value is masked by default for security reasons. Use the /unmask endpoint to access the unmasked value.

AccountType string
One of the following:
const PaykeySummaryPagedV1DataBankDataAccountTypeChecking PaykeySummaryPagedV1DataBankDataAccountType = "checking"
const PaykeySummaryPagedV1DataBankDataAccountTypeSavings PaykeySummaryPagedV1DataBankDataAccountType = "savings"
RoutingNumber string

The routing number of the bank account.

minLength9
maxLength9
CustomerID stringoptional

Unique identifier of the related customer object.

formatuuid
ExpiresAt Timeoptional

Expiration date and time of the paykey, if applicable.

formatdate-time
ExternalID stringoptional

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

InstitutionName stringoptional

Name of the financial institution.

StatusDetails PaykeySummaryPagedV1DataStatusDetailsoptional
ChangedAt Time

The time the status change occurred.

formatdate-time
Message string

A human-readable description of the current status.

Reason string
One of the following:
const PaykeySummaryPagedV1DataStatusDetailsReasonInsufficientFunds PaykeySummaryPagedV1DataStatusDetailsReason = "insufficient_funds"
const PaykeySummaryPagedV1DataStatusDetailsReasonClosedBankAccount PaykeySummaryPagedV1DataStatusDetailsReason = "closed_bank_account"
const PaykeySummaryPagedV1DataStatusDetailsReasonInvalidBankAccount PaykeySummaryPagedV1DataStatusDetailsReason = "invalid_bank_account"
const PaykeySummaryPagedV1DataStatusDetailsReasonInvalidRouting PaykeySummaryPagedV1DataStatusDetailsReason = "invalid_routing"
const PaykeySummaryPagedV1DataStatusDetailsReasonDisputed PaykeySummaryPagedV1DataStatusDetailsReason = "disputed"
const PaykeySummaryPagedV1DataStatusDetailsReasonPaymentStopped PaykeySummaryPagedV1DataStatusDetailsReason = "payment_stopped"
const PaykeySummaryPagedV1DataStatusDetailsReasonOwnerDeceased PaykeySummaryPagedV1DataStatusDetailsReason = "owner_deceased"
const PaykeySummaryPagedV1DataStatusDetailsReasonFrozenBankAccount PaykeySummaryPagedV1DataStatusDetailsReason = "frozen_bank_account"
const PaykeySummaryPagedV1DataStatusDetailsReasonRiskReview PaykeySummaryPagedV1DataStatusDetailsReason = "risk_review"
const PaykeySummaryPagedV1DataStatusDetailsReasonFraudulent PaykeySummaryPagedV1DataStatusDetailsReason = "fraudulent"
const PaykeySummaryPagedV1DataStatusDetailsReasonDuplicateEntry PaykeySummaryPagedV1DataStatusDetailsReason = "duplicate_entry"
const PaykeySummaryPagedV1DataStatusDetailsReasonInvalidPaykey PaykeySummaryPagedV1DataStatusDetailsReason = "invalid_paykey"
const PaykeySummaryPagedV1DataStatusDetailsReasonPaymentBlocked PaykeySummaryPagedV1DataStatusDetailsReason = "payment_blocked"
const PaykeySummaryPagedV1DataStatusDetailsReasonAmountTooLarge PaykeySummaryPagedV1DataStatusDetailsReason = "amount_too_large"
const PaykeySummaryPagedV1DataStatusDetailsReasonTooManyAttempts PaykeySummaryPagedV1DataStatusDetailsReason = "too_many_attempts"
const PaykeySummaryPagedV1DataStatusDetailsReasonInternalSystemError PaykeySummaryPagedV1DataStatusDetailsReason = "internal_system_error"
const PaykeySummaryPagedV1DataStatusDetailsReasonUserRequest PaykeySummaryPagedV1DataStatusDetailsReason = "user_request"
const PaykeySummaryPagedV1DataStatusDetailsReasonOk PaykeySummaryPagedV1DataStatusDetailsReason = "ok"
const PaykeySummaryPagedV1DataStatusDetailsReasonOtherNetworkReturn PaykeySummaryPagedV1DataStatusDetailsReason = "other_network_return"
const PaykeySummaryPagedV1DataStatusDetailsReasonPayoutRefused PaykeySummaryPagedV1DataStatusDetailsReason = "payout_refused"
const PaykeySummaryPagedV1DataStatusDetailsReasonCancelRequest PaykeySummaryPagedV1DataStatusDetailsReason = "cancel_request"
const PaykeySummaryPagedV1DataStatusDetailsReasonFailedVerification PaykeySummaryPagedV1DataStatusDetailsReason = "failed_verification"
const PaykeySummaryPagedV1DataStatusDetailsReasonRequireReview PaykeySummaryPagedV1DataStatusDetailsReason = "require_review"
const PaykeySummaryPagedV1DataStatusDetailsReasonBlockedBySystem PaykeySummaryPagedV1DataStatusDetailsReason = "blocked_by_system"
const PaykeySummaryPagedV1DataStatusDetailsReasonWatchtowerReview PaykeySummaryPagedV1DataStatusDetailsReason = "watchtower_review"
const PaykeySummaryPagedV1DataStatusDetailsReasonValidating PaykeySummaryPagedV1DataStatusDetailsReason = "validating"
const PaykeySummaryPagedV1DataStatusDetailsReasonAutoHold PaykeySummaryPagedV1DataStatusDetailsReason = "auto_hold"
Source string
One of the following:
const PaykeySummaryPagedV1DataStatusDetailsSourceWatchtower PaykeySummaryPagedV1DataStatusDetailsSource = "watchtower"
const PaykeySummaryPagedV1DataStatusDetailsSourceBankDecline PaykeySummaryPagedV1DataStatusDetailsSource = "bank_decline"
const PaykeySummaryPagedV1DataStatusDetailsSourceCustomerDispute PaykeySummaryPagedV1DataStatusDetailsSource = "customer_dispute"
const PaykeySummaryPagedV1DataStatusDetailsSourceUserAction PaykeySummaryPagedV1DataStatusDetailsSource = "user_action"
const PaykeySummaryPagedV1DataStatusDetailsSourceSystem PaykeySummaryPagedV1DataStatusDetailsSource = "system"
Code stringoptional

The status code if applicable.

UnblockEligible booloptional

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 PaykeySummaryPagedV1Meta
APIRequestID string

Unique identifier for this API request, useful for troubleshooting.

formatuuid
APIRequestTimestamp Time

Timestamp for this API request, useful for troubleshooting.

formatdate-time
MaxPageSize int64

Maximum allowed page size for this endpoint.

formatint32
PageNumber int64

Page number for paginated results.

formatint32
PageSize int64

Number of items per page in this response.

formatint32
SortBy string

The field that the results were sorted by.

SortOrder string
One of the following:
const PaykeySummaryPagedV1MetaSortOrderAsc PaykeySummaryPagedV1MetaSortOrder = "asc"
const PaykeySummaryPagedV1MetaSortOrderDesc PaykeySummaryPagedV1MetaSortOrder = "desc"
TotalItems int64
TotalPages int64

The number of pages available.

formatint32
ResponseType PaykeySummaryPagedV1ResponseType

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.
One of the following:
const PaykeySummaryPagedV1ResponseTypeObject PaykeySummaryPagedV1ResponseType = "object"
const PaykeySummaryPagedV1ResponseTypeArray PaykeySummaryPagedV1ResponseType = "array"
const PaykeySummaryPagedV1ResponseTypeError PaykeySummaryPagedV1ResponseType = "error"
const PaykeySummaryPagedV1ResponseTypeNone PaykeySummaryPagedV1ResponseType = "none"
type PaykeyUnmaskedV1 struct{…}
Data PaykeyUnmaskedV1Data
ID string

Unique identifier for the paykey.

formatuuid
Config PaykeyUnmaskedV1DataConfig
ProcessingMethod stringoptional
One of the following:
const PaykeyUnmaskedV1DataConfigProcessingMethodInline PaykeyUnmaskedV1DataConfigProcessingMethod = "inline"
const PaykeyUnmaskedV1DataConfigProcessingMethodBackground PaykeyUnmaskedV1DataConfigProcessingMethod = "background"
const PaykeyUnmaskedV1DataConfigProcessingMethodSkip PaykeyUnmaskedV1DataConfigProcessingMethod = "skip"
SandboxOutcome stringoptional
One of the following:
const PaykeyUnmaskedV1DataConfigSandboxOutcomeStandard PaykeyUnmaskedV1DataConfigSandboxOutcome = "standard"
const PaykeyUnmaskedV1DataConfigSandboxOutcomeActive PaykeyUnmaskedV1DataConfigSandboxOutcome = "active"
const PaykeyUnmaskedV1DataConfigSandboxOutcomeRejected PaykeyUnmaskedV1DataConfigSandboxOutcome = "rejected"
const PaykeyUnmaskedV1DataConfigSandboxOutcomeReview PaykeyUnmaskedV1DataConfigSandboxOutcome = "review"
CreatedAt Time

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 string
One of the following:
const PaykeyUnmaskedV1DataSourceBankAccount PaykeyUnmaskedV1DataSource = "bank_account"
const PaykeyUnmaskedV1DataSourceStraddle PaykeyUnmaskedV1DataSource = "straddle"
const PaykeyUnmaskedV1DataSourceMx PaykeyUnmaskedV1DataSource = "mx"
const PaykeyUnmaskedV1DataSourcePlaid PaykeyUnmaskedV1DataSource = "plaid"
const PaykeyUnmaskedV1DataSourceTan PaykeyUnmaskedV1DataSource = "tan"
const PaykeyUnmaskedV1DataSourceQuiltt PaykeyUnmaskedV1DataSource = "quiltt"
Status string
One of the following:
const PaykeyUnmaskedV1DataStatusPending PaykeyUnmaskedV1DataStatus = "pending"
const PaykeyUnmaskedV1DataStatusActive PaykeyUnmaskedV1DataStatus = "active"
const PaykeyUnmaskedV1DataStatusInactive PaykeyUnmaskedV1DataStatus = "inactive"
const PaykeyUnmaskedV1DataStatusRejected PaykeyUnmaskedV1DataStatus = "rejected"
const PaykeyUnmaskedV1DataStatusReview PaykeyUnmaskedV1DataStatus = "review"
const PaykeyUnmaskedV1DataStatusBlocked PaykeyUnmaskedV1DataStatus = "blocked"
UpdatedAt Time

Timestamp of the most recent update to the paykey.

formatdate-time
Balance PaykeyUnmaskedV1DataBalanceoptional
Status string
One of the following:
const PaykeyUnmaskedV1DataBalanceStatusPending PaykeyUnmaskedV1DataBalanceStatus = "pending"
const PaykeyUnmaskedV1DataBalanceStatusCompleted PaykeyUnmaskedV1DataBalanceStatus = "completed"
const PaykeyUnmaskedV1DataBalanceStatusFailed PaykeyUnmaskedV1DataBalanceStatus = "failed"
AccountBalance int64optional

Account Balance when last retrieved

formatint32
UpdatedAt Timeoptional

Last time account balance was updated.

formatdate-time
BankData PaykeyUnmaskedV1DataBankDataoptional
AccountNumber string

The bank account number

AccountType string
One of the following:
const PaykeyUnmaskedV1DataBankDataAccountTypeChecking PaykeyUnmaskedV1DataBankDataAccountType = "checking"
const PaykeyUnmaskedV1DataBankDataAccountTypeSavings PaykeyUnmaskedV1DataBankDataAccountType = "savings"
RoutingNumber string

The routing number of the bank account.

minLength9
maxLength9
CustomerID stringoptional

Unique identifier of the related customer object.

formatuuid
ExpiresAt Timeoptional

Expiration date and time of the paykey, if applicable.

formatdate-time
ExternalID stringoptional

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

InstitutionName stringoptional

Name of the financial institution.

Metadata map[string, string]optional

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

StatusDetails PaykeyUnmaskedV1DataStatusDetailsoptional
ChangedAt Time

The time the status change occurred.

formatdate-time
Message string

A human-readable description of the current status.

Reason string
One of the following:
const PaykeyUnmaskedV1DataStatusDetailsReasonInsufficientFunds PaykeyUnmaskedV1DataStatusDetailsReason = "insufficient_funds"
const PaykeyUnmaskedV1DataStatusDetailsReasonClosedBankAccount PaykeyUnmaskedV1DataStatusDetailsReason = "closed_bank_account"
const PaykeyUnmaskedV1DataStatusDetailsReasonInvalidBankAccount PaykeyUnmaskedV1DataStatusDetailsReason = "invalid_bank_account"
const PaykeyUnmaskedV1DataStatusDetailsReasonInvalidRouting PaykeyUnmaskedV1DataStatusDetailsReason = "invalid_routing"
const PaykeyUnmaskedV1DataStatusDetailsReasonDisputed PaykeyUnmaskedV1DataStatusDetailsReason = "disputed"
const PaykeyUnmaskedV1DataStatusDetailsReasonPaymentStopped PaykeyUnmaskedV1DataStatusDetailsReason = "payment_stopped"
const PaykeyUnmaskedV1DataStatusDetailsReasonOwnerDeceased PaykeyUnmaskedV1DataStatusDetailsReason = "owner_deceased"
const PaykeyUnmaskedV1DataStatusDetailsReasonFrozenBankAccount PaykeyUnmaskedV1DataStatusDetailsReason = "frozen_bank_account"
const PaykeyUnmaskedV1DataStatusDetailsReasonRiskReview PaykeyUnmaskedV1DataStatusDetailsReason = "risk_review"
const PaykeyUnmaskedV1DataStatusDetailsReasonFraudulent PaykeyUnmaskedV1DataStatusDetailsReason = "fraudulent"
const PaykeyUnmaskedV1DataStatusDetailsReasonDuplicateEntry PaykeyUnmaskedV1DataStatusDetailsReason = "duplicate_entry"
const PaykeyUnmaskedV1DataStatusDetailsReasonInvalidPaykey PaykeyUnmaskedV1DataStatusDetailsReason = "invalid_paykey"
const PaykeyUnmaskedV1DataStatusDetailsReasonPaymentBlocked PaykeyUnmaskedV1DataStatusDetailsReason = "payment_blocked"
const PaykeyUnmaskedV1DataStatusDetailsReasonAmountTooLarge PaykeyUnmaskedV1DataStatusDetailsReason = "amount_too_large"
const PaykeyUnmaskedV1DataStatusDetailsReasonTooManyAttempts PaykeyUnmaskedV1DataStatusDetailsReason = "too_many_attempts"
const PaykeyUnmaskedV1DataStatusDetailsReasonInternalSystemError PaykeyUnmaskedV1DataStatusDetailsReason = "internal_system_error"
const PaykeyUnmaskedV1DataStatusDetailsReasonUserRequest PaykeyUnmaskedV1DataStatusDetailsReason = "user_request"
const PaykeyUnmaskedV1DataStatusDetailsReasonOk PaykeyUnmaskedV1DataStatusDetailsReason = "ok"
const PaykeyUnmaskedV1DataStatusDetailsReasonOtherNetworkReturn PaykeyUnmaskedV1DataStatusDetailsReason = "other_network_return"
const PaykeyUnmaskedV1DataStatusDetailsReasonPayoutRefused PaykeyUnmaskedV1DataStatusDetailsReason = "payout_refused"
const PaykeyUnmaskedV1DataStatusDetailsReasonCancelRequest PaykeyUnmaskedV1DataStatusDetailsReason = "cancel_request"
const PaykeyUnmaskedV1DataStatusDetailsReasonFailedVerification PaykeyUnmaskedV1DataStatusDetailsReason = "failed_verification"
const PaykeyUnmaskedV1DataStatusDetailsReasonRequireReview PaykeyUnmaskedV1DataStatusDetailsReason = "require_review"
const PaykeyUnmaskedV1DataStatusDetailsReasonBlockedBySystem PaykeyUnmaskedV1DataStatusDetailsReason = "blocked_by_system"
const PaykeyUnmaskedV1DataStatusDetailsReasonWatchtowerReview PaykeyUnmaskedV1DataStatusDetailsReason = "watchtower_review"
const PaykeyUnmaskedV1DataStatusDetailsReasonValidating PaykeyUnmaskedV1DataStatusDetailsReason = "validating"
const PaykeyUnmaskedV1DataStatusDetailsReasonAutoHold PaykeyUnmaskedV1DataStatusDetailsReason = "auto_hold"
Source string
One of the following:
const PaykeyUnmaskedV1DataStatusDetailsSourceWatchtower PaykeyUnmaskedV1DataStatusDetailsSource = "watchtower"
const PaykeyUnmaskedV1DataStatusDetailsSourceBankDecline PaykeyUnmaskedV1DataStatusDetailsSource = "bank_decline"
const PaykeyUnmaskedV1DataStatusDetailsSourceCustomerDispute PaykeyUnmaskedV1DataStatusDetailsSource = "customer_dispute"
const PaykeyUnmaskedV1DataStatusDetailsSourceUserAction PaykeyUnmaskedV1DataStatusDetailsSource = "user_action"
const PaykeyUnmaskedV1DataStatusDetailsSourceSystem PaykeyUnmaskedV1DataStatusDetailsSource = "system"
Code stringoptional

The status code if applicable.

Metadata about the API request, including an identifier and timestamp.

APIRequestID string

Unique identifier for this API request, useful for troubleshooting.

formatuuid
APIRequestTimestamp Time

Timestamp for this API request, useful for troubleshooting.

formatdate-time
ResponseType PaykeyUnmaskedV1ResponseType

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.
One of the following:
const PaykeyUnmaskedV1ResponseTypeObject PaykeyUnmaskedV1ResponseType = "object"
const PaykeyUnmaskedV1ResponseTypeArray PaykeyUnmaskedV1ResponseType = "array"
const PaykeyUnmaskedV1ResponseTypeError PaykeyUnmaskedV1ResponseType = "error"
const PaykeyUnmaskedV1ResponseTypeNone PaykeyUnmaskedV1ResponseType = "none"
type PaykeyV1 struct{…}
Data PaykeyV1Data
ID string

Unique identifier for the paykey.

formatuuid
Config PaykeyV1DataConfig
ProcessingMethod stringoptional
One of the following:
const PaykeyV1DataConfigProcessingMethodInline PaykeyV1DataConfigProcessingMethod = "inline"
const PaykeyV1DataConfigProcessingMethodBackground PaykeyV1DataConfigProcessingMethod = "background"
const PaykeyV1DataConfigProcessingMethodSkip PaykeyV1DataConfigProcessingMethod = "skip"
SandboxOutcome stringoptional
One of the following:
const PaykeyV1DataConfigSandboxOutcomeStandard PaykeyV1DataConfigSandboxOutcome = "standard"
const PaykeyV1DataConfigSandboxOutcomeActive PaykeyV1DataConfigSandboxOutcome = "active"
const PaykeyV1DataConfigSandboxOutcomeRejected PaykeyV1DataConfigSandboxOutcome = "rejected"
const PaykeyV1DataConfigSandboxOutcomeReview PaykeyV1DataConfigSandboxOutcome = "review"
CreatedAt Time

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 string
One of the following:
const PaykeyV1DataSourceBankAccount PaykeyV1DataSource = "bank_account"
const PaykeyV1DataSourceStraddle PaykeyV1DataSource = "straddle"
const PaykeyV1DataSourceMx PaykeyV1DataSource = "mx"
const PaykeyV1DataSourcePlaid PaykeyV1DataSource = "plaid"
const PaykeyV1DataSourceTan PaykeyV1DataSource = "tan"
const PaykeyV1DataSourceQuiltt PaykeyV1DataSource = "quiltt"
Status string
One of the following:
const PaykeyV1DataStatusPending PaykeyV1DataStatus = "pending"
const PaykeyV1DataStatusActive PaykeyV1DataStatus = "active"
const PaykeyV1DataStatusInactive PaykeyV1DataStatus = "inactive"
const PaykeyV1DataStatusRejected PaykeyV1DataStatus = "rejected"
const PaykeyV1DataStatusReview PaykeyV1DataStatus = "review"
const PaykeyV1DataStatusBlocked PaykeyV1DataStatus = "blocked"
UpdatedAt Time

Timestamp of the most recent update to the paykey.

formatdate-time
Balance PaykeyV1DataBalanceoptional
Status string
One of the following:
const PaykeyV1DataBalanceStatusPending PaykeyV1DataBalanceStatus = "pending"
const PaykeyV1DataBalanceStatusCompleted PaykeyV1DataBalanceStatus = "completed"
const PaykeyV1DataBalanceStatusFailed PaykeyV1DataBalanceStatus = "failed"
AccountBalance int64optional

Account Balance when last retrieved

formatint32
UpdatedAt Timeoptional

Last time account balance was updated.

formatdate-time
BankData PaykeyV1DataBankDataoptional
AccountNumber string

Bank account number. This value is masked by default for security reasons. Use the /unmask endpoint to access the unmasked value.

AccountType string
One of the following:
const PaykeyV1DataBankDataAccountTypeChecking PaykeyV1DataBankDataAccountType = "checking"
const PaykeyV1DataBankDataAccountTypeSavings PaykeyV1DataBankDataAccountType = "savings"
RoutingNumber string

The routing number of the bank account.

minLength9
maxLength9
CustomerID stringoptional

Unique identifier of the related customer object.

formatuuid
ExpiresAt Timeoptional

Expiration date and time of the paykey, if applicable.

formatdate-time
ExternalID stringoptional

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

InstitutionName stringoptional

Name of the financial institution.

Metadata map[string, string]optional

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

StatusDetails PaykeyV1DataStatusDetailsoptional
ChangedAt Time

The time the status change occurred.

formatdate-time
Message string

A human-readable description of the current status.

Reason string
One of the following:
const PaykeyV1DataStatusDetailsReasonInsufficientFunds PaykeyV1DataStatusDetailsReason = "insufficient_funds"
const PaykeyV1DataStatusDetailsReasonClosedBankAccount PaykeyV1DataStatusDetailsReason = "closed_bank_account"
const PaykeyV1DataStatusDetailsReasonInvalidBankAccount PaykeyV1DataStatusDetailsReason = "invalid_bank_account"
const PaykeyV1DataStatusDetailsReasonInvalidRouting PaykeyV1DataStatusDetailsReason = "invalid_routing"
const PaykeyV1DataStatusDetailsReasonDisputed PaykeyV1DataStatusDetailsReason = "disputed"
const PaykeyV1DataStatusDetailsReasonPaymentStopped PaykeyV1DataStatusDetailsReason = "payment_stopped"
const PaykeyV1DataStatusDetailsReasonOwnerDeceased PaykeyV1DataStatusDetailsReason = "owner_deceased"
const PaykeyV1DataStatusDetailsReasonFrozenBankAccount PaykeyV1DataStatusDetailsReason = "frozen_bank_account"
const PaykeyV1DataStatusDetailsReasonRiskReview PaykeyV1DataStatusDetailsReason = "risk_review"
const PaykeyV1DataStatusDetailsReasonFraudulent PaykeyV1DataStatusDetailsReason = "fraudulent"
const PaykeyV1DataStatusDetailsReasonDuplicateEntry PaykeyV1DataStatusDetailsReason = "duplicate_entry"
const PaykeyV1DataStatusDetailsReasonInvalidPaykey PaykeyV1DataStatusDetailsReason = "invalid_paykey"
const PaykeyV1DataStatusDetailsReasonPaymentBlocked PaykeyV1DataStatusDetailsReason = "payment_blocked"
const PaykeyV1DataStatusDetailsReasonAmountTooLarge PaykeyV1DataStatusDetailsReason = "amount_too_large"
const PaykeyV1DataStatusDetailsReasonTooManyAttempts PaykeyV1DataStatusDetailsReason = "too_many_attempts"
const PaykeyV1DataStatusDetailsReasonInternalSystemError PaykeyV1DataStatusDetailsReason = "internal_system_error"
const PaykeyV1DataStatusDetailsReasonUserRequest PaykeyV1DataStatusDetailsReason = "user_request"
const PaykeyV1DataStatusDetailsReasonOk PaykeyV1DataStatusDetailsReason = "ok"
const PaykeyV1DataStatusDetailsReasonOtherNetworkReturn PaykeyV1DataStatusDetailsReason = "other_network_return"
const PaykeyV1DataStatusDetailsReasonPayoutRefused PaykeyV1DataStatusDetailsReason = "payout_refused"
const PaykeyV1DataStatusDetailsReasonCancelRequest PaykeyV1DataStatusDetailsReason = "cancel_request"
const PaykeyV1DataStatusDetailsReasonFailedVerification PaykeyV1DataStatusDetailsReason = "failed_verification"
const PaykeyV1DataStatusDetailsReasonRequireReview PaykeyV1DataStatusDetailsReason = "require_review"
const PaykeyV1DataStatusDetailsReasonBlockedBySystem PaykeyV1DataStatusDetailsReason = "blocked_by_system"
const PaykeyV1DataStatusDetailsReasonWatchtowerReview PaykeyV1DataStatusDetailsReason = "watchtower_review"
const PaykeyV1DataStatusDetailsReasonValidating PaykeyV1DataStatusDetailsReason = "validating"
const PaykeyV1DataStatusDetailsReasonAutoHold PaykeyV1DataStatusDetailsReason = "auto_hold"
Source string
One of the following:
const PaykeyV1DataStatusDetailsSourceWatchtower PaykeyV1DataStatusDetailsSource = "watchtower"
const PaykeyV1DataStatusDetailsSourceBankDecline PaykeyV1DataStatusDetailsSource = "bank_decline"
const PaykeyV1DataStatusDetailsSourceCustomerDispute PaykeyV1DataStatusDetailsSource = "customer_dispute"
const PaykeyV1DataStatusDetailsSourceUserAction PaykeyV1DataStatusDetailsSource = "user_action"
const PaykeyV1DataStatusDetailsSourceSystem PaykeyV1DataStatusDetailsSource = "system"
Code stringoptional

The status code if applicable.

UnblockEligible booloptional

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.

Metadata about the API request, including an identifier and timestamp.

APIRequestID string

Unique identifier for this API request, useful for troubleshooting.

formatuuid
APIRequestTimestamp Time

Timestamp for this API request, useful for troubleshooting.

formatdate-time
ResponseType PaykeyV1ResponseType

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.
One of the following:
const PaykeyV1ResponseTypeObject PaykeyV1ResponseType = "object"
const PaykeyV1ResponseTypeArray PaykeyV1ResponseType = "array"
const PaykeyV1ResponseTypeError PaykeyV1ResponseType = "error"
const PaykeyV1ResponseTypeNone PaykeyV1ResponseType = "none"

PaykeysReview

Paykeys are secure tokens that link verified customer identities to their bank accounts. Each Paykey includes built-in balance checking, fraud detection through LSTM machine learning models, and can be reused for subscriptions and recurring payments without storing sensitive data. Paykeys eliminate fraud by ensuring the person initiating payment owns the funding account.

Update a paykey's status
client.Paykeys.Review.Decision(ctx, id, params) (*PaykeyV1, error)
PATCH/v1/paykeys/{id}/review
Get paykey review details
client.Paykeys.Review.Get(ctx, id, query) (*PaykeyReviewGetResponse, error)
GET/v1/paykeys/{id}/review
Update a paykey's identity review decision
client.Paykeys.Review.RefreshReview(ctx, id, body) (*PaykeyV1, error)
PUT/v1/paykeys/{id}/refresh_review