# Payouts ## Lookup a payout `PayoutV1 Payouts.Get(PayoutGetParamsparameters, CancellationTokencancellationToken = default)` **get** `/v1/payouts/{id}` Retrieves the details of an existing payout. Supply the unique payout `id` to retrieve the corresponding payout information. ### Parameters - `PayoutGetParams parameters` - `required string id` - `string correlationID` Optional client generated identifier to trace and debug a series of requests. - `string requestID` Optional client generated identifier to trace and debug a request. - `string straddleAccountID` For use by platforms to specify an account id and set scope of a request. ### Returns - `class PayoutV1:` - `required Data Data` - `required string ID` Unique identifier for the payout. - `required Int Amount` The amount of the payout in cents. - `required Config Config` Configuration for the payout. - `Boolean? AutoHold` Defines whether to automatically place this charge on hold after being created. - `string? AutoHoldMessage` The reason the payout is being automatically held on creation. - `SandboxOutcome SandboxOutcome` Payment will simulate processing if not Standard. - `"standard"Standard` - `"paid"Paid` - `"on_hold_daily_limit"OnHoldDailyLimit` - `"cancelled_for_fraud_risk"CancelledForFraudRisk` - `"cancelled_for_balance_check"CancelledForBalanceCheck` - `"failed_insufficient_funds"FailedInsufficientFunds` - `"reversed_insufficient_funds"ReversedInsufficientFunds` - `"failed_customer_dispute"FailedCustomerDispute` - `"reversed_customer_dispute"ReversedCustomerDispute` - `"failed_closed_bank_account"FailedClosedBankAccount` - `"reversed_closed_bank_account"ReversedClosedBankAccount` - `required string Currency` The currency of the payout. Only USD is supported. - `required string? Description` An arbitrary description for the payout. - `required DeviceInfoV1 Device` Information about the device used when the customer authorized the payout. - `required string IPAddress` The IP address of the device used when the customer authorized the charge or payout. Use `0.0.0.0` to represent an offline consent interaction. - `required string ExternalID` Unique identifier for the payout in your database. This value must be unique across all payouts. - `required IReadOnlyList FundingIds` Funding Ids - `required string Paykey` Value of the `paykey` used for the payout. - `required DateOnly PaymentDate` The desired date on which the payment should be occur. For payouts, this means the date you want the funds to be sent from your bank account. - `required Status Status` The current status of the payout. - `"created"Created` - `"scheduled"Scheduled` - `"failed"Failed` - `"cancelled"Cancelled` - `"on_hold"OnHold` - `"pending"Pending` - `"paid"Paid` - `"reversed"Reversed` - `"validating"Validating` - `required StatusDetailsV1 StatusDetails` Details about the current status of the payout. - `required DateTimeOffset ChangedAt` The time the status change occurred. - `required string Message` A human-readable description of the current status. - `required Reason Reason` A machine-readable identifier for the specific status, useful for programmatic handling. - `"insufficient_funds"InsufficientFunds` - `"closed_bank_account"ClosedBankAccount` - `"invalid_bank_account"InvalidBankAccount` - `"invalid_routing"InvalidRouting` - `"disputed"Disputed` - `"payment_stopped"PaymentStopped` - `"owner_deceased"OwnerDeceased` - `"frozen_bank_account"FrozenBankAccount` - `"risk_review"RiskReview` - `"fraudulent"Fraudulent` - `"duplicate_entry"DuplicateEntry` - `"invalid_paykey"InvalidPaykey` - `"payment_blocked"PaymentBlocked` - `"amount_too_large"AmountTooLarge` - `"too_many_attempts"TooManyAttempts` - `"internal_system_error"InternalSystemError` - `"user_request"UserRequest` - `"ok"Ok` - `"other_network_return"OtherNetworkReturn` - `"payout_refused"PayoutRefused` - `"cancel_request"CancelRequest` - `"failed_verification"FailedVerification` - `"require_review"RequireReview` - `"blocked_by_system"BlockedBySystem` - `"watchtower_review"WatchtowerReview` - `"validating"Validating` - `"auto_hold"AutoHold` - `required Source Source` Identifies the origin of the status change (e.g., `bank_decline`, `watchtower`). This helps in tracking the cause of status updates. - `"watchtower"Watchtower` - `"bank_decline"BankDecline` - `"customer_dispute"CustomerDispute` - `"user_action"UserAction` - `"system"System` - `string? Code` The status code if applicable. - `required IReadOnlyList StatusHistory` History of the status changes for the payout. - `required DateTimeOffset ChangedAt` The time the status change occurred. - `required string Message` A human-readable description of the status. - `required Reason Reason` A machine-readable identifier for the specific status, useful for programmatic handling. - `"insufficient_funds"InsufficientFunds` - `"closed_bank_account"ClosedBankAccount` - `"invalid_bank_account"InvalidBankAccount` - `"invalid_routing"InvalidRouting` - `"disputed"Disputed` - `"payment_stopped"PaymentStopped` - `"owner_deceased"OwnerDeceased` - `"frozen_bank_account"FrozenBankAccount` - `"risk_review"RiskReview` - `"fraudulent"Fraudulent` - `"duplicate_entry"DuplicateEntry` - `"invalid_paykey"InvalidPaykey` - `"payment_blocked"PaymentBlocked` - `"amount_too_large"AmountTooLarge` - `"too_many_attempts"TooManyAttempts` - `"internal_system_error"InternalSystemError` - `"user_request"UserRequest` - `"ok"Ok` - `"other_network_return"OtherNetworkReturn` - `"payout_refused"PayoutRefused` - `"cancel_request"CancelRequest` - `"failed_verification"FailedVerification` - `"require_review"RequireReview` - `"blocked_by_system"BlockedBySystem` - `"watchtower_review"WatchtowerReview` - `"validating"Validating` - `"auto_hold"AutoHold` - `required Source Source` Identifies the origin of the status change (e.g., `bank_decline`, `watchtower`). This helps in tracking the cause of status updates. - `"watchtower"Watchtower` - `"bank_decline"BankDecline` - `"customer_dispute"CustomerDispute` - `"user_action"UserAction` - `"system"System` - `required Status Status` The current status of the `charge` or `payout`. - `"created"Created` - `"scheduled"Scheduled` - `"failed"Failed` - `"cancelled"Cancelled` - `"on_hold"OnHold` - `"pending"Pending` - `"paid"Paid` - `"reversed"Reversed` - `"validating"Validating` - `string? Code` The status code if applicable. - `required IReadOnlyDictionary TraceIds` Trace Ids. - `DateTimeOffset? CreatedAt` The time the payout was created. - `CustomerDetailsV1 CustomerDetails` Information about the customer associated with the payout. - `required string ID` Unique identifier for the customer - `required CustomerType CustomerType` The type of customer - `"individual"Individual` - `"business"Business` - `required string Email` The customer's email address - `required string Name` The name of the customer - `required string Phone` The customer's phone number in E.164 format - `DateTimeOffset? EffectiveAt` The actual date on which the payment occurred. For payouts, this is the date the funds were sent from your bank account. - `IReadOnlyDictionary? Metadata` Up to 20 additional user-defined key-value pairs. Useful for storing additional information about the payout in a structured format. - `PaykeyDetailsV1 PaykeyDetails` Information about the paykey used for the payout. - `required string ID` Unique identifier for the paykey. - `required string CustomerID` Unique identifier for the customer associated with the paykey. - `required string Label` Human-readable label that combines the bank name and masked account number to help easility represent this paykey in a UI - `Int? Balance` The most recent balance of the bank account associated with the paykey in dollars. - `PaymentRail PaymentRail` The payment rail used for the payout. - `"ach"Ach` - `DateTimeOffset? ProcessedAt` The time the payout was processed by Straddle and originated to the payment rail. - `IReadOnlyDictionary? RelatedPayments` Related payments. - `"original"Original` - `"resubmit"Resubmit` - `"refund"Refund` - `DateTimeOffset? UpdatedAt` The time the payout was last updated. - `required ResponseMetadata Meta` Metadata about the API request, including an identifier and timestamp. - `required string ApiRequestID` Unique identifier for this API request, useful for troubleshooting. - `required DateTimeOffset ApiRequestTimestamp` Timestamp for this API request, useful for troubleshooting. - `required ResponseType ResponseType` Indicates the structure of the returned content. - "object" means the `data` field contains a single JSON object. - "array" means the `data` field contains an array of objects. - "error" means the `data` field contains an error object with details of the issue. - "none" means no data is returned. - `"object"Object` - `"array"Array` - `"error"Error` - `"none"None` ### Example ```csharp PayoutGetParams parameters = new() { ID = "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e" }; var payoutV1 = await client.Payouts.Get(parameters); Console.WriteLine(payoutV1); ``` #### Response ```json { "data": { "id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", "amount": 10000, "config": { "auto_hold": true, "auto_hold_message": "auto_hold_message", "sandbox_outcome": "standard" }, "currency": "currency", "description": "description", "device": { "ip_address": "192.168.1.1" }, "external_id": "external_id", "funding_ids": [ "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e" ], "paykey": "paykey", "payment_date": "2019-12-27", "status": "created", "status_details": { "changed_at": "2019-12-27T18:11:19.117Z", "message": "Payment successfully created and awaiting validation.", "reason": "insufficient_funds", "source": "system", "code": null }, "status_history": [ { "changed_at": "2019-12-27T18:11:19.117Z", "message": "Payment successfully created and awaiting validation.", "reason": "insufficient_funds", "source": "watchtower", "status": "created", "code": null } ], "trace_ids": { "foo": "string" }, "created_at": "2019-12-27T18:11:19.117Z", "customer_details": { "id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", "customer_type": "individual", "email": "ron@swanson.com", "name": "Ron Swanson", "phone": "+1234567890" }, "effective_at": "2019-12-27T18:11:19.117Z", "metadata": { "foo": "string" }, "paykey_details": { "id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", "customer_id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", "label": "Bank of America ****1234", "balance": 0 }, "payment_rail": "ach", "processed_at": "2019-12-27T18:11:19.117Z", "related_payments": { "foo": "original" }, "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 payout `PayoutV1 Payouts.Update(PayoutUpdateParamsparameters, CancellationTokencancellationToken = default)` **put** `/v1/payouts/{id}` Update the details of a payout prior to processing. The status of the payout must be `created`, `scheduled`, or `on_hold`. ### Parameters - `PayoutUpdateParams parameters` - `required string id` Path param - `required Int amount` Body param: The amount of the payout in cents. - `required string? description` Body param: An arbitrary description for the payout. - `required DateOnly paymentDate` Body param: The desired date on which the payment should be occur. For payouts, this means the date you want the funds to be sent from your bank account. - `IReadOnlyDictionary? metadata` Body param: Up to 20 additional user-defined key-value pairs. Useful for storing additional information about the payout in a structured format. - `string correlationID` Header param: Optional client generated identifier to trace and debug a series of requests. - `string idempotencyKey` Header param: Optional client generated value to use for idempotent requests. - `string requestID` Header param: Optional client generated identifier to trace and debug a request. - `string straddleAccountID` Header param: For use by platforms to specify an account id and set scope of a request. ### Returns - `class PayoutV1:` - `required Data Data` - `required string ID` Unique identifier for the payout. - `required Int Amount` The amount of the payout in cents. - `required Config Config` Configuration for the payout. - `Boolean? AutoHold` Defines whether to automatically place this charge on hold after being created. - `string? AutoHoldMessage` The reason the payout is being automatically held on creation. - `SandboxOutcome SandboxOutcome` Payment will simulate processing if not Standard. - `"standard"Standard` - `"paid"Paid` - `"on_hold_daily_limit"OnHoldDailyLimit` - `"cancelled_for_fraud_risk"CancelledForFraudRisk` - `"cancelled_for_balance_check"CancelledForBalanceCheck` - `"failed_insufficient_funds"FailedInsufficientFunds` - `"reversed_insufficient_funds"ReversedInsufficientFunds` - `"failed_customer_dispute"FailedCustomerDispute` - `"reversed_customer_dispute"ReversedCustomerDispute` - `"failed_closed_bank_account"FailedClosedBankAccount` - `"reversed_closed_bank_account"ReversedClosedBankAccount` - `required string Currency` The currency of the payout. Only USD is supported. - `required string? Description` An arbitrary description for the payout. - `required DeviceInfoV1 Device` Information about the device used when the customer authorized the payout. - `required string IPAddress` The IP address of the device used when the customer authorized the charge or payout. Use `0.0.0.0` to represent an offline consent interaction. - `required string ExternalID` Unique identifier for the payout in your database. This value must be unique across all payouts. - `required IReadOnlyList FundingIds` Funding Ids - `required string Paykey` Value of the `paykey` used for the payout. - `required DateOnly PaymentDate` The desired date on which the payment should be occur. For payouts, this means the date you want the funds to be sent from your bank account. - `required Status Status` The current status of the payout. - `"created"Created` - `"scheduled"Scheduled` - `"failed"Failed` - `"cancelled"Cancelled` - `"on_hold"OnHold` - `"pending"Pending` - `"paid"Paid` - `"reversed"Reversed` - `"validating"Validating` - `required StatusDetailsV1 StatusDetails` Details about the current status of the payout. - `required DateTimeOffset ChangedAt` The time the status change occurred. - `required string Message` A human-readable description of the current status. - `required Reason Reason` A machine-readable identifier for the specific status, useful for programmatic handling. - `"insufficient_funds"InsufficientFunds` - `"closed_bank_account"ClosedBankAccount` - `"invalid_bank_account"InvalidBankAccount` - `"invalid_routing"InvalidRouting` - `"disputed"Disputed` - `"payment_stopped"PaymentStopped` - `"owner_deceased"OwnerDeceased` - `"frozen_bank_account"FrozenBankAccount` - `"risk_review"RiskReview` - `"fraudulent"Fraudulent` - `"duplicate_entry"DuplicateEntry` - `"invalid_paykey"InvalidPaykey` - `"payment_blocked"PaymentBlocked` - `"amount_too_large"AmountTooLarge` - `"too_many_attempts"TooManyAttempts` - `"internal_system_error"InternalSystemError` - `"user_request"UserRequest` - `"ok"Ok` - `"other_network_return"OtherNetworkReturn` - `"payout_refused"PayoutRefused` - `"cancel_request"CancelRequest` - `"failed_verification"FailedVerification` - `"require_review"RequireReview` - `"blocked_by_system"BlockedBySystem` - `"watchtower_review"WatchtowerReview` - `"validating"Validating` - `"auto_hold"AutoHold` - `required Source Source` Identifies the origin of the status change (e.g., `bank_decline`, `watchtower`). This helps in tracking the cause of status updates. - `"watchtower"Watchtower` - `"bank_decline"BankDecline` - `"customer_dispute"CustomerDispute` - `"user_action"UserAction` - `"system"System` - `string? Code` The status code if applicable. - `required IReadOnlyList StatusHistory` History of the status changes for the payout. - `required DateTimeOffset ChangedAt` The time the status change occurred. - `required string Message` A human-readable description of the status. - `required Reason Reason` A machine-readable identifier for the specific status, useful for programmatic handling. - `"insufficient_funds"InsufficientFunds` - `"closed_bank_account"ClosedBankAccount` - `"invalid_bank_account"InvalidBankAccount` - `"invalid_routing"InvalidRouting` - `"disputed"Disputed` - `"payment_stopped"PaymentStopped` - `"owner_deceased"OwnerDeceased` - `"frozen_bank_account"FrozenBankAccount` - `"risk_review"RiskReview` - `"fraudulent"Fraudulent` - `"duplicate_entry"DuplicateEntry` - `"invalid_paykey"InvalidPaykey` - `"payment_blocked"PaymentBlocked` - `"amount_too_large"AmountTooLarge` - `"too_many_attempts"TooManyAttempts` - `"internal_system_error"InternalSystemError` - `"user_request"UserRequest` - `"ok"Ok` - `"other_network_return"OtherNetworkReturn` - `"payout_refused"PayoutRefused` - `"cancel_request"CancelRequest` - `"failed_verification"FailedVerification` - `"require_review"RequireReview` - `"blocked_by_system"BlockedBySystem` - `"watchtower_review"WatchtowerReview` - `"validating"Validating` - `"auto_hold"AutoHold` - `required Source Source` Identifies the origin of the status change (e.g., `bank_decline`, `watchtower`). This helps in tracking the cause of status updates. - `"watchtower"Watchtower` - `"bank_decline"BankDecline` - `"customer_dispute"CustomerDispute` - `"user_action"UserAction` - `"system"System` - `required Status Status` The current status of the `charge` or `payout`. - `"created"Created` - `"scheduled"Scheduled` - `"failed"Failed` - `"cancelled"Cancelled` - `"on_hold"OnHold` - `"pending"Pending` - `"paid"Paid` - `"reversed"Reversed` - `"validating"Validating` - `string? Code` The status code if applicable. - `required IReadOnlyDictionary TraceIds` Trace Ids. - `DateTimeOffset? CreatedAt` The time the payout was created. - `CustomerDetailsV1 CustomerDetails` Information about the customer associated with the payout. - `required string ID` Unique identifier for the customer - `required CustomerType CustomerType` The type of customer - `"individual"Individual` - `"business"Business` - `required string Email` The customer's email address - `required string Name` The name of the customer - `required string Phone` The customer's phone number in E.164 format - `DateTimeOffset? EffectiveAt` The actual date on which the payment occurred. For payouts, this is the date the funds were sent from your bank account. - `IReadOnlyDictionary? Metadata` Up to 20 additional user-defined key-value pairs. Useful for storing additional information about the payout in a structured format. - `PaykeyDetailsV1 PaykeyDetails` Information about the paykey used for the payout. - `required string ID` Unique identifier for the paykey. - `required string CustomerID` Unique identifier for the customer associated with the paykey. - `required string Label` Human-readable label that combines the bank name and masked account number to help easility represent this paykey in a UI - `Int? Balance` The most recent balance of the bank account associated with the paykey in dollars. - `PaymentRail PaymentRail` The payment rail used for the payout. - `"ach"Ach` - `DateTimeOffset? ProcessedAt` The time the payout was processed by Straddle and originated to the payment rail. - `IReadOnlyDictionary? RelatedPayments` Related payments. - `"original"Original` - `"resubmit"Resubmit` - `"refund"Refund` - `DateTimeOffset? UpdatedAt` The time the payout was last updated. - `required ResponseMetadata Meta` Metadata about the API request, including an identifier and timestamp. - `required string ApiRequestID` Unique identifier for this API request, useful for troubleshooting. - `required DateTimeOffset ApiRequestTimestamp` Timestamp for this API request, useful for troubleshooting. - `required ResponseType ResponseType` Indicates the structure of the returned content. - "object" means the `data` field contains a single JSON object. - "array" means the `data` field contains an array of objects. - "error" means the `data` field contains an error object with details of the issue. - "none" means no data is returned. - `"object"Object` - `"array"Array` - `"error"Error` - `"none"None` ### Example ```csharp PayoutUpdateParams parameters = new() { ID = "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", Amount = 10000, Description = "description", PaymentDate = "2019-12-27", }; var payoutV1 = await client.Payouts.Update(parameters); Console.WriteLine(payoutV1); ``` #### Response ```json { "data": { "id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", "amount": 10000, "config": { "auto_hold": true, "auto_hold_message": "auto_hold_message", "sandbox_outcome": "standard" }, "currency": "currency", "description": "description", "device": { "ip_address": "192.168.1.1" }, "external_id": "external_id", "funding_ids": [ "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e" ], "paykey": "paykey", "payment_date": "2019-12-27", "status": "created", "status_details": { "changed_at": "2019-12-27T18:11:19.117Z", "message": "Payment successfully created and awaiting validation.", "reason": "insufficient_funds", "source": "system", "code": null }, "status_history": [ { "changed_at": "2019-12-27T18:11:19.117Z", "message": "Payment successfully created and awaiting validation.", "reason": "insufficient_funds", "source": "watchtower", "status": "created", "code": null } ], "trace_ids": { "foo": "string" }, "created_at": "2019-12-27T18:11:19.117Z", "customer_details": { "id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", "customer_type": "individual", "email": "ron@swanson.com", "name": "Ron Swanson", "phone": "+1234567890" }, "effective_at": "2019-12-27T18:11:19.117Z", "metadata": { "foo": "string" }, "paykey_details": { "id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", "customer_id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", "label": "Bank of America ****1234", "balance": 0 }, "payment_rail": "ach", "processed_at": "2019-12-27T18:11:19.117Z", "related_payments": { "foo": "original" }, "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" } ``` ## Create a payout `PayoutV1 Payouts.Create(PayoutCreateParamsparameters, CancellationTokencancellationToken = default)` **post** `/v1/payouts` Use payouts to send money to your customers. ### Parameters - `PayoutCreateParams parameters` - `required Int amount` Body param: The amount of the payout in cents. - `required string currency` Body param: The currency of the payout. Only USD is supported. - `required string? description` Body param: An arbitrary description for the payout. - `required DeviceInfoV1 device` Body param: Information about the device used when the customer authorized the payout. - `required string externalID` Body param: Unique identifier for the payout in your database. This value must be unique across all payouts. - `required string paykey` Body param: Value of the `paykey` used for the payout. - `required DateOnly paymentDate` Body param: The desired date on which the payout should be occur. For payouts, this means the date you want the funds to be sent from your bank account. - `Config config` Body param - `Boolean? AutoHold` Defines whether to automatically place this charge on hold after being created. - `string? AutoHoldMessage` The reason the payout is being automatically held on creation. - `SandboxOutcome SandboxOutcome` Payment will simulate processing if not Standard. - `"standard"Standard` - `"paid"Paid` - `"on_hold_daily_limit"OnHoldDailyLimit` - `"cancelled_for_fraud_risk"CancelledForFraudRisk` - `"cancelled_for_balance_check"CancelledForBalanceCheck` - `"failed_insufficient_funds"FailedInsufficientFunds` - `"reversed_insufficient_funds"ReversedInsufficientFunds` - `"failed_customer_dispute"FailedCustomerDispute` - `"reversed_customer_dispute"ReversedCustomerDispute` - `"failed_closed_bank_account"FailedClosedBankAccount` - `"reversed_closed_bank_account"ReversedClosedBankAccount` - `IReadOnlyDictionary? metadata` Body param: Up to 20 additional user-defined key-value pairs. Useful for storing additional information about the payout in a structured format. - `string correlationID` Header param: Optional client generated identifier to trace and debug a series of requests. - `string idempotencyKey` Header param: Optional client generated value to use for idempotent requests. - `string requestID` Header param: Optional client generated identifier to trace and debug a request. - `string straddleAccountID` Header param: For use by platforms to specify an account id and set scope of a request. ### Returns - `class PayoutV1:` - `required Data Data` - `required string ID` Unique identifier for the payout. - `required Int Amount` The amount of the payout in cents. - `required Config Config` Configuration for the payout. - `Boolean? AutoHold` Defines whether to automatically place this charge on hold after being created. - `string? AutoHoldMessage` The reason the payout is being automatically held on creation. - `SandboxOutcome SandboxOutcome` Payment will simulate processing if not Standard. - `"standard"Standard` - `"paid"Paid` - `"on_hold_daily_limit"OnHoldDailyLimit` - `"cancelled_for_fraud_risk"CancelledForFraudRisk` - `"cancelled_for_balance_check"CancelledForBalanceCheck` - `"failed_insufficient_funds"FailedInsufficientFunds` - `"reversed_insufficient_funds"ReversedInsufficientFunds` - `"failed_customer_dispute"FailedCustomerDispute` - `"reversed_customer_dispute"ReversedCustomerDispute` - `"failed_closed_bank_account"FailedClosedBankAccount` - `"reversed_closed_bank_account"ReversedClosedBankAccount` - `required string Currency` The currency of the payout. Only USD is supported. - `required string? Description` An arbitrary description for the payout. - `required DeviceInfoV1 Device` Information about the device used when the customer authorized the payout. - `required string IPAddress` The IP address of the device used when the customer authorized the charge or payout. Use `0.0.0.0` to represent an offline consent interaction. - `required string ExternalID` Unique identifier for the payout in your database. This value must be unique across all payouts. - `required IReadOnlyList FundingIds` Funding Ids - `required string Paykey` Value of the `paykey` used for the payout. - `required DateOnly PaymentDate` The desired date on which the payment should be occur. For payouts, this means the date you want the funds to be sent from your bank account. - `required Status Status` The current status of the payout. - `"created"Created` - `"scheduled"Scheduled` - `"failed"Failed` - `"cancelled"Cancelled` - `"on_hold"OnHold` - `"pending"Pending` - `"paid"Paid` - `"reversed"Reversed` - `"validating"Validating` - `required StatusDetailsV1 StatusDetails` Details about the current status of the payout. - `required DateTimeOffset ChangedAt` The time the status change occurred. - `required string Message` A human-readable description of the current status. - `required Reason Reason` A machine-readable identifier for the specific status, useful for programmatic handling. - `"insufficient_funds"InsufficientFunds` - `"closed_bank_account"ClosedBankAccount` - `"invalid_bank_account"InvalidBankAccount` - `"invalid_routing"InvalidRouting` - `"disputed"Disputed` - `"payment_stopped"PaymentStopped` - `"owner_deceased"OwnerDeceased` - `"frozen_bank_account"FrozenBankAccount` - `"risk_review"RiskReview` - `"fraudulent"Fraudulent` - `"duplicate_entry"DuplicateEntry` - `"invalid_paykey"InvalidPaykey` - `"payment_blocked"PaymentBlocked` - `"amount_too_large"AmountTooLarge` - `"too_many_attempts"TooManyAttempts` - `"internal_system_error"InternalSystemError` - `"user_request"UserRequest` - `"ok"Ok` - `"other_network_return"OtherNetworkReturn` - `"payout_refused"PayoutRefused` - `"cancel_request"CancelRequest` - `"failed_verification"FailedVerification` - `"require_review"RequireReview` - `"blocked_by_system"BlockedBySystem` - `"watchtower_review"WatchtowerReview` - `"validating"Validating` - `"auto_hold"AutoHold` - `required Source Source` Identifies the origin of the status change (e.g., `bank_decline`, `watchtower`). This helps in tracking the cause of status updates. - `"watchtower"Watchtower` - `"bank_decline"BankDecline` - `"customer_dispute"CustomerDispute` - `"user_action"UserAction` - `"system"System` - `string? Code` The status code if applicable. - `required IReadOnlyList StatusHistory` History of the status changes for the payout. - `required DateTimeOffset ChangedAt` The time the status change occurred. - `required string Message` A human-readable description of the status. - `required Reason Reason` A machine-readable identifier for the specific status, useful for programmatic handling. - `"insufficient_funds"InsufficientFunds` - `"closed_bank_account"ClosedBankAccount` - `"invalid_bank_account"InvalidBankAccount` - `"invalid_routing"InvalidRouting` - `"disputed"Disputed` - `"payment_stopped"PaymentStopped` - `"owner_deceased"OwnerDeceased` - `"frozen_bank_account"FrozenBankAccount` - `"risk_review"RiskReview` - `"fraudulent"Fraudulent` - `"duplicate_entry"DuplicateEntry` - `"invalid_paykey"InvalidPaykey` - `"payment_blocked"PaymentBlocked` - `"amount_too_large"AmountTooLarge` - `"too_many_attempts"TooManyAttempts` - `"internal_system_error"InternalSystemError` - `"user_request"UserRequest` - `"ok"Ok` - `"other_network_return"OtherNetworkReturn` - `"payout_refused"PayoutRefused` - `"cancel_request"CancelRequest` - `"failed_verification"FailedVerification` - `"require_review"RequireReview` - `"blocked_by_system"BlockedBySystem` - `"watchtower_review"WatchtowerReview` - `"validating"Validating` - `"auto_hold"AutoHold` - `required Source Source` Identifies the origin of the status change (e.g., `bank_decline`, `watchtower`). This helps in tracking the cause of status updates. - `"watchtower"Watchtower` - `"bank_decline"BankDecline` - `"customer_dispute"CustomerDispute` - `"user_action"UserAction` - `"system"System` - `required Status Status` The current status of the `charge` or `payout`. - `"created"Created` - `"scheduled"Scheduled` - `"failed"Failed` - `"cancelled"Cancelled` - `"on_hold"OnHold` - `"pending"Pending` - `"paid"Paid` - `"reversed"Reversed` - `"validating"Validating` - `string? Code` The status code if applicable. - `required IReadOnlyDictionary TraceIds` Trace Ids. - `DateTimeOffset? CreatedAt` The time the payout was created. - `CustomerDetailsV1 CustomerDetails` Information about the customer associated with the payout. - `required string ID` Unique identifier for the customer - `required CustomerType CustomerType` The type of customer - `"individual"Individual` - `"business"Business` - `required string Email` The customer's email address - `required string Name` The name of the customer - `required string Phone` The customer's phone number in E.164 format - `DateTimeOffset? EffectiveAt` The actual date on which the payment occurred. For payouts, this is the date the funds were sent from your bank account. - `IReadOnlyDictionary? Metadata` Up to 20 additional user-defined key-value pairs. Useful for storing additional information about the payout in a structured format. - `PaykeyDetailsV1 PaykeyDetails` Information about the paykey used for the payout. - `required string ID` Unique identifier for the paykey. - `required string CustomerID` Unique identifier for the customer associated with the paykey. - `required string Label` Human-readable label that combines the bank name and masked account number to help easility represent this paykey in a UI - `Int? Balance` The most recent balance of the bank account associated with the paykey in dollars. - `PaymentRail PaymentRail` The payment rail used for the payout. - `"ach"Ach` - `DateTimeOffset? ProcessedAt` The time the payout was processed by Straddle and originated to the payment rail. - `IReadOnlyDictionary? RelatedPayments` Related payments. - `"original"Original` - `"resubmit"Resubmit` - `"refund"Refund` - `DateTimeOffset? UpdatedAt` The time the payout was last updated. - `required ResponseMetadata Meta` Metadata about the API request, including an identifier and timestamp. - `required string ApiRequestID` Unique identifier for this API request, useful for troubleshooting. - `required DateTimeOffset ApiRequestTimestamp` Timestamp for this API request, useful for troubleshooting. - `required ResponseType ResponseType` Indicates the structure of the returned content. - "object" means the `data` field contains a single JSON object. - "array" means the `data` field contains an array of objects. - "error" means the `data` field contains an error object with details of the issue. - "none" means no data is returned. - `"object"Object` - `"array"Array` - `"error"Error` - `"none"None` ### Example ```csharp PayoutCreateParams parameters = new() { Amount = 10000, Currency = "currency", Description = "Vendor invoice payment", Device = new("192.168.1.1"), ExternalID = "external_id", Paykey = "paykey", PaymentDate = "2019-12-27", }; var payoutV1 = await client.Payouts.Create(parameters); Console.WriteLine(payoutV1); ``` #### Response ```json { "data": { "id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", "amount": 10000, "config": { "auto_hold": true, "auto_hold_message": "auto_hold_message", "sandbox_outcome": "standard" }, "currency": "currency", "description": "description", "device": { "ip_address": "192.168.1.1" }, "external_id": "external_id", "funding_ids": [ "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e" ], "paykey": "paykey", "payment_date": "2019-12-27", "status": "created", "status_details": { "changed_at": "2019-12-27T18:11:19.117Z", "message": "Payment successfully created and awaiting validation.", "reason": "insufficient_funds", "source": "system", "code": null }, "status_history": [ { "changed_at": "2019-12-27T18:11:19.117Z", "message": "Payment successfully created and awaiting validation.", "reason": "insufficient_funds", "source": "watchtower", "status": "created", "code": null } ], "trace_ids": { "foo": "string" }, "created_at": "2019-12-27T18:11:19.117Z", "customer_details": { "id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", "customer_type": "individual", "email": "ron@swanson.com", "name": "Ron Swanson", "phone": "+1234567890" }, "effective_at": "2019-12-27T18:11:19.117Z", "metadata": { "foo": "string" }, "paykey_details": { "id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", "customer_id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", "label": "Bank of America ****1234", "balance": 0 }, "payment_rail": "ach", "processed_at": "2019-12-27T18:11:19.117Z", "related_payments": { "foo": "original" }, "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" } ``` ## Hold a payout `PayoutV1 Payouts.Hold(PayoutHoldParamsparameters, CancellationTokencancellationToken = default)` **put** `/v1/payouts/{id}/hold` Hold a payout to prevent it from being processed. The status of the payout must be `created`, `scheduled`, or `on_hold`. ### Parameters - `PayoutHoldParams parameters` - `required string id` Path param - `required string reason` Body param: Details about why the payout status was updated. - `string correlationID` Header param: Optional client generated identifier to trace and debug a series of requests. - `string idempotencyKey` Header param: Optional client generated value to use for idempotent requests. - `string requestID` Header param: Optional client generated identifier to trace and debug a request. - `string straddleAccountID` Header param: For use by platforms to specify an account id and set scope of a request. ### Returns - `class PayoutV1:` - `required Data Data` - `required string ID` Unique identifier for the payout. - `required Int Amount` The amount of the payout in cents. - `required Config Config` Configuration for the payout. - `Boolean? AutoHold` Defines whether to automatically place this charge on hold after being created. - `string? AutoHoldMessage` The reason the payout is being automatically held on creation. - `SandboxOutcome SandboxOutcome` Payment will simulate processing if not Standard. - `"standard"Standard` - `"paid"Paid` - `"on_hold_daily_limit"OnHoldDailyLimit` - `"cancelled_for_fraud_risk"CancelledForFraudRisk` - `"cancelled_for_balance_check"CancelledForBalanceCheck` - `"failed_insufficient_funds"FailedInsufficientFunds` - `"reversed_insufficient_funds"ReversedInsufficientFunds` - `"failed_customer_dispute"FailedCustomerDispute` - `"reversed_customer_dispute"ReversedCustomerDispute` - `"failed_closed_bank_account"FailedClosedBankAccount` - `"reversed_closed_bank_account"ReversedClosedBankAccount` - `required string Currency` The currency of the payout. Only USD is supported. - `required string? Description` An arbitrary description for the payout. - `required DeviceInfoV1 Device` Information about the device used when the customer authorized the payout. - `required string IPAddress` The IP address of the device used when the customer authorized the charge or payout. Use `0.0.0.0` to represent an offline consent interaction. - `required string ExternalID` Unique identifier for the payout in your database. This value must be unique across all payouts. - `required IReadOnlyList FundingIds` Funding Ids - `required string Paykey` Value of the `paykey` used for the payout. - `required DateOnly PaymentDate` The desired date on which the payment should be occur. For payouts, this means the date you want the funds to be sent from your bank account. - `required Status Status` The current status of the payout. - `"created"Created` - `"scheduled"Scheduled` - `"failed"Failed` - `"cancelled"Cancelled` - `"on_hold"OnHold` - `"pending"Pending` - `"paid"Paid` - `"reversed"Reversed` - `"validating"Validating` - `required StatusDetailsV1 StatusDetails` Details about the current status of the payout. - `required DateTimeOffset ChangedAt` The time the status change occurred. - `required string Message` A human-readable description of the current status. - `required Reason Reason` A machine-readable identifier for the specific status, useful for programmatic handling. - `"insufficient_funds"InsufficientFunds` - `"closed_bank_account"ClosedBankAccount` - `"invalid_bank_account"InvalidBankAccount` - `"invalid_routing"InvalidRouting` - `"disputed"Disputed` - `"payment_stopped"PaymentStopped` - `"owner_deceased"OwnerDeceased` - `"frozen_bank_account"FrozenBankAccount` - `"risk_review"RiskReview` - `"fraudulent"Fraudulent` - `"duplicate_entry"DuplicateEntry` - `"invalid_paykey"InvalidPaykey` - `"payment_blocked"PaymentBlocked` - `"amount_too_large"AmountTooLarge` - `"too_many_attempts"TooManyAttempts` - `"internal_system_error"InternalSystemError` - `"user_request"UserRequest` - `"ok"Ok` - `"other_network_return"OtherNetworkReturn` - `"payout_refused"PayoutRefused` - `"cancel_request"CancelRequest` - `"failed_verification"FailedVerification` - `"require_review"RequireReview` - `"blocked_by_system"BlockedBySystem` - `"watchtower_review"WatchtowerReview` - `"validating"Validating` - `"auto_hold"AutoHold` - `required Source Source` Identifies the origin of the status change (e.g., `bank_decline`, `watchtower`). This helps in tracking the cause of status updates. - `"watchtower"Watchtower` - `"bank_decline"BankDecline` - `"customer_dispute"CustomerDispute` - `"user_action"UserAction` - `"system"System` - `string? Code` The status code if applicable. - `required IReadOnlyList StatusHistory` History of the status changes for the payout. - `required DateTimeOffset ChangedAt` The time the status change occurred. - `required string Message` A human-readable description of the status. - `required Reason Reason` A machine-readable identifier for the specific status, useful for programmatic handling. - `"insufficient_funds"InsufficientFunds` - `"closed_bank_account"ClosedBankAccount` - `"invalid_bank_account"InvalidBankAccount` - `"invalid_routing"InvalidRouting` - `"disputed"Disputed` - `"payment_stopped"PaymentStopped` - `"owner_deceased"OwnerDeceased` - `"frozen_bank_account"FrozenBankAccount` - `"risk_review"RiskReview` - `"fraudulent"Fraudulent` - `"duplicate_entry"DuplicateEntry` - `"invalid_paykey"InvalidPaykey` - `"payment_blocked"PaymentBlocked` - `"amount_too_large"AmountTooLarge` - `"too_many_attempts"TooManyAttempts` - `"internal_system_error"InternalSystemError` - `"user_request"UserRequest` - `"ok"Ok` - `"other_network_return"OtherNetworkReturn` - `"payout_refused"PayoutRefused` - `"cancel_request"CancelRequest` - `"failed_verification"FailedVerification` - `"require_review"RequireReview` - `"blocked_by_system"BlockedBySystem` - `"watchtower_review"WatchtowerReview` - `"validating"Validating` - `"auto_hold"AutoHold` - `required Source Source` Identifies the origin of the status change (e.g., `bank_decline`, `watchtower`). This helps in tracking the cause of status updates. - `"watchtower"Watchtower` - `"bank_decline"BankDecline` - `"customer_dispute"CustomerDispute` - `"user_action"UserAction` - `"system"System` - `required Status Status` The current status of the `charge` or `payout`. - `"created"Created` - `"scheduled"Scheduled` - `"failed"Failed` - `"cancelled"Cancelled` - `"on_hold"OnHold` - `"pending"Pending` - `"paid"Paid` - `"reversed"Reversed` - `"validating"Validating` - `string? Code` The status code if applicable. - `required IReadOnlyDictionary TraceIds` Trace Ids. - `DateTimeOffset? CreatedAt` The time the payout was created. - `CustomerDetailsV1 CustomerDetails` Information about the customer associated with the payout. - `required string ID` Unique identifier for the customer - `required CustomerType CustomerType` The type of customer - `"individual"Individual` - `"business"Business` - `required string Email` The customer's email address - `required string Name` The name of the customer - `required string Phone` The customer's phone number in E.164 format - `DateTimeOffset? EffectiveAt` The actual date on which the payment occurred. For payouts, this is the date the funds were sent from your bank account. - `IReadOnlyDictionary? Metadata` Up to 20 additional user-defined key-value pairs. Useful for storing additional information about the payout in a structured format. - `PaykeyDetailsV1 PaykeyDetails` Information about the paykey used for the payout. - `required string ID` Unique identifier for the paykey. - `required string CustomerID` Unique identifier for the customer associated with the paykey. - `required string Label` Human-readable label that combines the bank name and masked account number to help easility represent this paykey in a UI - `Int? Balance` The most recent balance of the bank account associated with the paykey in dollars. - `PaymentRail PaymentRail` The payment rail used for the payout. - `"ach"Ach` - `DateTimeOffset? ProcessedAt` The time the payout was processed by Straddle and originated to the payment rail. - `IReadOnlyDictionary? RelatedPayments` Related payments. - `"original"Original` - `"resubmit"Resubmit` - `"refund"Refund` - `DateTimeOffset? UpdatedAt` The time the payout was last updated. - `required ResponseMetadata Meta` Metadata about the API request, including an identifier and timestamp. - `required string ApiRequestID` Unique identifier for this API request, useful for troubleshooting. - `required DateTimeOffset ApiRequestTimestamp` Timestamp for this API request, useful for troubleshooting. - `required ResponseType ResponseType` Indicates the structure of the returned content. - "object" means the `data` field contains a single JSON object. - "array" means the `data` field contains an array of objects. - "error" means the `data` field contains an error object with details of the issue. - "none" means no data is returned. - `"object"Object` - `"array"Array` - `"error"Error` - `"none"None` ### Example ```csharp PayoutHoldParams parameters = new() { ID = "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", Reason = "reason", }; var payoutV1 = await client.Payouts.Hold(parameters); Console.WriteLine(payoutV1); ``` #### Response ```json { "data": { "id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", "amount": 10000, "config": { "auto_hold": true, "auto_hold_message": "auto_hold_message", "sandbox_outcome": "standard" }, "currency": "currency", "description": "description", "device": { "ip_address": "192.168.1.1" }, "external_id": "external_id", "funding_ids": [ "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e" ], "paykey": "paykey", "payment_date": "2019-12-27", "status": "created", "status_details": { "changed_at": "2019-12-27T18:11:19.117Z", "message": "Payment successfully created and awaiting validation.", "reason": "insufficient_funds", "source": "system", "code": null }, "status_history": [ { "changed_at": "2019-12-27T18:11:19.117Z", "message": "Payment successfully created and awaiting validation.", "reason": "insufficient_funds", "source": "watchtower", "status": "created", "code": null } ], "trace_ids": { "foo": "string" }, "created_at": "2019-12-27T18:11:19.117Z", "customer_details": { "id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", "customer_type": "individual", "email": "ron@swanson.com", "name": "Ron Swanson", "phone": "+1234567890" }, "effective_at": "2019-12-27T18:11:19.117Z", "metadata": { "foo": "string" }, "paykey_details": { "id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", "customer_id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", "label": "Bank of America ****1234", "balance": 0 }, "payment_rail": "ach", "processed_at": "2019-12-27T18:11:19.117Z", "related_payments": { "foo": "original" }, "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" } ``` ## Release a payout `PayoutV1 Payouts.Release(PayoutReleaseParamsparameters, CancellationTokencancellationToken = default)` **put** `/v1/payouts/{id}/release` Release a payout from a `hold` status to allow it to be rescheduled for processing. ### Parameters - `PayoutReleaseParams parameters` - `required string id` Path param - `required string reason` Body param: Details about why the payout status was updated. - `string correlationID` Header param: Optional client generated identifier to trace and debug a series of requests. - `string idempotencyKey` Header param: Optional client generated value to use for idempotent requests. - `string requestID` Header param: Optional client generated identifier to trace and debug a request. - `string straddleAccountID` Header param: For use by platforms to specify an account id and set scope of a request. ### Returns - `class PayoutV1:` - `required Data Data` - `required string ID` Unique identifier for the payout. - `required Int Amount` The amount of the payout in cents. - `required Config Config` Configuration for the payout. - `Boolean? AutoHold` Defines whether to automatically place this charge on hold after being created. - `string? AutoHoldMessage` The reason the payout is being automatically held on creation. - `SandboxOutcome SandboxOutcome` Payment will simulate processing if not Standard. - `"standard"Standard` - `"paid"Paid` - `"on_hold_daily_limit"OnHoldDailyLimit` - `"cancelled_for_fraud_risk"CancelledForFraudRisk` - `"cancelled_for_balance_check"CancelledForBalanceCheck` - `"failed_insufficient_funds"FailedInsufficientFunds` - `"reversed_insufficient_funds"ReversedInsufficientFunds` - `"failed_customer_dispute"FailedCustomerDispute` - `"reversed_customer_dispute"ReversedCustomerDispute` - `"failed_closed_bank_account"FailedClosedBankAccount` - `"reversed_closed_bank_account"ReversedClosedBankAccount` - `required string Currency` The currency of the payout. Only USD is supported. - `required string? Description` An arbitrary description for the payout. - `required DeviceInfoV1 Device` Information about the device used when the customer authorized the payout. - `required string IPAddress` The IP address of the device used when the customer authorized the charge or payout. Use `0.0.0.0` to represent an offline consent interaction. - `required string ExternalID` Unique identifier for the payout in your database. This value must be unique across all payouts. - `required IReadOnlyList FundingIds` Funding Ids - `required string Paykey` Value of the `paykey` used for the payout. - `required DateOnly PaymentDate` The desired date on which the payment should be occur. For payouts, this means the date you want the funds to be sent from your bank account. - `required Status Status` The current status of the payout. - `"created"Created` - `"scheduled"Scheduled` - `"failed"Failed` - `"cancelled"Cancelled` - `"on_hold"OnHold` - `"pending"Pending` - `"paid"Paid` - `"reversed"Reversed` - `"validating"Validating` - `required StatusDetailsV1 StatusDetails` Details about the current status of the payout. - `required DateTimeOffset ChangedAt` The time the status change occurred. - `required string Message` A human-readable description of the current status. - `required Reason Reason` A machine-readable identifier for the specific status, useful for programmatic handling. - `"insufficient_funds"InsufficientFunds` - `"closed_bank_account"ClosedBankAccount` - `"invalid_bank_account"InvalidBankAccount` - `"invalid_routing"InvalidRouting` - `"disputed"Disputed` - `"payment_stopped"PaymentStopped` - `"owner_deceased"OwnerDeceased` - `"frozen_bank_account"FrozenBankAccount` - `"risk_review"RiskReview` - `"fraudulent"Fraudulent` - `"duplicate_entry"DuplicateEntry` - `"invalid_paykey"InvalidPaykey` - `"payment_blocked"PaymentBlocked` - `"amount_too_large"AmountTooLarge` - `"too_many_attempts"TooManyAttempts` - `"internal_system_error"InternalSystemError` - `"user_request"UserRequest` - `"ok"Ok` - `"other_network_return"OtherNetworkReturn` - `"payout_refused"PayoutRefused` - `"cancel_request"CancelRequest` - `"failed_verification"FailedVerification` - `"require_review"RequireReview` - `"blocked_by_system"BlockedBySystem` - `"watchtower_review"WatchtowerReview` - `"validating"Validating` - `"auto_hold"AutoHold` - `required Source Source` Identifies the origin of the status change (e.g., `bank_decline`, `watchtower`). This helps in tracking the cause of status updates. - `"watchtower"Watchtower` - `"bank_decline"BankDecline` - `"customer_dispute"CustomerDispute` - `"user_action"UserAction` - `"system"System` - `string? Code` The status code if applicable. - `required IReadOnlyList StatusHistory` History of the status changes for the payout. - `required DateTimeOffset ChangedAt` The time the status change occurred. - `required string Message` A human-readable description of the status. - `required Reason Reason` A machine-readable identifier for the specific status, useful for programmatic handling. - `"insufficient_funds"InsufficientFunds` - `"closed_bank_account"ClosedBankAccount` - `"invalid_bank_account"InvalidBankAccount` - `"invalid_routing"InvalidRouting` - `"disputed"Disputed` - `"payment_stopped"PaymentStopped` - `"owner_deceased"OwnerDeceased` - `"frozen_bank_account"FrozenBankAccount` - `"risk_review"RiskReview` - `"fraudulent"Fraudulent` - `"duplicate_entry"DuplicateEntry` - `"invalid_paykey"InvalidPaykey` - `"payment_blocked"PaymentBlocked` - `"amount_too_large"AmountTooLarge` - `"too_many_attempts"TooManyAttempts` - `"internal_system_error"InternalSystemError` - `"user_request"UserRequest` - `"ok"Ok` - `"other_network_return"OtherNetworkReturn` - `"payout_refused"PayoutRefused` - `"cancel_request"CancelRequest` - `"failed_verification"FailedVerification` - `"require_review"RequireReview` - `"blocked_by_system"BlockedBySystem` - `"watchtower_review"WatchtowerReview` - `"validating"Validating` - `"auto_hold"AutoHold` - `required Source Source` Identifies the origin of the status change (e.g., `bank_decline`, `watchtower`). This helps in tracking the cause of status updates. - `"watchtower"Watchtower` - `"bank_decline"BankDecline` - `"customer_dispute"CustomerDispute` - `"user_action"UserAction` - `"system"System` - `required Status Status` The current status of the `charge` or `payout`. - `"created"Created` - `"scheduled"Scheduled` - `"failed"Failed` - `"cancelled"Cancelled` - `"on_hold"OnHold` - `"pending"Pending` - `"paid"Paid` - `"reversed"Reversed` - `"validating"Validating` - `string? Code` The status code if applicable. - `required IReadOnlyDictionary TraceIds` Trace Ids. - `DateTimeOffset? CreatedAt` The time the payout was created. - `CustomerDetailsV1 CustomerDetails` Information about the customer associated with the payout. - `required string ID` Unique identifier for the customer - `required CustomerType CustomerType` The type of customer - `"individual"Individual` - `"business"Business` - `required string Email` The customer's email address - `required string Name` The name of the customer - `required string Phone` The customer's phone number in E.164 format - `DateTimeOffset? EffectiveAt` The actual date on which the payment occurred. For payouts, this is the date the funds were sent from your bank account. - `IReadOnlyDictionary? Metadata` Up to 20 additional user-defined key-value pairs. Useful for storing additional information about the payout in a structured format. - `PaykeyDetailsV1 PaykeyDetails` Information about the paykey used for the payout. - `required string ID` Unique identifier for the paykey. - `required string CustomerID` Unique identifier for the customer associated with the paykey. - `required string Label` Human-readable label that combines the bank name and masked account number to help easility represent this paykey in a UI - `Int? Balance` The most recent balance of the bank account associated with the paykey in dollars. - `PaymentRail PaymentRail` The payment rail used for the payout. - `"ach"Ach` - `DateTimeOffset? ProcessedAt` The time the payout was processed by Straddle and originated to the payment rail. - `IReadOnlyDictionary? RelatedPayments` Related payments. - `"original"Original` - `"resubmit"Resubmit` - `"refund"Refund` - `DateTimeOffset? UpdatedAt` The time the payout was last updated. - `required ResponseMetadata Meta` Metadata about the API request, including an identifier and timestamp. - `required string ApiRequestID` Unique identifier for this API request, useful for troubleshooting. - `required DateTimeOffset ApiRequestTimestamp` Timestamp for this API request, useful for troubleshooting. - `required ResponseType ResponseType` Indicates the structure of the returned content. - "object" means the `data` field contains a single JSON object. - "array" means the `data` field contains an array of objects. - "error" means the `data` field contains an error object with details of the issue. - "none" means no data is returned. - `"object"Object` - `"array"Array` - `"error"Error` - `"none"None` ### Example ```csharp PayoutReleaseParams parameters = new() { ID = "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", Reason = "reason", }; var payoutV1 = await client.Payouts.Release(parameters); Console.WriteLine(payoutV1); ``` #### Response ```json { "data": { "id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", "amount": 10000, "config": { "auto_hold": true, "auto_hold_message": "auto_hold_message", "sandbox_outcome": "standard" }, "currency": "currency", "description": "description", "device": { "ip_address": "192.168.1.1" }, "external_id": "external_id", "funding_ids": [ "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e" ], "paykey": "paykey", "payment_date": "2019-12-27", "status": "created", "status_details": { "changed_at": "2019-12-27T18:11:19.117Z", "message": "Payment successfully created and awaiting validation.", "reason": "insufficient_funds", "source": "system", "code": null }, "status_history": [ { "changed_at": "2019-12-27T18:11:19.117Z", "message": "Payment successfully created and awaiting validation.", "reason": "insufficient_funds", "source": "watchtower", "status": "created", "code": null } ], "trace_ids": { "foo": "string" }, "created_at": "2019-12-27T18:11:19.117Z", "customer_details": { "id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", "customer_type": "individual", "email": "ron@swanson.com", "name": "Ron Swanson", "phone": "+1234567890" }, "effective_at": "2019-12-27T18:11:19.117Z", "metadata": { "foo": "string" }, "paykey_details": { "id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", "customer_id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", "label": "Bank of America ****1234", "balance": 0 }, "payment_rail": "ach", "processed_at": "2019-12-27T18:11:19.117Z", "related_payments": { "foo": "original" }, "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" } ``` ## Cancel a payout `PayoutV1 Payouts.Cancel(PayoutCancelParamsparameters, CancellationTokencancellationToken = default)` **put** `/v1/payouts/{id}/cancel` Cancel a payout to prevent it from being processed. The status of the payout must be `created`, `scheduled`, or `on_hold`. ### Parameters - `PayoutCancelParams parameters` - `required string id` Path param - `required string reason` Body param: Details about why the payout status was updated. - `string correlationID` Header param: Optional client generated identifier to trace and debug a series of requests. - `string idempotencyKey` Header param: Optional client generated value to use for idempotent requests. - `string requestID` Header param: Optional client generated identifier to trace and debug a request. - `string straddleAccountID` Header param: For use by platforms to specify an account id and set scope of a request. ### Returns - `class PayoutV1:` - `required Data Data` - `required string ID` Unique identifier for the payout. - `required Int Amount` The amount of the payout in cents. - `required Config Config` Configuration for the payout. - `Boolean? AutoHold` Defines whether to automatically place this charge on hold after being created. - `string? AutoHoldMessage` The reason the payout is being automatically held on creation. - `SandboxOutcome SandboxOutcome` Payment will simulate processing if not Standard. - `"standard"Standard` - `"paid"Paid` - `"on_hold_daily_limit"OnHoldDailyLimit` - `"cancelled_for_fraud_risk"CancelledForFraudRisk` - `"cancelled_for_balance_check"CancelledForBalanceCheck` - `"failed_insufficient_funds"FailedInsufficientFunds` - `"reversed_insufficient_funds"ReversedInsufficientFunds` - `"failed_customer_dispute"FailedCustomerDispute` - `"reversed_customer_dispute"ReversedCustomerDispute` - `"failed_closed_bank_account"FailedClosedBankAccount` - `"reversed_closed_bank_account"ReversedClosedBankAccount` - `required string Currency` The currency of the payout. Only USD is supported. - `required string? Description` An arbitrary description for the payout. - `required DeviceInfoV1 Device` Information about the device used when the customer authorized the payout. - `required string IPAddress` The IP address of the device used when the customer authorized the charge or payout. Use `0.0.0.0` to represent an offline consent interaction. - `required string ExternalID` Unique identifier for the payout in your database. This value must be unique across all payouts. - `required IReadOnlyList FundingIds` Funding Ids - `required string Paykey` Value of the `paykey` used for the payout. - `required DateOnly PaymentDate` The desired date on which the payment should be occur. For payouts, this means the date you want the funds to be sent from your bank account. - `required Status Status` The current status of the payout. - `"created"Created` - `"scheduled"Scheduled` - `"failed"Failed` - `"cancelled"Cancelled` - `"on_hold"OnHold` - `"pending"Pending` - `"paid"Paid` - `"reversed"Reversed` - `"validating"Validating` - `required StatusDetailsV1 StatusDetails` Details about the current status of the payout. - `required DateTimeOffset ChangedAt` The time the status change occurred. - `required string Message` A human-readable description of the current status. - `required Reason Reason` A machine-readable identifier for the specific status, useful for programmatic handling. - `"insufficient_funds"InsufficientFunds` - `"closed_bank_account"ClosedBankAccount` - `"invalid_bank_account"InvalidBankAccount` - `"invalid_routing"InvalidRouting` - `"disputed"Disputed` - `"payment_stopped"PaymentStopped` - `"owner_deceased"OwnerDeceased` - `"frozen_bank_account"FrozenBankAccount` - `"risk_review"RiskReview` - `"fraudulent"Fraudulent` - `"duplicate_entry"DuplicateEntry` - `"invalid_paykey"InvalidPaykey` - `"payment_blocked"PaymentBlocked` - `"amount_too_large"AmountTooLarge` - `"too_many_attempts"TooManyAttempts` - `"internal_system_error"InternalSystemError` - `"user_request"UserRequest` - `"ok"Ok` - `"other_network_return"OtherNetworkReturn` - `"payout_refused"PayoutRefused` - `"cancel_request"CancelRequest` - `"failed_verification"FailedVerification` - `"require_review"RequireReview` - `"blocked_by_system"BlockedBySystem` - `"watchtower_review"WatchtowerReview` - `"validating"Validating` - `"auto_hold"AutoHold` - `required Source Source` Identifies the origin of the status change (e.g., `bank_decline`, `watchtower`). This helps in tracking the cause of status updates. - `"watchtower"Watchtower` - `"bank_decline"BankDecline` - `"customer_dispute"CustomerDispute` - `"user_action"UserAction` - `"system"System` - `string? Code` The status code if applicable. - `required IReadOnlyList StatusHistory` History of the status changes for the payout. - `required DateTimeOffset ChangedAt` The time the status change occurred. - `required string Message` A human-readable description of the status. - `required Reason Reason` A machine-readable identifier for the specific status, useful for programmatic handling. - `"insufficient_funds"InsufficientFunds` - `"closed_bank_account"ClosedBankAccount` - `"invalid_bank_account"InvalidBankAccount` - `"invalid_routing"InvalidRouting` - `"disputed"Disputed` - `"payment_stopped"PaymentStopped` - `"owner_deceased"OwnerDeceased` - `"frozen_bank_account"FrozenBankAccount` - `"risk_review"RiskReview` - `"fraudulent"Fraudulent` - `"duplicate_entry"DuplicateEntry` - `"invalid_paykey"InvalidPaykey` - `"payment_blocked"PaymentBlocked` - `"amount_too_large"AmountTooLarge` - `"too_many_attempts"TooManyAttempts` - `"internal_system_error"InternalSystemError` - `"user_request"UserRequest` - `"ok"Ok` - `"other_network_return"OtherNetworkReturn` - `"payout_refused"PayoutRefused` - `"cancel_request"CancelRequest` - `"failed_verification"FailedVerification` - `"require_review"RequireReview` - `"blocked_by_system"BlockedBySystem` - `"watchtower_review"WatchtowerReview` - `"validating"Validating` - `"auto_hold"AutoHold` - `required Source Source` Identifies the origin of the status change (e.g., `bank_decline`, `watchtower`). This helps in tracking the cause of status updates. - `"watchtower"Watchtower` - `"bank_decline"BankDecline` - `"customer_dispute"CustomerDispute` - `"user_action"UserAction` - `"system"System` - `required Status Status` The current status of the `charge` or `payout`. - `"created"Created` - `"scheduled"Scheduled` - `"failed"Failed` - `"cancelled"Cancelled` - `"on_hold"OnHold` - `"pending"Pending` - `"paid"Paid` - `"reversed"Reversed` - `"validating"Validating` - `string? Code` The status code if applicable. - `required IReadOnlyDictionary TraceIds` Trace Ids. - `DateTimeOffset? CreatedAt` The time the payout was created. - `CustomerDetailsV1 CustomerDetails` Information about the customer associated with the payout. - `required string ID` Unique identifier for the customer - `required CustomerType CustomerType` The type of customer - `"individual"Individual` - `"business"Business` - `required string Email` The customer's email address - `required string Name` The name of the customer - `required string Phone` The customer's phone number in E.164 format - `DateTimeOffset? EffectiveAt` The actual date on which the payment occurred. For payouts, this is the date the funds were sent from your bank account. - `IReadOnlyDictionary? Metadata` Up to 20 additional user-defined key-value pairs. Useful for storing additional information about the payout in a structured format. - `PaykeyDetailsV1 PaykeyDetails` Information about the paykey used for the payout. - `required string ID` Unique identifier for the paykey. - `required string CustomerID` Unique identifier for the customer associated with the paykey. - `required string Label` Human-readable label that combines the bank name and masked account number to help easility represent this paykey in a UI - `Int? Balance` The most recent balance of the bank account associated with the paykey in dollars. - `PaymentRail PaymentRail` The payment rail used for the payout. - `"ach"Ach` - `DateTimeOffset? ProcessedAt` The time the payout was processed by Straddle and originated to the payment rail. - `IReadOnlyDictionary? RelatedPayments` Related payments. - `"original"Original` - `"resubmit"Resubmit` - `"refund"Refund` - `DateTimeOffset? UpdatedAt` The time the payout was last updated. - `required ResponseMetadata Meta` Metadata about the API request, including an identifier and timestamp. - `required string ApiRequestID` Unique identifier for this API request, useful for troubleshooting. - `required DateTimeOffset ApiRequestTimestamp` Timestamp for this API request, useful for troubleshooting. - `required ResponseType ResponseType` Indicates the structure of the returned content. - "object" means the `data` field contains a single JSON object. - "array" means the `data` field contains an array of objects. - "error" means the `data` field contains an error object with details of the issue. - "none" means no data is returned. - `"object"Object` - `"array"Array` - `"error"Error` - `"none"None` ### Example ```csharp PayoutCancelParams parameters = new() { ID = "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", Reason = "reason", }; var payoutV1 = await client.Payouts.Cancel(parameters); Console.WriteLine(payoutV1); ``` #### Response ```json { "data": { "id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", "amount": 10000, "config": { "auto_hold": true, "auto_hold_message": "auto_hold_message", "sandbox_outcome": "standard" }, "currency": "currency", "description": "description", "device": { "ip_address": "192.168.1.1" }, "external_id": "external_id", "funding_ids": [ "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e" ], "paykey": "paykey", "payment_date": "2019-12-27", "status": "created", "status_details": { "changed_at": "2019-12-27T18:11:19.117Z", "message": "Payment successfully created and awaiting validation.", "reason": "insufficient_funds", "source": "system", "code": null }, "status_history": [ { "changed_at": "2019-12-27T18:11:19.117Z", "message": "Payment successfully created and awaiting validation.", "reason": "insufficient_funds", "source": "watchtower", "status": "created", "code": null } ], "trace_ids": { "foo": "string" }, "created_at": "2019-12-27T18:11:19.117Z", "customer_details": { "id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", "customer_type": "individual", "email": "ron@swanson.com", "name": "Ron Swanson", "phone": "+1234567890" }, "effective_at": "2019-12-27T18:11:19.117Z", "metadata": { "foo": "string" }, "paykey_details": { "id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", "customer_id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", "label": "Bank of America ****1234", "balance": 0 }, "payment_rail": "ach", "processed_at": "2019-12-27T18:11:19.117Z", "related_payments": { "foo": "original" }, "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" } ``` ## Get a payout by id. `PayoutUnmaskResponse Payouts.Unmask(PayoutUnmaskParamsparameters, CancellationTokencancellationToken = default)` **get** `/v1/payouts/{id}/unmask` Get a payout by id. ### Parameters - `PayoutUnmaskParams parameters` - `required string id` - `string correlationID` Optional client generated identifier to trace and debug a series of requests. - `string requestID` Optional client generated identifier to trace and debug a request. - `string straddleAccountID` For use by platforms to specify an account id and set scope of a request. ### Returns - `class PayoutUnmaskResponse:` - `required Data Data` - `required string ID` Id. - `required Int Amount` Amount. - `required Config Config` - `Boolean? AutoHold` Defines whether to automatically place this charge on hold after being created. - `string? AutoHoldMessage` The reason the payout is being automatically held on creation. - `SandboxOutcome SandboxOutcome` Payment will simulate processing if not Standard. - `"standard"Standard` - `"paid"Paid` - `"on_hold_daily_limit"OnHoldDailyLimit` - `"cancelled_for_fraud_risk"CancelledForFraudRisk` - `"cancelled_for_balance_check"CancelledForBalanceCheck` - `"failed_insufficient_funds"FailedInsufficientFunds` - `"reversed_insufficient_funds"ReversedInsufficientFunds` - `"failed_customer_dispute"FailedCustomerDispute` - `"reversed_customer_dispute"ReversedCustomerDispute` - `"failed_closed_bank_account"FailedClosedBankAccount` - `"reversed_closed_bank_account"ReversedClosedBankAccount` - `required string Currency` Currency. - `required string? Description` Description. - `required Device Device` - `required string IPAddress` Ip address. - `required string ExternalID` External id. - `required IReadOnlyList FundingIds` Funding Ids - `required string Paykey` Paykey. - `required DateOnly PaymentDate` Payment date. - `required Status Status` The current status of the `charge` or `payout`. - `"created"Created` - `"scheduled"Scheduled` - `"failed"Failed` - `"cancelled"Cancelled` - `"on_hold"OnHold` - `"pending"Pending` - `"paid"Paid` - `"reversed"Reversed` - `"validating"Validating` - `required StatusDetailsV1 StatusDetails` - `required DateTimeOffset ChangedAt` The time the status change occurred. - `required string Message` A human-readable description of the current status. - `required Reason Reason` A machine-readable identifier for the specific status, useful for programmatic handling. - `"insufficient_funds"InsufficientFunds` - `"closed_bank_account"ClosedBankAccount` - `"invalid_bank_account"InvalidBankAccount` - `"invalid_routing"InvalidRouting` - `"disputed"Disputed` - `"payment_stopped"PaymentStopped` - `"owner_deceased"OwnerDeceased` - `"frozen_bank_account"FrozenBankAccount` - `"risk_review"RiskReview` - `"fraudulent"Fraudulent` - `"duplicate_entry"DuplicateEntry` - `"invalid_paykey"InvalidPaykey` - `"payment_blocked"PaymentBlocked` - `"amount_too_large"AmountTooLarge` - `"too_many_attempts"TooManyAttempts` - `"internal_system_error"InternalSystemError` - `"user_request"UserRequest` - `"ok"Ok` - `"other_network_return"OtherNetworkReturn` - `"payout_refused"PayoutRefused` - `"cancel_request"CancelRequest` - `"failed_verification"FailedVerification` - `"require_review"RequireReview` - `"blocked_by_system"BlockedBySystem` - `"watchtower_review"WatchtowerReview` - `"validating"Validating` - `"auto_hold"AutoHold` - `required Source Source` Identifies the origin of the status change (e.g., `bank_decline`, `watchtower`). This helps in tracking the cause of status updates. - `"watchtower"Watchtower` - `"bank_decline"BankDecline` - `"customer_dispute"CustomerDispute` - `"user_action"UserAction` - `"system"System` - `string? Code` The status code if applicable. - `required IReadOnlyList StatusHistory` Status history. - `required DateTimeOffset ChangedAt` The time the status change occurred. - `required string Message` A human-readable description of the status. - `required Reason Reason` A machine-readable identifier for the specific status, useful for programmatic handling. - `"insufficient_funds"InsufficientFunds` - `"closed_bank_account"ClosedBankAccount` - `"invalid_bank_account"InvalidBankAccount` - `"invalid_routing"InvalidRouting` - `"disputed"Disputed` - `"payment_stopped"PaymentStopped` - `"owner_deceased"OwnerDeceased` - `"frozen_bank_account"FrozenBankAccount` - `"risk_review"RiskReview` - `"fraudulent"Fraudulent` - `"duplicate_entry"DuplicateEntry` - `"invalid_paykey"InvalidPaykey` - `"payment_blocked"PaymentBlocked` - `"amount_too_large"AmountTooLarge` - `"too_many_attempts"TooManyAttempts` - `"internal_system_error"InternalSystemError` - `"user_request"UserRequest` - `"ok"Ok` - `"other_network_return"OtherNetworkReturn` - `"payout_refused"PayoutRefused` - `"cancel_request"CancelRequest` - `"failed_verification"FailedVerification` - `"require_review"RequireReview` - `"blocked_by_system"BlockedBySystem` - `"watchtower_review"WatchtowerReview` - `"validating"Validating` - `"auto_hold"AutoHold` - `required Source Source` Identifies the origin of the status change (e.g., `bank_decline`, `watchtower`). This helps in tracking the cause of status updates. - `"watchtower"Watchtower` - `"bank_decline"BankDecline` - `"customer_dispute"CustomerDispute` - `"user_action"UserAction` - `"system"System` - `required Status Status` The current status of the `charge` or `payout`. - `"created"Created` - `"scheduled"Scheduled` - `"failed"Failed` - `"cancelled"Cancelled` - `"on_hold"OnHold` - `"pending"Pending` - `"paid"Paid` - `"reversed"Reversed` - `"validating"Validating` - `string? Code` The status code if applicable. - `required IReadOnlyDictionary TraceIds` Trace Ids. - `DateTimeOffset? CreatedAt` Created at. - `CustomerDetailsV1 CustomerDetails` Information about the customer associated with the charge or payout. - `required string ID` Unique identifier for the customer - `required CustomerType CustomerType` The type of customer - `"individual"Individual` - `"business"Business` - `required string Email` The customer's email address - `required string Name` The name of the customer - `required string Phone` The customer's phone number in E.164 format - `DateTimeOffset? EffectiveAt` Effective at. - `IReadOnlyDictionary? Metadata` Metadata. - `PaykeyDetailsV1 PaykeyDetails` - `required string ID` Unique identifier for the paykey. - `required string CustomerID` Unique identifier for the customer associated with the paykey. - `required string Label` Human-readable label that combines the bank name and masked account number to help easility represent this paykey in a UI - `Int? Balance` The most recent balance of the bank account associated with the paykey in dollars. - `PaymentRail PaymentRail` The payment rail used for the charge or payout. - `"ach"Ach` - `DateTimeOffset? ProcessedAt` Processed at. - `IReadOnlyDictionary? RelatedPayments` Related payments. - `"original"Original` - `"resubmit"Resubmit` - `"refund"Refund` - `DateTimeOffset? UpdatedAt` Updated at. - `required ResponseMetadata Meta` Metadata about the API request, including an identifier and timestamp. - `required string ApiRequestID` Unique identifier for this API request, useful for troubleshooting. - `required DateTimeOffset ApiRequestTimestamp` Timestamp for this API request, useful for troubleshooting. - `required ResponseType ResponseType` Indicates the structure of the returned content. - "object" means the `data` field contains a single JSON object. - "array" means the `data` field contains an array of objects. - "error" means the `data` field contains an error object with details of the issue. - "none" means no data is returned. - `"object"Object` - `"array"Array` - `"error"Error` - `"none"None` ### Example ```csharp PayoutUnmaskParams parameters = new() { ID = "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e" }; var response = await client.Payouts.Unmask(parameters); Console.WriteLine(response); ``` #### Response ```json { "data": { "id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", "amount": 0, "config": { "auto_hold": true, "auto_hold_message": "auto_hold_message", "sandbox_outcome": "standard" }, "currency": "currency", "description": "description", "device": { "ip_address": "ip_address" }, "external_id": "external_id", "funding_ids": [ "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e" ], "paykey": "paykey", "payment_date": "2019-12-27", "status": "created", "status_details": { "changed_at": "2019-12-27T18:11:19.117Z", "message": "Payment successfully created and awaiting validation.", "reason": "insufficient_funds", "source": "system", "code": null }, "status_history": [ { "changed_at": "2019-12-27T18:11:19.117Z", "message": "Payment successfully created and awaiting validation.", "reason": "insufficient_funds", "source": "watchtower", "status": "created", "code": null } ], "trace_ids": { "foo": "string" }, "created_at": "2019-12-27T18:11:19.117Z", "customer_details": { "id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", "customer_type": "individual", "email": "ron@swanson.com", "name": "Ron Swanson", "phone": "+1234567890" }, "effective_at": "2019-12-27T18:11:19.117Z", "metadata": { "foo": "string" }, "paykey_details": { "id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", "customer_id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", "label": "Bank of America ****1234", "balance": 0 }, "payment_rail": "ach", "processed_at": "2019-12-27T18:11:19.117Z", "related_payments": { "foo": "original" }, "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" } ``` ## Domain Types ### Payout V1 - `class PayoutV1:` - `required Data Data` - `required string ID` Unique identifier for the payout. - `required Int Amount` The amount of the payout in cents. - `required Config Config` Configuration for the payout. - `Boolean? AutoHold` Defines whether to automatically place this charge on hold after being created. - `string? AutoHoldMessage` The reason the payout is being automatically held on creation. - `SandboxOutcome SandboxOutcome` Payment will simulate processing if not Standard. - `"standard"Standard` - `"paid"Paid` - `"on_hold_daily_limit"OnHoldDailyLimit` - `"cancelled_for_fraud_risk"CancelledForFraudRisk` - `"cancelled_for_balance_check"CancelledForBalanceCheck` - `"failed_insufficient_funds"FailedInsufficientFunds` - `"reversed_insufficient_funds"ReversedInsufficientFunds` - `"failed_customer_dispute"FailedCustomerDispute` - `"reversed_customer_dispute"ReversedCustomerDispute` - `"failed_closed_bank_account"FailedClosedBankAccount` - `"reversed_closed_bank_account"ReversedClosedBankAccount` - `required string Currency` The currency of the payout. Only USD is supported. - `required string? Description` An arbitrary description for the payout. - `required DeviceInfoV1 Device` Information about the device used when the customer authorized the payout. - `required string IPAddress` The IP address of the device used when the customer authorized the charge or payout. Use `0.0.0.0` to represent an offline consent interaction. - `required string ExternalID` Unique identifier for the payout in your database. This value must be unique across all payouts. - `required IReadOnlyList FundingIds` Funding Ids - `required string Paykey` Value of the `paykey` used for the payout. - `required DateOnly PaymentDate` The desired date on which the payment should be occur. For payouts, this means the date you want the funds to be sent from your bank account. - `required Status Status` The current status of the payout. - `"created"Created` - `"scheduled"Scheduled` - `"failed"Failed` - `"cancelled"Cancelled` - `"on_hold"OnHold` - `"pending"Pending` - `"paid"Paid` - `"reversed"Reversed` - `"validating"Validating` - `required StatusDetailsV1 StatusDetails` Details about the current status of the payout. - `required DateTimeOffset ChangedAt` The time the status change occurred. - `required string Message` A human-readable description of the current status. - `required Reason Reason` A machine-readable identifier for the specific status, useful for programmatic handling. - `"insufficient_funds"InsufficientFunds` - `"closed_bank_account"ClosedBankAccount` - `"invalid_bank_account"InvalidBankAccount` - `"invalid_routing"InvalidRouting` - `"disputed"Disputed` - `"payment_stopped"PaymentStopped` - `"owner_deceased"OwnerDeceased` - `"frozen_bank_account"FrozenBankAccount` - `"risk_review"RiskReview` - `"fraudulent"Fraudulent` - `"duplicate_entry"DuplicateEntry` - `"invalid_paykey"InvalidPaykey` - `"payment_blocked"PaymentBlocked` - `"amount_too_large"AmountTooLarge` - `"too_many_attempts"TooManyAttempts` - `"internal_system_error"InternalSystemError` - `"user_request"UserRequest` - `"ok"Ok` - `"other_network_return"OtherNetworkReturn` - `"payout_refused"PayoutRefused` - `"cancel_request"CancelRequest` - `"failed_verification"FailedVerification` - `"require_review"RequireReview` - `"blocked_by_system"BlockedBySystem` - `"watchtower_review"WatchtowerReview` - `"validating"Validating` - `"auto_hold"AutoHold` - `required Source Source` Identifies the origin of the status change (e.g., `bank_decline`, `watchtower`). This helps in tracking the cause of status updates. - `"watchtower"Watchtower` - `"bank_decline"BankDecline` - `"customer_dispute"CustomerDispute` - `"user_action"UserAction` - `"system"System` - `string? Code` The status code if applicable. - `required IReadOnlyList StatusHistory` History of the status changes for the payout. - `required DateTimeOffset ChangedAt` The time the status change occurred. - `required string Message` A human-readable description of the status. - `required Reason Reason` A machine-readable identifier for the specific status, useful for programmatic handling. - `"insufficient_funds"InsufficientFunds` - `"closed_bank_account"ClosedBankAccount` - `"invalid_bank_account"InvalidBankAccount` - `"invalid_routing"InvalidRouting` - `"disputed"Disputed` - `"payment_stopped"PaymentStopped` - `"owner_deceased"OwnerDeceased` - `"frozen_bank_account"FrozenBankAccount` - `"risk_review"RiskReview` - `"fraudulent"Fraudulent` - `"duplicate_entry"DuplicateEntry` - `"invalid_paykey"InvalidPaykey` - `"payment_blocked"PaymentBlocked` - `"amount_too_large"AmountTooLarge` - `"too_many_attempts"TooManyAttempts` - `"internal_system_error"InternalSystemError` - `"user_request"UserRequest` - `"ok"Ok` - `"other_network_return"OtherNetworkReturn` - `"payout_refused"PayoutRefused` - `"cancel_request"CancelRequest` - `"failed_verification"FailedVerification` - `"require_review"RequireReview` - `"blocked_by_system"BlockedBySystem` - `"watchtower_review"WatchtowerReview` - `"validating"Validating` - `"auto_hold"AutoHold` - `required Source Source` Identifies the origin of the status change (e.g., `bank_decline`, `watchtower`). This helps in tracking the cause of status updates. - `"watchtower"Watchtower` - `"bank_decline"BankDecline` - `"customer_dispute"CustomerDispute` - `"user_action"UserAction` - `"system"System` - `required Status Status` The current status of the `charge` or `payout`. - `"created"Created` - `"scheduled"Scheduled` - `"failed"Failed` - `"cancelled"Cancelled` - `"on_hold"OnHold` - `"pending"Pending` - `"paid"Paid` - `"reversed"Reversed` - `"validating"Validating` - `string? Code` The status code if applicable. - `required IReadOnlyDictionary TraceIds` Trace Ids. - `DateTimeOffset? CreatedAt` The time the payout was created. - `CustomerDetailsV1 CustomerDetails` Information about the customer associated with the payout. - `required string ID` Unique identifier for the customer - `required CustomerType CustomerType` The type of customer - `"individual"Individual` - `"business"Business` - `required string Email` The customer's email address - `required string Name` The name of the customer - `required string Phone` The customer's phone number in E.164 format - `DateTimeOffset? EffectiveAt` The actual date on which the payment occurred. For payouts, this is the date the funds were sent from your bank account. - `IReadOnlyDictionary? Metadata` Up to 20 additional user-defined key-value pairs. Useful for storing additional information about the payout in a structured format. - `PaykeyDetailsV1 PaykeyDetails` Information about the paykey used for the payout. - `required string ID` Unique identifier for the paykey. - `required string CustomerID` Unique identifier for the customer associated with the paykey. - `required string Label` Human-readable label that combines the bank name and masked account number to help easility represent this paykey in a UI - `Int? Balance` The most recent balance of the bank account associated with the paykey in dollars. - `PaymentRail PaymentRail` The payment rail used for the payout. - `"ach"Ach` - `DateTimeOffset? ProcessedAt` The time the payout was processed by Straddle and originated to the payment rail. - `IReadOnlyDictionary? RelatedPayments` Related payments. - `"original"Original` - `"resubmit"Resubmit` - `"refund"Refund` - `DateTimeOffset? UpdatedAt` The time the payout was last updated. - `required ResponseMetadata Meta` Metadata about the API request, including an identifier and timestamp. - `required string ApiRequestID` Unique identifier for this API request, useful for troubleshooting. - `required DateTimeOffset ApiRequestTimestamp` Timestamp for this API request, useful for troubleshooting. - `required ResponseType ResponseType` Indicates the structure of the returned content. - "object" means the `data` field contains a single JSON object. - "array" means the `data` field contains an array of objects. - "error" means the `data` field contains an error object with details of the issue. - "none" means no data is returned. - `"object"Object` - `"array"Array` - `"error"Error` - `"none"None`