# Review ## Update a paykey's status `client.Paykeys.Review.Decision(ctx, id, params) (*PaykeyV1, error)` **patch** `/v1/paykeys/{id}/review` Update the status of a paykey when in review status ### Parameters - `id string` - `params PaykeyReviewDecisionParams` - `Status param.Field[PaykeyReviewDecisionParamsStatus]` Body param - `const PaykeyReviewDecisionParamsStatusActive PaykeyReviewDecisionParamsStatus = "active"` - `const PaykeyReviewDecisionParamsStatusRejected PaykeyReviewDecisionParamsStatus = "rejected"` - `CorrelationID param.Field[string]` Header param: Optional client generated identifier to trace and debug a series of requests. - `IdempotencyKey param.Field[string]` Header param: Optional client generated value to use for idempotent requests. - `RequestID param.Field[string]` Header param: Optional client generated identifier to trace and debug a request. - `StraddleAccountID param.Field[string]` Header param: For use by platforms to specify an account id and set scope of a request. ### Returns - `type PaykeyV1 struct{…}` - `Data PaykeyV1Data` - `ID string` Unique identifier for the paykey. - `Config PaykeyV1DataConfig` - `ProcessingMethod string` - `const PaykeyV1DataConfigProcessingMethodInline PaykeyV1DataConfigProcessingMethod = "inline"` - `const PaykeyV1DataConfigProcessingMethodBackground PaykeyV1DataConfigProcessingMethod = "background"` - `const PaykeyV1DataConfigProcessingMethodSkip PaykeyV1DataConfigProcessingMethod = "skip"` - `SandboxOutcome string` - `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. - `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` - `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` - `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. - `Balance PaykeyV1DataBalance` - `Status string` - `const PaykeyV1DataBalanceStatusPending PaykeyV1DataBalanceStatus = "pending"` - `const PaykeyV1DataBalanceStatusCompleted PaykeyV1DataBalanceStatus = "completed"` - `const PaykeyV1DataBalanceStatusFailed PaykeyV1DataBalanceStatus = "failed"` - `AccountBalance int64` Account Balance when last retrieved - `UpdatedAt Time` Last time account balance was updated. - `BankData PaykeyV1DataBankData` - `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` - `const PaykeyV1DataBankDataAccountTypeChecking PaykeyV1DataBankDataAccountType = "checking"` - `const PaykeyV1DataBankDataAccountTypeSavings PaykeyV1DataBankDataAccountType = "savings"` - `RoutingNumber string` The routing number of the bank account. - `CustomerID string` Unique identifier of the related customer object. - `ExpiresAt Time` Expiration date and time of the paykey, if applicable. - `ExternalID string` Unique identifier for the paykey in your database, used for cross-referencing between Straddle and your systems. - `InstitutionName string` Name of the financial institution. - `Metadata map[string, string]` Up to 20 additional user-defined key-value pairs. Useful for storing additional information about the paykey in a structured format. - `StatusDetails PaykeyV1DataStatusDetails` - `ChangedAt Time` The time the status change occurred. - `Message string` A human-readable description of the current status. - `Reason string` - `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` - `const PaykeyV1DataStatusDetailsSourceWatchtower PaykeyV1DataStatusDetailsSource = "watchtower"` - `const PaykeyV1DataStatusDetailsSourceBankDecline PaykeyV1DataStatusDetailsSource = "bank_decline"` - `const PaykeyV1DataStatusDetailsSourceCustomerDispute PaykeyV1DataStatusDetailsSource = "customer_dispute"` - `const PaykeyV1DataStatusDetailsSourceUserAction PaykeyV1DataStatusDetailsSource = "user_action"` - `const PaykeyV1DataStatusDetailsSourceSystem PaykeyV1DataStatusDetailsSource = "system"` - `Code string` The status code if applicable. - `UnblockEligible bool` 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 ResponseMetadata` Metadata about the API request, including an identifier and timestamp. - `APIRequestID string` Unique identifier for this API request, useful for troubleshooting. - `APIRequestTimestamp Time` Timestamp for this API request, useful for troubleshooting. - `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. - `const PaykeyV1ResponseTypeObject PaykeyV1ResponseType = "object"` - `const PaykeyV1ResponseTypeArray PaykeyV1ResponseType = "array"` - `const PaykeyV1ResponseTypeError PaykeyV1ResponseType = "error"` - `const PaykeyV1ResponseTypeNone PaykeyV1ResponseType = "none"` ### Example ```go package main import ( "context" "fmt" "github.com/straddleio/straddle-go" "github.com/straddleio/straddle-go/option" ) func main() { client := straddle.NewClient( option.WithAPIKey("My API Key"), ) paykeyV1, err := client.Paykeys.Review.Decision( context.TODO(), "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", straddle.PaykeyReviewDecisionParams{ Status: straddle.PaykeyReviewDecisionParamsStatusActive, }, ) if err != nil { panic(err.Error()) } fmt.Printf("%+v\n", paykeyV1.Data) } ``` #### 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 `client.Paykeys.Review.Get(ctx, id, query) (*PaykeyReviewGetResponse, error)` **get** `/v1/paykeys/{id}/review` Get additional details about a paykey. ### Parameters - `id string` - `query PaykeyReviewGetParams` - `CorrelationID param.Field[string]` Optional client generated identifier to trace and debug a series of requests. - `RequestID param.Field[string]` Optional client generated identifier to trace and debug a request. - `StraddleAccountID param.Field[string]` For use by platforms to specify an account id and set scope of a request. ### Returns - `type PaykeyReviewGetResponse struct{…}` - `Data PaykeyReviewGetResponseData` - `PaykeyDetails PaykeyReviewGetResponseDataPaykeyDetails` - `ID string` Unique identifier for the paykey. - `Config PaykeyReviewGetResponseDataPaykeyDetailsConfig` - `ProcessingMethod string` - `const PaykeyReviewGetResponseDataPaykeyDetailsConfigProcessingMethodInline PaykeyReviewGetResponseDataPaykeyDetailsConfigProcessingMethod = "inline"` - `const PaykeyReviewGetResponseDataPaykeyDetailsConfigProcessingMethodBackground PaykeyReviewGetResponseDataPaykeyDetailsConfigProcessingMethod = "background"` - `const PaykeyReviewGetResponseDataPaykeyDetailsConfigProcessingMethodSkip PaykeyReviewGetResponseDataPaykeyDetailsConfigProcessingMethod = "skip"` - `SandboxOutcome string` - `const PaykeyReviewGetResponseDataPaykeyDetailsConfigSandboxOutcomeStandard PaykeyReviewGetResponseDataPaykeyDetailsConfigSandboxOutcome = "standard"` - `const PaykeyReviewGetResponseDataPaykeyDetailsConfigSandboxOutcomeActive PaykeyReviewGetResponseDataPaykeyDetailsConfigSandboxOutcome = "active"` - `const PaykeyReviewGetResponseDataPaykeyDetailsConfigSandboxOutcomeRejected PaykeyReviewGetResponseDataPaykeyDetailsConfigSandboxOutcome = "rejected"` - `const PaykeyReviewGetResponseDataPaykeyDetailsConfigSandboxOutcomeReview PaykeyReviewGetResponseDataPaykeyDetailsConfigSandboxOutcome = "review"` - `CreatedAt Time` 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 string` - `const PaykeyReviewGetResponseDataPaykeyDetailsSourceBankAccount PaykeyReviewGetResponseDataPaykeyDetailsSource = "bank_account"` - `const PaykeyReviewGetResponseDataPaykeyDetailsSourceStraddle PaykeyReviewGetResponseDataPaykeyDetailsSource = "straddle"` - `const PaykeyReviewGetResponseDataPaykeyDetailsSourceMx PaykeyReviewGetResponseDataPaykeyDetailsSource = "mx"` - `const PaykeyReviewGetResponseDataPaykeyDetailsSourcePlaid PaykeyReviewGetResponseDataPaykeyDetailsSource = "plaid"` - `const PaykeyReviewGetResponseDataPaykeyDetailsSourceTan PaykeyReviewGetResponseDataPaykeyDetailsSource = "tan"` - `const PaykeyReviewGetResponseDataPaykeyDetailsSourceQuiltt PaykeyReviewGetResponseDataPaykeyDetailsSource = "quiltt"` - `Status string` - `const PaykeyReviewGetResponseDataPaykeyDetailsStatusPending PaykeyReviewGetResponseDataPaykeyDetailsStatus = "pending"` - `const PaykeyReviewGetResponseDataPaykeyDetailsStatusActive PaykeyReviewGetResponseDataPaykeyDetailsStatus = "active"` - `const PaykeyReviewGetResponseDataPaykeyDetailsStatusInactive PaykeyReviewGetResponseDataPaykeyDetailsStatus = "inactive"` - `const PaykeyReviewGetResponseDataPaykeyDetailsStatusRejected PaykeyReviewGetResponseDataPaykeyDetailsStatus = "rejected"` - `const PaykeyReviewGetResponseDataPaykeyDetailsStatusReview PaykeyReviewGetResponseDataPaykeyDetailsStatus = "review"` - `const PaykeyReviewGetResponseDataPaykeyDetailsStatusBlocked PaykeyReviewGetResponseDataPaykeyDetailsStatus = "blocked"` - `UpdatedAt Time` Timestamp of the most recent update to the paykey. - `Balance PaykeyReviewGetResponseDataPaykeyDetailsBalance` - `Status string` - `const PaykeyReviewGetResponseDataPaykeyDetailsBalanceStatusPending PaykeyReviewGetResponseDataPaykeyDetailsBalanceStatus = "pending"` - `const PaykeyReviewGetResponseDataPaykeyDetailsBalanceStatusCompleted PaykeyReviewGetResponseDataPaykeyDetailsBalanceStatus = "completed"` - `const PaykeyReviewGetResponseDataPaykeyDetailsBalanceStatusFailed PaykeyReviewGetResponseDataPaykeyDetailsBalanceStatus = "failed"` - `AccountBalance int64` Account Balance when last retrieved - `UpdatedAt Time` Last time account balance was updated. - `BankData PaykeyReviewGetResponseDataPaykeyDetailsBankData` - `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` - `const PaykeyReviewGetResponseDataPaykeyDetailsBankDataAccountTypeChecking PaykeyReviewGetResponseDataPaykeyDetailsBankDataAccountType = "checking"` - `const PaykeyReviewGetResponseDataPaykeyDetailsBankDataAccountTypeSavings PaykeyReviewGetResponseDataPaykeyDetailsBankDataAccountType = "savings"` - `RoutingNumber string` The routing number of the bank account. - `CustomerID string` Unique identifier of the related customer object. - `ExpiresAt Time` Expiration date and time of the paykey, if applicable. - `ExternalID string` Unique identifier for the paykey in your database, used for cross-referencing between Straddle and your systems. - `InstitutionName string` Name of the financial institution. - `Metadata map[string, string]` Up to 20 additional user-defined key-value pairs. Useful for storing additional information about the paykey in a structured format. - `StatusDetails PaykeyReviewGetResponseDataPaykeyDetailsStatusDetails` - `ChangedAt Time` The time the status change occurred. - `Message string` A human-readable description of the current status. - `Reason string` - `const PaykeyReviewGetResponseDataPaykeyDetailsStatusDetailsReasonInsufficientFunds PaykeyReviewGetResponseDataPaykeyDetailsStatusDetailsReason = "insufficient_funds"` - `const PaykeyReviewGetResponseDataPaykeyDetailsStatusDetailsReasonClosedBankAccount PaykeyReviewGetResponseDataPaykeyDetailsStatusDetailsReason = "closed_bank_account"` - `const PaykeyReviewGetResponseDataPaykeyDetailsStatusDetailsReasonInvalidBankAccount PaykeyReviewGetResponseDataPaykeyDetailsStatusDetailsReason = "invalid_bank_account"` - `const PaykeyReviewGetResponseDataPaykeyDetailsStatusDetailsReasonInvalidRouting PaykeyReviewGetResponseDataPaykeyDetailsStatusDetailsReason = "invalid_routing"` - `const PaykeyReviewGetResponseDataPaykeyDetailsStatusDetailsReasonDisputed PaykeyReviewGetResponseDataPaykeyDetailsStatusDetailsReason = "disputed"` - `const PaykeyReviewGetResponseDataPaykeyDetailsStatusDetailsReasonPaymentStopped PaykeyReviewGetResponseDataPaykeyDetailsStatusDetailsReason = "payment_stopped"` - `const PaykeyReviewGetResponseDataPaykeyDetailsStatusDetailsReasonOwnerDeceased PaykeyReviewGetResponseDataPaykeyDetailsStatusDetailsReason = "owner_deceased"` - `const PaykeyReviewGetResponseDataPaykeyDetailsStatusDetailsReasonFrozenBankAccount PaykeyReviewGetResponseDataPaykeyDetailsStatusDetailsReason = "frozen_bank_account"` - `const PaykeyReviewGetResponseDataPaykeyDetailsStatusDetailsReasonRiskReview PaykeyReviewGetResponseDataPaykeyDetailsStatusDetailsReason = "risk_review"` - `const PaykeyReviewGetResponseDataPaykeyDetailsStatusDetailsReasonFraudulent PaykeyReviewGetResponseDataPaykeyDetailsStatusDetailsReason = "fraudulent"` - `const PaykeyReviewGetResponseDataPaykeyDetailsStatusDetailsReasonDuplicateEntry PaykeyReviewGetResponseDataPaykeyDetailsStatusDetailsReason = "duplicate_entry"` - `const PaykeyReviewGetResponseDataPaykeyDetailsStatusDetailsReasonInvalidPaykey PaykeyReviewGetResponseDataPaykeyDetailsStatusDetailsReason = "invalid_paykey"` - `const PaykeyReviewGetResponseDataPaykeyDetailsStatusDetailsReasonPaymentBlocked PaykeyReviewGetResponseDataPaykeyDetailsStatusDetailsReason = "payment_blocked"` - `const PaykeyReviewGetResponseDataPaykeyDetailsStatusDetailsReasonAmountTooLarge PaykeyReviewGetResponseDataPaykeyDetailsStatusDetailsReason = "amount_too_large"` - `const PaykeyReviewGetResponseDataPaykeyDetailsStatusDetailsReasonTooManyAttempts PaykeyReviewGetResponseDataPaykeyDetailsStatusDetailsReason = "too_many_attempts"` - `const PaykeyReviewGetResponseDataPaykeyDetailsStatusDetailsReasonInternalSystemError PaykeyReviewGetResponseDataPaykeyDetailsStatusDetailsReason = "internal_system_error"` - `const PaykeyReviewGetResponseDataPaykeyDetailsStatusDetailsReasonUserRequest PaykeyReviewGetResponseDataPaykeyDetailsStatusDetailsReason = "user_request"` - `const PaykeyReviewGetResponseDataPaykeyDetailsStatusDetailsReasonOk PaykeyReviewGetResponseDataPaykeyDetailsStatusDetailsReason = "ok"` - `const PaykeyReviewGetResponseDataPaykeyDetailsStatusDetailsReasonOtherNetworkReturn PaykeyReviewGetResponseDataPaykeyDetailsStatusDetailsReason = "other_network_return"` - `const PaykeyReviewGetResponseDataPaykeyDetailsStatusDetailsReasonPayoutRefused PaykeyReviewGetResponseDataPaykeyDetailsStatusDetailsReason = "payout_refused"` - `const PaykeyReviewGetResponseDataPaykeyDetailsStatusDetailsReasonCancelRequest PaykeyReviewGetResponseDataPaykeyDetailsStatusDetailsReason = "cancel_request"` - `const PaykeyReviewGetResponseDataPaykeyDetailsStatusDetailsReasonFailedVerification PaykeyReviewGetResponseDataPaykeyDetailsStatusDetailsReason = "failed_verification"` - `const PaykeyReviewGetResponseDataPaykeyDetailsStatusDetailsReasonRequireReview PaykeyReviewGetResponseDataPaykeyDetailsStatusDetailsReason = "require_review"` - `const PaykeyReviewGetResponseDataPaykeyDetailsStatusDetailsReasonBlockedBySystem PaykeyReviewGetResponseDataPaykeyDetailsStatusDetailsReason = "blocked_by_system"` - `const PaykeyReviewGetResponseDataPaykeyDetailsStatusDetailsReasonWatchtowerReview PaykeyReviewGetResponseDataPaykeyDetailsStatusDetailsReason = "watchtower_review"` - `const PaykeyReviewGetResponseDataPaykeyDetailsStatusDetailsReasonValidating PaykeyReviewGetResponseDataPaykeyDetailsStatusDetailsReason = "validating"` - `const PaykeyReviewGetResponseDataPaykeyDetailsStatusDetailsReasonAutoHold PaykeyReviewGetResponseDataPaykeyDetailsStatusDetailsReason = "auto_hold"` - `Source string` - `const PaykeyReviewGetResponseDataPaykeyDetailsStatusDetailsSourceWatchtower PaykeyReviewGetResponseDataPaykeyDetailsStatusDetailsSource = "watchtower"` - `const PaykeyReviewGetResponseDataPaykeyDetailsStatusDetailsSourceBankDecline PaykeyReviewGetResponseDataPaykeyDetailsStatusDetailsSource = "bank_decline"` - `const PaykeyReviewGetResponseDataPaykeyDetailsStatusDetailsSourceCustomerDispute PaykeyReviewGetResponseDataPaykeyDetailsStatusDetailsSource = "customer_dispute"` - `const PaykeyReviewGetResponseDataPaykeyDetailsStatusDetailsSourceUserAction PaykeyReviewGetResponseDataPaykeyDetailsStatusDetailsSource = "user_action"` - `const PaykeyReviewGetResponseDataPaykeyDetailsStatusDetailsSourceSystem PaykeyReviewGetResponseDataPaykeyDetailsStatusDetailsSource = "system"` - `Code string` The status code if applicable. - `UnblockEligible bool` Indicates whether this paykey is eligible for client-initiated unblocking. Only present for blocked paykeys. True when blocked due to R29 returns and not previously unblocked, false otherwise. Null when paykey is not blocked. - `VerificationDetails PaykeyReviewGetResponseDataVerificationDetails` - `ID string` Unique identifier for the verification details. - `Breakdown PaykeyReviewGetResponseDataVerificationDetailsBreakdown` - `AccountValidation PaykeyReviewGetResponseDataVerificationDetailsBreakdownAccountValidation` - `Codes []string` - `Decision string` - `const PaykeyReviewGetResponseDataVerificationDetailsBreakdownAccountValidationDecisionAccept PaykeyReviewGetResponseDataVerificationDetailsBreakdownAccountValidationDecision = "accept"` - `const PaykeyReviewGetResponseDataVerificationDetailsBreakdownAccountValidationDecisionReject PaykeyReviewGetResponseDataVerificationDetailsBreakdownAccountValidationDecision = "reject"` - `const PaykeyReviewGetResponseDataVerificationDetailsBreakdownAccountValidationDecisionReview PaykeyReviewGetResponseDataVerificationDetailsBreakdownAccountValidationDecision = "review"` - `Reason string` - `NameMatch PaykeyReviewGetResponseDataVerificationDetailsBreakdownNameMatch` - `Codes []string` - `Decision string` - `const PaykeyReviewGetResponseDataVerificationDetailsBreakdownNameMatchDecisionAccept PaykeyReviewGetResponseDataVerificationDetailsBreakdownNameMatchDecision = "accept"` - `const PaykeyReviewGetResponseDataVerificationDetailsBreakdownNameMatchDecisionReject PaykeyReviewGetResponseDataVerificationDetailsBreakdownNameMatchDecision = "reject"` - `const PaykeyReviewGetResponseDataVerificationDetailsBreakdownNameMatchDecisionReview PaykeyReviewGetResponseDataVerificationDetailsBreakdownNameMatchDecision = "review"` - `CorrelationScore float64` - `CustomerName string` - `MatchedName string` - `NamesOnAccount []string` - `Reason string` - `CreatedAt Time` Timestamp of when the verification was initiated. - `Decision string` - `const PaykeyReviewGetResponseDataVerificationDetailsDecisionAccept PaykeyReviewGetResponseDataVerificationDetailsDecision = "accept"` - `const PaykeyReviewGetResponseDataVerificationDetailsDecisionReject PaykeyReviewGetResponseDataVerificationDetailsDecision = "reject"` - `const PaykeyReviewGetResponseDataVerificationDetailsDecisionReview PaykeyReviewGetResponseDataVerificationDetailsDecision = "review"` - `Messages map[string, string]` Dictionary of all messages from the paykey verification process. - `UpdatedAt Time` Timestamp of the most recent update to the verification details. - `Meta ResponseMetadata` Metadata about the API request, including an identifier and timestamp. - `APIRequestID string` Unique identifier for this API request, useful for troubleshooting. - `APIRequestTimestamp Time` Timestamp for this API request, useful for troubleshooting. - `ResponseType PaykeyReviewGetResponseResponseType` 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. - `const PaykeyReviewGetResponseResponseTypeObject PaykeyReviewGetResponseResponseType = "object"` - `const PaykeyReviewGetResponseResponseTypeArray PaykeyReviewGetResponseResponseType = "array"` - `const PaykeyReviewGetResponseResponseTypeError PaykeyReviewGetResponseResponseType = "error"` - `const PaykeyReviewGetResponseResponseTypeNone PaykeyReviewGetResponseResponseType = "none"` ### Example ```go package main import ( "context" "fmt" "github.com/straddleio/straddle-go" "github.com/straddleio/straddle-go/option" ) func main() { client := straddle.NewClient( option.WithAPIKey("My API Key"), ) review, err := client.Paykeys.Review.Get( context.TODO(), "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", straddle.PaykeyReviewGetParams{ }, ) if err != nil { panic(err.Error()) } fmt.Printf("%+v\n", review.Data) } ``` #### 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 `client.Paykeys.Review.RefreshReview(ctx, id, body) (*PaykeyV1, error)` **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` - `body PaykeyReviewRefreshReviewParams` - `CorrelationID param.Field[string]` Optional client generated identifier to trace and debug a series of requests. - `IdempotencyKey param.Field[string]` Optional client generated value to use for idempotent requests. - `RequestID param.Field[string]` Optional client generated identifier to trace and debug a request. - `StraddleAccountID param.Field[string]` For use by platforms to specify an account id and set scope of a request. ### Returns - `type PaykeyV1 struct{…}` - `Data PaykeyV1Data` - `ID string` Unique identifier for the paykey. - `Config PaykeyV1DataConfig` - `ProcessingMethod string` - `const PaykeyV1DataConfigProcessingMethodInline PaykeyV1DataConfigProcessingMethod = "inline"` - `const PaykeyV1DataConfigProcessingMethodBackground PaykeyV1DataConfigProcessingMethod = "background"` - `const PaykeyV1DataConfigProcessingMethodSkip PaykeyV1DataConfigProcessingMethod = "skip"` - `SandboxOutcome string` - `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. - `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` - `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` - `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. - `Balance PaykeyV1DataBalance` - `Status string` - `const PaykeyV1DataBalanceStatusPending PaykeyV1DataBalanceStatus = "pending"` - `const PaykeyV1DataBalanceStatusCompleted PaykeyV1DataBalanceStatus = "completed"` - `const PaykeyV1DataBalanceStatusFailed PaykeyV1DataBalanceStatus = "failed"` - `AccountBalance int64` Account Balance when last retrieved - `UpdatedAt Time` Last time account balance was updated. - `BankData PaykeyV1DataBankData` - `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` - `const PaykeyV1DataBankDataAccountTypeChecking PaykeyV1DataBankDataAccountType = "checking"` - `const PaykeyV1DataBankDataAccountTypeSavings PaykeyV1DataBankDataAccountType = "savings"` - `RoutingNumber string` The routing number of the bank account. - `CustomerID string` Unique identifier of the related customer object. - `ExpiresAt Time` Expiration date and time of the paykey, if applicable. - `ExternalID string` Unique identifier for the paykey in your database, used for cross-referencing between Straddle and your systems. - `InstitutionName string` Name of the financial institution. - `Metadata map[string, string]` Up to 20 additional user-defined key-value pairs. Useful for storing additional information about the paykey in a structured format. - `StatusDetails PaykeyV1DataStatusDetails` - `ChangedAt Time` The time the status change occurred. - `Message string` A human-readable description of the current status. - `Reason string` - `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` - `const PaykeyV1DataStatusDetailsSourceWatchtower PaykeyV1DataStatusDetailsSource = "watchtower"` - `const PaykeyV1DataStatusDetailsSourceBankDecline PaykeyV1DataStatusDetailsSource = "bank_decline"` - `const PaykeyV1DataStatusDetailsSourceCustomerDispute PaykeyV1DataStatusDetailsSource = "customer_dispute"` - `const PaykeyV1DataStatusDetailsSourceUserAction PaykeyV1DataStatusDetailsSource = "user_action"` - `const PaykeyV1DataStatusDetailsSourceSystem PaykeyV1DataStatusDetailsSource = "system"` - `Code string` The status code if applicable. - `UnblockEligible bool` 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 ResponseMetadata` Metadata about the API request, including an identifier and timestamp. - `APIRequestID string` Unique identifier for this API request, useful for troubleshooting. - `APIRequestTimestamp Time` Timestamp for this API request, useful for troubleshooting. - `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. - `const PaykeyV1ResponseTypeObject PaykeyV1ResponseType = "object"` - `const PaykeyV1ResponseTypeArray PaykeyV1ResponseType = "array"` - `const PaykeyV1ResponseTypeError PaykeyV1ResponseType = "error"` - `const PaykeyV1ResponseTypeNone PaykeyV1ResponseType = "none"` ### Example ```go package main import ( "context" "fmt" "github.com/straddleio/straddle-go" "github.com/straddleio/straddle-go/option" ) func main() { client := straddle.NewClient( option.WithAPIKey("My API Key"), ) paykeyV1, err := client.Paykeys.Review.RefreshReview( context.TODO(), "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", straddle.PaykeyReviewRefreshReviewParams{ }, ) if err != nil { panic(err.Error()) } fmt.Printf("%+v\n", paykeyV1.Data) } ``` #### 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" } ```