/** * This file was auto-generated by openapi-typescript. * Do not make direct changes to the file. */ export interface paths { '/v1/incoming_transfers': { /** * Create incoming transfer * * @description * This endpoint creates a new incoming transfer. You may use use any eligible bank account connection to fund (ACH Debit) * any active Brex business account. * * **Reminder**: You may not use the Brex API for any activity that requires a license or registration from any * governmental authority without Brex's prior review and approval. This includes but is not limited to any money services * business or money transmission activity. * * Please review the Brex Access Agreement and contact us if * you have any questions. */ post: operations['createIncomingTransfer'] } '/v1/linked_accounts': { /** * Lists linked accounts * * @description * This endpoint lists all bank connections that are eligible to make ACH transfers to Brex business account */ get: operations['listLinkedAccounts'] } '/v1/transfers': { /** * Lists transfers * * @description * This endpoint lists existing transfers for an account. * * Currently, the API can only return transfers for the following payment rails: * - ACH * - DOMESTIC_WIRE * - CHEQUE * - INTERNATIONAL_WIRE */ get: operations['listTransfers'] /** * Create transfer * * @description * This endpoint creates a new transfer. * * Currently, the API can only create transfers for the following payment rails: * - ACH * - DOMESTIC_WIRE * - CHEQUE * - INTERNATIONAL_WIRES (For vendors already created through dashboard. Rate limited to 100/day - Please reach out to developer-support@brex.com if you need to do more) * * **Transaction Descriptions** * * For outgoing check payments, a successful transfer will return a response containing a description value with a format of `Check # to - `. * * For book transfers (from one Brex Business account to another), the recipient value will have a format of ` - ` and the sender will have a format of ` - `. * * For other payment rails, the format will be ` - `, where Counterparty name is `payment_instrument.beneficiary_name` or `contact.name` * For vendors created from the Payments API, the `counterparty_name` will be the `company_name` [field](/openapi/payments_api/#operation/createVendor!path=company_name&t=request). * * **Reminder**: You may not use the Brex API for any activity that requires a license or registration from any * governmental authority without Brex's prior review and approval. This includes but is not limited to any money services * business or money transmission activity. * * Please review the Brex Access Agreement and contact us if * you have any questions. */ post: operations['createTransfer'] } '/v1/transfers/{id}': { /** * Get transfer * * @description * This endpoint gets a transfer by ID. * * Currently, the API can only return transfers for the following payment rails: * - ACH * - DOMESTIC_WIRE * - CHEQUE * - INTERNATIONAL_WIRE */ get: operations['getTransfersById'] } '/v1/vendors': { /** * Lists vendors * * @description * This endpoint lists all existing vendors for an account. * Takes an optional parameter to match by vendor name. */ get: operations['listVendors'] /** * Create vendor * * @description * This endpoint creates a new vendor. */ post: operations['createVendor'] } '/v1/vendors/{id}': { /** * Get vendor * * @description * This endpoint gets a vendor by ID. */ get: operations['getVendorById'] /** * Update vendor * @description * Updates an existing vendor by ID. */ put: operations['updateVendor'] /** * Delete vendor. * * @description * This endpoint deletes a vendor by ID. */ delete: operations['deleteVendor'] } } export type webhooks = Record export interface components { schemas: { ACHDetailsRequest: { type: 'ACH' } & Omit & { type: components['schemas']['PaymentDetailsTypeRequest'] /** @description The routing number must follow proper format. */ routing_number: string account_number: string account_type: components['schemas']['AccountType'] account_class: components['schemas']['AccountClass'] beneficiary_name?: string | null } ACHDetailsResponse: { type: 'ACH' } & Omit & { type: components['schemas']['PaymentDetailsTypeResponse'] /** * @description Payment Instrument ID that can be passed to the /transfers endpoint to trigger a transfer. * The type of the payment instrument dictates the method. */ payment_instrument_id: string routing_number: string account_number: string account_type?: components['schemas']['AccountType'] account_class?: components['schemas']['AccountClass'] } /** @enum {string} */ AccountClass: 'BUSINESS' | 'PERSONAL' /** @enum {string} */ AccountType: 'CHECKING' | 'SAVING' /** @description Company business address (must be in the US; no PO box or virtual/forwarding addresses allowed). */ Address: { /** @description Address line 1, no PO Box. */ line1?: string | null /** @description Address line 2 (e.g., apartment, suite, unit, or building). */ line2?: string | null /** @description City, district, suburb, town, or village. */ city?: string | null /** @description For US-addressed the 2-letter State abbreviation. For international-addresses the county, providence, or region. */ state?: string | null /** @description Two-letter country code (ISO 3166-1 alpha-2). */ country?: string | null /** @description ZIP or postal code. */ postal_code?: string | null /** @description Phone number. */ phone_number?: string | null } /** * @description Specifies the approval type for the transaction. * `MANUAL` requires a cash admin to approve the transaction before disbursing funds. * When not set, the default policy will apply. * @enum {string} */ ApprovalType: 'MANUAL' Balance: { amount: components['schemas']['Money'] /** Format: date */ as_of_date: string } BankAccountDetailsResponse: { type: 'BANK_ACCOUNT' } & Omit & { type: components['schemas']['CounterPartyResponseType'] /** @description Routing number of a bank account (or SWIFT/BIC code for international transfer). For incoming cheques, this field might be null. */ routing_number?: string | null /** @description Account number of a bank account (or IBAN code for international transfer). For incoming cheques, this field might be null. */ account_number?: string | null /** @description Description of the transfer. */ description?: string | null beneficiary_bank?: components['schemas']['BeneficiaryBank'] /** @description Fed reference number for incoming wires */ fed_reference_number?: string | null /** @description External Memo populated by the sender */ external_memo?: string | null } BankConnection: { id: string bank_details?: components['schemas']['BankDetails'] /** @description Brex business account ID */ brex_account_id?: string | null last_four: string available_balance?: components['schemas']['Balance'] current_balance?: components['schemas']['Balance'] } BankDetails: { /** @description The name of the bank */ name?: string type?: components['schemas']['BankType'] } /** @enum {string} */ BankType: 'CHECKING' | 'SAVING' BeneficiaryBank: { name?: string | null address?: components['schemas']['Address'] } BookTransferDetails: { type: 'BOOK_TRANSFER' } & Omit & { type: components['schemas']['CounterPartyType'] recipient: components['schemas']['Recipient'] } BookTransferDetailsResponse: { type: 'BOOK_TRANSFER' } & Omit & { type: components['schemas']['CounterPartyResponseType'] /** @description This feature is currently limited to certain customers, please reach out if you are interested */ deposit_account_id: string } BrexCashAccountDetails: { type: 'BREX_CASH' } & Omit & { type: components['schemas']['OriginatingAccountType'] /** * @description * ID of the Brex Business account: Can be found from the `/accounts` endpoint * where instrument type is `CASH`. */ id: string } BrexCashAccountDetailsResponse: { type: 'BREX_CASH' } & Omit & { type: components['schemas']['OriginatingAccountResponseType'] /** * @description * ID of the Brex Business account. */ id: string } BrexCashDetails: { type: 'BREX_CASH' } & Omit & { type: components['schemas']['ReceivingAccountType'] /** * @description * ID of the Brex business account: Can be found from the [List business accounts](/openapi/transactions_api/#operation/listAccounts) endpoint */ id: string } ChequeDetailsRequest: { type: 'CHEQUE' } & Omit & { type: components['schemas']['PaymentDetailsTypeRequest'] mailing_address: components['schemas']['Address'] recipient_name: string beneficiary_name?: string | null } ChequeDetailsResponse: { type: 'CHEQUE' } & Omit & { type: components['schemas']['PaymentDetailsTypeResponse'] /** * @description Payment Instrument ID that can be passed to the /transfers endpoint to trigger a transfer. * The type of the payment instrument dictates the method. */ payment_instrument_id: string mailing_address: components['schemas']['Address'] recipient_name: string } /** @description Counterparty Details for the transfer */ CounterParty: | components['schemas']['VendorDetails'] | components['schemas']['BookTransferDetails'] CounterPartyBankDetails: { type: 'BANK' } & Omit & { type: components['schemas']['CounterPartyIncomingTransferType'] /** * @description * The financial account id: Can be found from the [List linked accounts](/openapi/payments_api/#operation/listLinkedAccounts) endpoint */ id: string } /** @description Counterparty Details for the transfer */ CounterPartyIncomingTransfer: components['schemas']['CounterPartyBankDetails'] /** @enum {string} */ CounterPartyIncomingTransferType: 'BANK' /** * @description Counterparty Details for the transfer - Currently only supports vendors that are returned in the * response from the /vendors endpoint * BOOK_TRANSFER is a limited feature. Please reach out if you are interested. */ CounterPartyResponse: components['schemas']['VendorDetailsResponse'] /** @enum {string} */ CounterPartyResponseType: 'VENDOR' | 'BOOK_TRANSFER' | 'BANK_ACCOUNT' /** @enum {string} */ CounterPartyType: 'VENDOR' | 'BOOK_TRANSFER' CreateIncomingTransferRequest: { counterparty: components['schemas']['CounterPartyIncomingTransfer'] receiving_account: components['schemas']['ReceivingAccount'] amount: components['schemas']['Money'] /** * @description * Description of the transfer for internal use. Not exposed externally. */ description: string } CreateTransferRequest: { counterparty: components['schemas']['CounterParty'] amount: components['schemas']['Money'] /** @description Description of the transfer for internal use. Not exposed externally. */ description: string /** * @description External memo for the transfer. `Payment Instructions` for Wires and the `Entry Description` for ACH payments. * Must be at most 90 characters for `ACH` and `WIRE` transactions * and at most 40 characters for `CHEQUES` */ external_memo: string originating_account: { type: 'CreateTransferRequest' } & Omit approval_type?: components['schemas']['ApprovalType'] } CreateVendorRequest: { /** @description Name for vendor. The name must be unique. */ company_name: string /** * Format: email * @description Email for vendor. */ email?: string | null /** @description Phone number for vendor. */ phone?: string | null /** @description Payment accounts associated with the vendor. */ payment_accounts?: components['schemas']['PaymentAccountRequest'][] | null } DomesticWireDetailsRequest: { type: 'DOMESTIC_WIRE' } & Omit & { type: components['schemas']['PaymentDetailsTypeRequest'] /** @description The routing number must follow proper format. */ routing_number: string account_number: string address: components['schemas']['Address'] beneficiary_name?: string | null } DomesticWireDetailsResponse: { type: 'DOMESTIC_WIRE' } & Omit & { type: components['schemas']['PaymentDetailsTypeResponse'] /** * @description Payment Instrument ID that can be passed to the /transfers endpoint to trigger a transfer. * The type of the payment instrument dictates the method. */ payment_instrument_id: string routing_number: string account_number: string address: components['schemas']['Address'] } InternationalWireDetailsResponse: { type: 'INTERNATIONAL_WIRE' } & Omit & { type: components['schemas']['PaymentDetailsTypeResponse'] /** * @description Payment Instrument ID that can be passed to the /transfers endpoint to trigger a transfer. * The type of the payment instrument dictates the method. */ payment_instrument_id: string /** @description Counterparty's `SWIFT` code */ swift_code: string /** @description Counterparty's international bank account number */ iban: string /** @description Name of counterparty's bank */ beneficiary_bank_name?: string | null address: components['schemas']['Address'] } /** * @description * Money fields can be signed or unsigned. Fields are signed (an unsigned value will be interpreted as positive). The amount of money will be represented in the smallest denomination * of the currency indicated. For example, USD 7.00 will be represented in cents with an amount of 700. */ Money: { /** * Format: int64 * @description The amount of money, in the smallest denomination of the currency indicated by currency. For example, when currency is USD, amount is in cents. */ amount?: number /** @description The type of currency, in ISO 4217 format. Default to USD if not specified */ currency?: string | null } /** @description Originating account details for the transfer */ OriginatingAccount: components['schemas']['BrexCashAccountDetails'] /** @description Originating account details for the transfer */ OriginatingAccountResponse: components['schemas']['BrexCashAccountDetailsResponse'] /** @enum {string} */ OriginatingAccountResponseType: 'BREX_CASH' /** @enum {string} */ OriginatingAccountType: 'BREX_CASH' Page_BankConnection_: { next_cursor?: string | null items: components['schemas']['BankConnection'][] } Page_Transfer_: { next_cursor?: string | null items: components['schemas']['Transfer'][] } Page_VendorResponse_: { next_cursor?: string | null items: components['schemas']['VendorResponse'][] } /** * @description Payment Instruments associated with the vendor. * Each vendor can only have one payment account per payment instrument type. For instance, a vendor may have associated details for each of ACH, DOMESTIC_WIRE, and CHEQUE, but they cannot have 2 entries for ACH. If you modify a vendor's existing payment instrument type with new details, it will overwrite any previous data. */ PaymentAccountDetails: | components['schemas']['ACHDetailsRequest'] | components['schemas']['DomesticWireDetailsRequest'] | components['schemas']['ChequeDetailsRequest'] PaymentAccountDetailsResponse: | components['schemas']['ACHDetailsResponse'] | components['schemas']['DomesticWireDetailsResponse'] | components['schemas']['ChequeDetailsResponse'] | components['schemas']['InternationalWireDetailsResponse'] PaymentAccountRequest: { details: components['schemas']['PaymentAccountDetails'] } PaymentAccountResponse: { details: components['schemas']['PaymentAccountDetailsResponse'] } /** @enum {string} */ PaymentDetailsTypeRequest: 'ACH' | 'DOMESTIC_WIRE' | 'CHEQUE' /** @enum {string} */ PaymentDetailsTypeResponse: | 'ACH' | 'DOMESTIC_WIRE' | 'CHEQUE' | 'INTERNATIONAL_WIRE' /** @enum {string} */ PaymentType: | 'ACH' | 'DOMESTIC_WIRE' | 'CHEQUE' | 'INTERNATIONAL_WIRE' | 'BOOK_TRANSFER' /** @description Receiving account details for the transfer */ ReceivingAccount: components['schemas']['BrexCashDetails'] /** @enum {string} */ ReceivingAccountType: 'BREX_CASH' Recipient: { type: components['schemas']['RecipientType'] id: string } /** * @description Specifies the type of the recipient. * `ACCOUNT_ID` is the ID of a Brex Business account. * `PAYMENT_INSTRUMENT_ID` is the ID of Payment Instrument of the receiving Brex account. * * @enum {string} */ RecipientType: 'ACCOUNT_ID' | 'PAYMENT_INSTRUMENT_ID' Transfer: { /** @description Unique ID associated with the transfer */ id: string counterparty?: { type: 'Transfer' } & Omit /** @description Description of the transfer */ description?: string | null payment_type: components['schemas']['PaymentType'] amount: components['schemas']['Money'] /** * Format: date * @description Transaction processing date */ process_date?: string | null originating_account: components['schemas']['OriginatingAccountResponse'] status: components['schemas']['TransferStatus'] cancellation_reason?: components['schemas']['TransferCancellationReason'] /** * Format: date * @description Estimated delivery date for transfer */ estimated_delivery_date?: string | null /** @description User ID of the transfer initiator */ creator_user_id?: string | null /** * Format: date * @description Date of transfer creation */ created_at?: string | null /** @description Human readable name for the transaction */ display_name?: string | null /** * @description External memo for the transfer. `Payment Instructions` for Wires and the `Entry Description` for ACH payments. * Must be at most 90 characters for `ACH` and `WIRE` transactions * and at most 40 characters for `CHEQUES` */ external_memo?: string | null } /** * @description `USER_CANCELLED`: The transfer was canceled. * `INSUFFICIENT_FUNDS`: The transfer could not be sent due to insufficient funds. * `APPROVAL_DENIED`: The transfer was not sent because it was denied. * `BLOCKED_BY_POSITIVE_PAY`: The transfer was blocked because of the ACH debit settings. * * @enum {string} */ TransferCancellationReason: | 'USER_CANCELLED' | 'INSUFFICIENT_FUNDS' | 'APPROVAL_DENIED' | 'BLOCKED_BY_POSITIVE_PAY' /** * @description `PROCESSING`: We have started to process the sending or receiving of this transaction. * `SCHEDULED`: The transaction is scheduled to enter the `PROCESSING` status. * `PENDING_APPROVAL`: The transaction requires approval before it can enter the `SCHEDULED` or `PROCESSING` status. * `FAILED`: A grouping of multiple terminal states that prevented the transaction from completing. * This includes a a user-cancellation, approval being denied, insufficient funds, failed verifications, etc. * `PROCESSED`: The money movement has been fully completed, which could mean money sent has arrived. * * @enum {string} */ TransferStatus: | 'PROCESSING' | 'SCHEDULED' | 'PENDING_APPROVAL' | 'FAILED' | 'PROCESSED' UpdateVendorRequest: { /** @description Name for vendor */ company_name?: string | null /** * Format: email * @description Email for vendor */ email?: string | null /** @description Phone number for vendor */ phone?: string | null /** @description To update payment instruments, we require the entire payload for each payment instrument that is being updated. */ payment_accounts?: components['schemas']['PaymentAccountRequest'][] | null /** @description Name for the Beneficiary */ beneficiary_name?: string | null } VendorDetails: { type: 'VENDOR' } & Omit & { type: components['schemas']['CounterPartyType'] /** * @description ID of the vendor's payment instrument: this will dictate the payment method and the * counterparty of the transaction. * The payment instrument ID is returned from the /vendors response and the type of the * instrument will dictate the payment method. * eg. Passing an instrument ID of type ACH will trigger an ACH payment to the associated vendor. * Since a payment instrument can be updated while retaining the same payment_instrument_id, * please make sure to double check the details. */ payment_instrument_id: string } VendorDetailsResponse: { type: 'VENDOR' } & Omit & { type: components['schemas']['CounterPartyResponseType'] payment_instrument_id: string /** @description Vendor ID returned from `/vendors` endpoint */ id: string /** @description Routing number of a bank account (or SWIFT/BIC code for international transfer). */ routing_number?: string | null /** @description Account number of a bank account (or IBAN code for international transfer). */ account_number?: string | null } VendorResponse: { /** @description Vendor ID: Can be passed to /transfers endpoint to specify counterparty. */ id: string company_name?: string | null email?: string | null phone?: string | null payment_accounts?: | components['schemas']['PaymentAccountResponse'][] | null } } responses: never parameters: never requestBodies: never headers: never pathItems: never } export type $defs = Record export type external = Record export interface operations { /** * Create incoming transfer * * @description * This endpoint creates a new incoming transfer. You may use use any eligible bank account connection to fund (ACH Debit) * any active Brex business account. * * **Reminder**: You may not use the Brex API for any activity that requires a license or registration from any * governmental authority without Brex's prior review and approval. This includes but is not limited to any money services * business or money transmission activity. * * Please review the Brex Access Agreement and contact us if * you have any questions. */ createIncomingTransfer: { parameters: { header: { 'Idempotency-Key': string } } requestBody: { content: { 'application/json': components['schemas']['CreateIncomingTransferRequest'] } } responses: { /** @description createIncomingTransfer 200 response */ 200: { content: { 'application/json': components['schemas']['Transfer'] } } } } /** * Lists linked accounts * * @description * This endpoint lists all bank connections that are eligible to make ACH transfers to Brex business account */ listLinkedAccounts: { parameters: { query?: { cursor?: string | null limit?: number | null } } responses: { /** @description listLinkedAccounts 200 response */ 200: { content: { 'application/json': components['schemas']['Page_BankConnection_'] } } /** @description Bad request */ 400: { content: never } /** @description Unauthorized */ 401: { content: never } /** @description Forbidden */ 403: { content: never } } } /** * Lists transfers * * @description * This endpoint lists existing transfers for an account. * * Currently, the API can only return transfers for the following payment rails: * - ACH * - DOMESTIC_WIRE * - CHEQUE * - INTERNATIONAL_WIRE */ listTransfers: { parameters: { query?: { cursor?: string | null limit?: number | null } } responses: { /** @description listTransfers 200 response */ 200: { content: { 'application/json': components['schemas']['Page_Transfer_'] } } /** @description Bad request */ 400: { content: never } /** @description Unauthorized */ 401: { content: never } /** @description Forbidden */ 403: { content: never } /** @description Internal server error */ 500: { content: never } } } /** * Create transfer * * @description * This endpoint creates a new transfer. * * Currently, the API can only create transfers for the following payment rails: * - ACH * - DOMESTIC_WIRE * - CHEQUE * - INTERNATIONAL_WIRES (For vendors already created through dashboard. Rate limited to 100/day - Please reach out to developer-support@brex.com if you need to do more) * * **Transaction Descriptions** * * For outgoing check payments, a successful transfer will return a response containing a description value with a format of `Check # to - `. * * For book transfers (from one Brex Business account to another), the recipient value will have a format of ` - ` and the sender will have a format of ` - `. * * For other payment rails, the format will be ` - `, where Counterparty name is `payment_instrument.beneficiary_name` or `contact.name` * For vendors created from the Payments API, the `counterparty_name` will be the `company_name` [field](/openapi/payments_api/#operation/createVendor!path=company_name&t=request). * * **Reminder**: You may not use the Brex API for any activity that requires a license or registration from any * governmental authority without Brex's prior review and approval. This includes but is not limited to any money services * business or money transmission activity. * * Please review the Brex Access Agreement and contact us if * you have any questions. */ createTransfer: { parameters: { header: { 'Idempotency-Key': string } } requestBody: { content: { 'application/json': components['schemas']['CreateTransferRequest'] } } responses: { /** @description createTransfer 200 response */ 200: { content: { 'application/json': components['schemas']['Transfer'] } } } } /** * Get transfer * * @description * This endpoint gets a transfer by ID. * * Currently, the API can only return transfers for the following payment rails: * - ACH * - DOMESTIC_WIRE * - CHEQUE * - INTERNATIONAL_WIRE */ getTransfersById: { parameters: { path: { id: string } } responses: { /** @description getTransfersById 200 response */ 200: { content: { 'application/json': components['schemas']['Transfer'] } } /** @description Bad request */ 400: { content: never } /** @description Unauthorized */ 401: { content: never } /** @description Forbidden */ 403: { content: never } /** @description Internal server error */ 500: { content: never } } } /** * Lists vendors * * @description * This endpoint lists all existing vendors for an account. * Takes an optional parameter to match by vendor name. */ listVendors: { parameters: { query?: { cursor?: string | null limit?: number | null name?: string | null } } responses: { /** @description listVendors 200 response */ 200: { content: { 'application/json': components['schemas']['Page_VendorResponse_'] } } /** @description Bad request */ 400: { content: never } /** @description Unauthorized */ 401: { content: never } /** @description Forbidden */ 403: { content: never } } } /** * Create vendor * * @description * This endpoint creates a new vendor. */ createVendor: { parameters: { header: { 'Idempotency-Key': string } } requestBody: { content: { 'application/json': components['schemas']['CreateVendorRequest'] } } responses: { /** @description createVendor 200 response */ 200: { content: { 'application/json': components['schemas']['VendorResponse'] } } } } /** * Get vendor * * @description * This endpoint gets a vendor by ID. */ getVendorById: { parameters: { path: { id: string } } responses: { /** @description getVendorById 200 response */ 200: { content: { 'application/json': components['schemas']['VendorResponse'] } } /** @description Bad request */ 400: { content: never } /** @description Unauthorized */ 401: { content: never } /** @description Forbidden */ 403: { content: never } /** @description Internal server error */ 500: { content: never } } } /** * Update vendor * @description * Updates an existing vendor by ID. */ updateVendor: { parameters: { header?: { 'Idempotency-Key'?: string | null } path: { id: string } } requestBody: { content: { 'application/json': components['schemas']['UpdateVendorRequest'] } } responses: { /** @description updateVendor 200 response */ 200: { content: { 'application/json': components['schemas']['VendorResponse'] } } } } /** * Delete vendor. * * @description * This endpoint deletes a vendor by ID. */ deleteVendor: { parameters: { path: { id: string } } responses: { /** @description deleteVendor 200 response */ 200: { content: never } } } } export interface oasTypes { components: components external: external operations: operations paths: paths webhooks: webhooks } export default oasTypes