Payout Details

Overview

Payout details store a vendor's bank account information for ACH payments. Each vendor can have at most one payout detail record. Payout details must be authorized before payouts can be processed.


How It Works

  1. Create payout details — Add bank account information for a vendor
  2. Authorize — Approve the payout details for use in payments
  3. Process payouts — Once authorized, the vendor is payout-ready
  4. Revoke if needed — Revoke authorization to pause payouts

Example: Add bank account details for "Content Provider Inc.", then authorize the payout details. Once is_payout_ready is true, the vendor can receive ACH payments through payment batches.


API Endpoints

MethodEndpointDescription
GET/api/v1/core/vendors/{id}/payout-detailsList vendor payout details
POST/api/v1/core/vendors/payout-detailsCreate payout detail
GET/api/v1/core/vendors/payout-details/{id}Get payout detail
PUT/api/v1/core/vendors/payout-details/{id}Update payout detail
DELETE/api/v1/core/vendors/payout-details/{id}Delete payout detail
POST/api/v1/core/vendors/payout-details/{id}/authorizeAuthorize payout detail
POST/api/v1/core/vendors/payout-details/{id}/revokeRevoke payout detail

Payout Detail Object

AttributeTypeDescription
idintegerPayout detail ID
vendor_idintegerInternal vendor record ID
account_idintegerAccount ID
account_holder_namestringName on the bank account
bank_namestringName of the bank
routing_numberstringMasked ABA routing number (**** + last 4 digits)
account_numberstringMasked bank account number (**** + last 4 digits)
account_typestringchecking or savings
currencystring3-letter currency code (e.g. usd)
countrystring2-letter country code (e.g. US)
payout_method_statusstringenabled or disabled
vendor_internal_identifierstringInternal identifier (format: V + zero-padded vendor ID)
transaction_typestringAlways credit
authorization_statusstringpending, authorized, or revoked
authorization_timestampintegerUnix timestamp of when authorization was granted
authorization_methodstringwritten, electronic, or null
authorized_byintegerUser ID of who authorized the payout detail
is_payout_readybooleantrue when payout_method_status is enabled AND authorization_status is authorized
created_atintegerUnix timestamp of creation
updated_atintegerUnix timestamp of last update

Important Behaviors

  • One per vendor: Each vendor can have only one payout detail. Creating a second returns 409 Conflict.
  • Sensitive data is masked: Routing and account numbers are returned as **** + last 4 digits. Full numbers are never exposed in API responses.
  • ABA routing validation: Routing numbers must be exactly 9 digits and pass ABA checksum validation.
  • Authorization workflow: New payout details start with authorization_status: pending. They must be explicitly authorized before payouts can be processed.
  • Revoke preserves history: Revoking authorization sets status to revoked but preserves authorized_by and authorization_timestamp for audit trail.
  • Soft delete: Deleting a payout detail is a soft delete — the record is marked as deleted but retained in the database.
  • Audit logging: All create, update, delete, authorize, and revoke actions are recorded in the audit log.
  • Webhook events: Actions trigger webhook events: vendor_payout_detail.created, vendor_payout_detail.updated, vendor_payout_detail.deleted, vendor_payout_detail.authorized, vendor_payout_detail.revoked.