openapi: 3.2.0 info: title: External Trans Billpay Webhook API description: '# Overview External Trans API is a webhook that allows clients to participate in the decisioning for: * Approving/denying bill payments * Approving/denying ACH debits It''s similar to Auth API, but for bill pay and ACH debits.' version: 1.0.0 servers: - url: https://client.domain.com description: Clients will provide the URLs they would like to use for External Trans API. The URLs should use HTTPS. tags: - name: Billpay Webhook paths: /billpay: post: summary: Billpay Webhook description: Use the Billpay webhook to approve or deny billpay transactions. Use the `response_code` field in the response to communicate your decision to SoFi Tech Solutions. operationId: webhook_billpay_post tags: - Billpay Webhook parameters: - name: X-Request-ID in: header description: A unique identifier for the HTTP request. schema: type: string format: uuid required: true requestBody: description: Information about the billpay transaction. required: true content: application/json: schema: type: object properties: account: type: object properties: xid: type: integer description: 'Internal system account ID. Example: `5398373`.' example: 5398373 prn: type: string minLength: 12 maxLength: 12 description: 'Payment reference number for the account. Example: `"999200002022"`.' example: '999200002022' account_status: type: string description: 'Account status code. See the possible values in the Account Statuses enumeration. Example: `"N"`' required: - xid - prn - account_status amounts: type: object properties: trans_amount: type: number format: float description: 'Amount of the billpay transaction. Example: `150.00`' example: 150 available_funds: type: number format: float description: 'Amount of funds available to the account holder for this transaction. Example: `500.00`' example: 500 currency: type: string minLength: 3 maxLength: 3 description: 'The currency code for `trans_amount` and `fee_amount`. ISO 4217 numeric currency code. 3 digits. Example: `"840"`' example: '840' fee_amount: type: number format: float description: 'Amount of fees for this transaction, if any. Example: `3.00`' example: 3 required: - trans_amount - available_funds - currency - fee_amount timestamp: type: string description: 'Timestamp when this webhook message was sent. Format is `` where `timestamp` is `YYYYmmdd:HHMMSS` and `timezone` is always `MST`. Example: `"20200315:121504MST"`' example: 20200315:121504MST billpay_trans_id: type: integer description: 'Unique system-generated billpay transaction ID. Example: `559386`.' example: 559386 biller: type: object description: Biller information. The information sent in this object is configurable (or the `biller` object can be skipped or not sent entirely). properties: biller_id: type: integer description: 'Registry ID for the biller. Example: `1024930`' example: 1024930 nickname: type: - string - 'null' description: 'Account holder''s nickname for the biller. Nullable. Example: `"Questar"`.' example: Questar name: type: - string - 'null' description: 'Registry name for the biller. Nullable. Example: `"Questar Gas"`.' example: Questar Gas type: type: string description: 'Biller type. Possible values: - `R` — Electronic - `Z` — Paper' enum: - R - Z address_1: type: - string - 'null' description: 'Biller address line 1. Nullable. Example: `"123 Las Vegas Blvd."`' example: 123 Las Vegas Blvd. address_2: type: - string - 'null' description: 'Biller address line 2. Nullable. Example: `"Suite 300"`' example: Suite 300 city: type: - string - 'null' description: 'Biller city. Nullable. Example: `"Las Vegas"`' example: Las Vegas state_province: type: - string - 'null' description: 'Biller state or province. Nullable. Example: `"NV"`' example: NV postal_code: type: - string - 'null' description: 'Biller postal code. Nullable. Example: `"88901"`' example: '88901' phone: type: - string - 'null' description: 'Biller phone number. Nullable. Example: `"7021231234"`' example: '7021231234' version: type: string description: The version of this API. Hard-coded to `"1.0"`. enum: - '1.0' jwt: type: string description: The JSON web token (JWT) that authenticates the HTTP request from SoFi Tech Solutions. See the security overview for more information and an example. example: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnYWxpbGVvIiwiaWF0IjoxNTM0Mjc0ODgxLCJleHAiOjE1MzQyNzQ4ODZ9.1xUk4iNFGWLo01MyJUHXRlyrNlzwPvDMSXpN38TrblU required: - account - amounts - timestamp - billpay_trans_id - version responses: '200': description: Your decision and instructions for SoFi Tech Solutions. content: application/json: schema: type: object properties: response_code: type: string description: "Response code indicating how to process the billpay transaction. Possible response codes:\n\n* `00` — Approve\n\n* `01` — Reject; Insufficient funds\n\n* `98` — System Error; Reject and do not retry\n\n* `99` — System Error; Retry later\n\n\nYou can use `99` to tell SoFi Tech Solutions to retry later if your product is configured for retries. \n" required: - response_code examples: response: value: "{\n \"response_code\": \"00\"\n}\n" x-explorer-enabled: false x-samples-enabled: false x-readme: proxy-enabled: true