SoFi Tech Solutions Auth API

The authorization controller webhook. SoFi Tech Solutions hands the client the in-flight card authorization - populated from the ISO 8583 message the network sent, including CAVV and 3-D Secure fields - along with the response_code it intends to return to the merchant, and the client overrides that code in the HTTP response body to approve or deny. This is the platform surface where the client, not the processor, makes the decision.

Operations 2

POST /basepath/Authorization Auth API Webhook 2.0 #
POST /base_path/Authorization Auth API Webhook 3.0 #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/sofi-tech-solutions-auth-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

sofi-technologies-auth-api-openapi.json Raw ↑
{"openapi":"3.0.2","x-explorer-enabled":false,"x-samples-enabled":false,"info":{"title":"Auth API","description":"# Overview\n\nAuth API is a webhook that allows clients to participate in the authorization\ndecision making process.\n\nSoFi Tech Solutions receives authorizaton requests for transactions,\nand uses various criteria for deciding whether to approve or deny the\nrequest (correct PIN, sufficient funds, etc.). Near the end of the authorization\nrequest processing, we send a webhook message to your system, providing \ninformation about the authorization request (including how we plan to\nhandle the request); you can respond with how you would like the\nauthorization request to be processed.\n\n# Versions\nThere are currently two supported versions of the Auth API - v2.0 and v3.0. The main\ndifference is that v3.0 provides additional details regarding response codes.\nNew integrations use v3.0.\n\n# Security\n\nYou should use HTTPS for your Auth API webhook to ensure fundamental\nsecurity is in place.\n\nSoFi Tech Solutions will use a JSON Web Token (JWT) for authenticating with your webhook. \nA shared secret will be used for encoding and decoding the token.\nThe payload will have the following claims:\n* `iat` - Issued At\n* `exp` - Expiration Time\n* `iss` - \"galileo\"\n\nThe token will be created using the following Python code:\n```python\nimport jwt\nfrom datetime import datetime, timedelta\npayload = {\n    'exp': datetime.utcnow() + timedelta(seconds=5),\n    'iat': datetime.utcnow(),\n    'iss': 'galileo'\n}\ntoken = jwt.encode(payload, secret, algorithm='HS256')\n```\n\nwhere `secret` is the shared secret.\n\nThe token will be placed in the Authorization header field.\n\n## Security Example\n\nHere is the header value for `exp = 1534274886` and `iat = 1534274881`:\n```\nAuthorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnYWxpbGVvIiwiaWF0IjoxNTM0Mjc0ODgxLCJleHAiOjE1MzQyNzQ4ODZ9.1xUk4iNFGWLo01MyJUHXRlyrNlzwPvDMSXpN38TrblU\n```\n\n# Paths\n\nYou provide a base URL, hosted by a server in the client's system.\nWe will invoke your webhook at the `/Authorization` endpoint.\n\n# Examples\n\n* Override the response code\n  * SoFi Tech Solutions receives an authorization request and plans to approve it\n    (the account has sufficient funds, and so forth).\n  * We invoke the your Auth API webhook to see if you\n    want to modify the processing.\n  * You see that the transaction amount is above a limit, so you indicate that\n    the transaction should be declined with code `\"61\"` (`Exceeds Amount Limit`).\n* You maintain your own balance\n  * For some products, you may maintain the balance instead of\n    SoFi Tech Solutions.\n  * When we get a balance inquiry, we will invoke your\n    Auth API webhook.\n  * You can respond with the balance available, in the\n    `available_balance` field.\n* Client initiates transfer\n  * Suppose SoFi Tech Solutions receives an authorization request, and the cardholder has\n    insufficient funds; we are ready to decline the request.\n  * But before we do, we invoke your Auth API webhook.\n  * You see that the account has insufficient funds, so you initiate\n    a transfer by sending back the `transfer_prn` and `transfer_amount`.\n  * After the transfer, the cardholder has sufficient funds, so we\n    approve the authorization.\n","version":"2.0.0"},"servers":[{"url":"https://example.client.domain.com","description":"You will provide the base URL you would like to use for Auth API. The endpoint should use HTTPS."}],"security":[{"bearerAuth":[]}],"paths":{"/basepath/Authorization":{"post":{"summary":"Auth API Webhook 2.0","description":"With the Auth API 2.0 webhook, you can participate in authorization decisions.  For this webhook there is only one verb: `POST`. SoFi Tech Solutions sends information about the  authorization request in the body of the HTTP request, in JSON. Your decision should be in the body  of the HTTP response.\n\nIn the authorization information that we send, the `response_code` is the current response code to be returned to the merchant, unless you override it. Use the `response_code` field in the HTTP response body  to override the authorization response code, as desired.\n\nSee the <a href=\"doc:authorization-controller-api\" target=\"_blank\">Authorization Controller API</a> guide for more information.\n> 📘 About the field properties\n>\n> SoFi Tech Solutions initializes the webhook payload by setting all fields to `null`.  As values come in with the ISO 8583 authorization request, we populate the respective payload  fields with the data the network sends, which can include  empty strings (`\" \"`). This  documentation shows the field properties (data type, nullability, required) that are most likely.  However, variations by network and transaction type mean that a few of the values passed in the  webhook payload can vary from what is shown here. \n","operationId":"webhook_authorization_post_2","tags":["Auth API 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 authorization request.","required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"auth_type":{"type":"string","description":"All transactions are grouped into three basic message types:\n* `Auth` &mdash; Authorization request. MTI x1xx (authorization or preauthorization over credit rails or preauthorization over debit rails) or x2xx (authorization over debit rails).\n* `Advice` &mdash; Notification of a completed transaction. MTI xx2x. Only a `00` response code is permitted.\n* `Reversal` &mdash; A reversal of a previous authorization. MTI x4xx. May or may not reference the previous authorization.","enum":["Auth","Advice","Reversal"]},"transaction_type":{"type":"string","description":"The transaction type indicates at a lower level what kind of transaction this is.  This field is used to differentiate merchant credits, ATMs, balance inquiries, etc.\n* `Preauth` &mdash; A preauthorization for an estimated amount. Often followed by a completion advice.\n* `Auth` &mdash; Conventional authorization request. Also used with advices and reversals.\n* `ATM` &mdash; ATM withdrawal.\n* `Cash Advance` &mdash; Cash advance from a teller.\n* `Balance Inquiry` &mdash; Balance inquiry from an ATM.\n* `Merchant Credit` &mdash; A credited amount from a merchant. Usually does not reference a previous authorization.\n* `Adjustment` &mdash; Debit adjustment, unrelated to a previous authorization. The merchant is adjusting a cardholder balance.\n* `Payment` &mdash; Loading funds onto a card.\n* `Tokenization` &mdash; A request to tokenize a card for use in a mobile wallet or a request from a merchant to validate a tokenized card for payment.","enum":["Preauth","Auth","ATM","Cash Advance","Balance Inquiry","Merchant Credit","Adjustment","Payment","Tokenization"]},"id":{"type":"string","description":"Unique identifier for this authorization. \n\nExample: `\"DHWJtI8zRjuDcgF8hru3oQ\"`","example":"DHWJtI8zRjuDcgF8hru3oQ"},"timestamp":{"type":"string","description":"Date and time when the webhook was sent by SoFi Tech Solutions.\n\nFormat is `<timestamp><timezone>`, where `timestamp` is `YYYYMMDD:HHMMSS` and `timezone` is always `MST`, which is Arizona time (GMT -0700).\n\nExample: `\"20250315:121504MST\"`","example":"20250315:121504MST"},"network":{"type":"string","description":"Card network name. Possible values:\n\n* `Visa`\n* `Allpoint`\n* `Discover`\n* `Mastercard`\n* `Star`\n* `Pulse`","enum":["Visa","Allpoint","Discover","Mastercard","Star","Pulse"]},"subnetwork":{"type":"string","description":"The subnetwork name. This is the same as `network` if there is no subnetwork. Possible values:\n\n* `Visa`\n* `Visa Interlink`\n* `Visa PLUS`\n* `Mastercard Banknet`\n* `Mastercard Debit Switch`\n* `Discover`\n* `Allpoint`\n* `Star`\n* `Star MoneyPass`\n* `Star Presto`\n* `Pulse`","enum":["Visa","Visa Interlink","Visa PLUS","Mastercard Banknet","Mastercard Debit Switch","Discover","Allpoint","Star","Star MoneyPass","Star Presto","Pulse"]},"account":{"type":"object","properties":{"xid":{"type":"integer","description":"Internal ID for the account.\n\nExample: `5398373`","example":5398373},"cad":{"type":"integer","description":"System-generated ID for the card. This ID has a 1:1 relationship with the <<glossary:PAN>>.\n\nExample: `72450868`","example":72450868},"prn":{"type":"string","minLength":12,"maxLength":12,"description":"<a href=\"doc:about-accounts#prn\" target=\"_blank\">Payment reference number</a> for the account. 12 digits.\n\nExample: `\"999200002022\"`","example":"999200002022"},"product_id":{"type":"integer","nullable":true,"description":"Product ID for the account, as provided by SoFi Tech Solutions.\n\nExample: `2577`","example":2577},"program_id":{"type":"integer","nullable":true,"description":"Program ID for the account, as provided by SoFi Tech Solutions.\n\nExample: `566`","example":566},"pan":{"type":"string","description":"Last four digits of the <<glossary:PAN>> of the card.\n\nExample: `\"5198\"`","example":"5198"},"account_status":{"type":"string","description":"Account status code. See the possible values in the <a href=\"ref:api-reference-account-statuses\" target=\"_blank\">Account Statuses</a> enumeration.\n\nExample: `\"N\"`"},"card_status":{"type":"string","example":"N","description":"Card status code. See the possible values in the <a href=\"ref:api-reference-card-statuses\" target=\"_blank\">Card Statuses</a> enumeration.\n\nExample: `\"N\"`"},"expiration_date":{"type":"string","minLength":4,"maxLength":4,"description":"Card expiration date (format `YYMM`).\n\nExample: `\"2103\"`.","example":"2103"},"track_expiration_date":{"type":"string","minLength":4,"maxLength":4,"nullable":true,"description":"The expiration date (format: `YYMM`) that was read from the card's magnetic stripe and sent in the ISO message, if present and applicable. For example, this field will not be present for a card-not-present transaction.\n\nExample: `\"2103\"`","example":"2103"},"merchant_supplied_expiration_date":{"type":"string","minLength":4,"maxLength":4,"nullable":true,"description":"The expiration date (format: `YYMM`) supplied by the merchant, if present and applicable.\n\n\nExample: `\"2103\"`","example":"2103"}},"required":["xid","cad","prn","pan","account_status","card_status","expiration_date","track_expiration_date","merchant_supplied_expiration_date"]},"amounts":{"type":"object","description":"The amounts are always unsigned. To calculate the sign for an amount, start with a factor of &ndash;1, and then apply another factor of &ndash;1 for each of the following criteria:\n* `\"auth_type\": \"Reversal\"`\n* `\"transaction_type\": \"Merchant Credit\"`\n* `\"transaction_type\": \"Payment\"`\n\nAmount fields may not display a numeric value for non-active cards. Instead, the string `\"none\"` could be displayed.","properties":{"currency":{"type":"string","minLength":3,"maxLength":3,"nullable":true,"description":"The currency code for the amounts, unless otherwise indicated. This is the currency of the cardholder account. ISO 4217 Numeric Currency Code. 3 digits.\n\nExample: `\"840\"`","example":"840"},"trans_amount":{"type":"string","description":"Transaction amount. Full amount of the authorization request, including upcharges and fees and after any currency conversion is performed.\n\nExample: `\"12.40\"`","example":"12.40"},"partial_amount":{"type":"string","default":"0.0","description":"If `partial_supported: true` and `response_code` is `10` or `87`, this is the amount of the partial approval.\n\nExample: `\"10.00\"`","example":"10.00"},"cashback_amount":{"type":"string","default":"0.0","description":"Cashback amount requested. This amount is included in `trans_amount`.\n\nExample: `\"5.00\"`","example":"5.00"},"fee_amount":{"type":"string","default":"0.0","description":"Amount of any fees. This amount is included in `trans_amount`.\n\nExample: `\"1.50\"`","example":"1.50"},"available_funds":{"type":"string","description":"The card's <a href=\"doc:account-balances#available-balance\" target=\"_blank\">available balance</a> before this transaction is applied.\n\nIf this authorization request is approved, the card's available balance is affected within a few milliseconds after the approval is sent to the network. Keep in mind that this is the available balance known to SoFi Tech Solutions&mdash;if you are the system of record for your program, refer to your records to determine whether the account has sufficient funds.\n\n\nExample: `100.00`","example":100},"amt_til_limit":{"type":"string","default":"0.0","description":"Amount remaining before `nearest_limit` is reached.\n\nExample: `502.80`","example":502.8},"nearest_limit":{"type":"string","nullable":true,"description":"The name of the first limit that would be reached if a partial authorization or denied authorization is overridden via the `override_limit` field. This field is present only when the limit would be reached in overriding the authorization.\n\nExample: `\"PCL Daily Limit\"`","example":"PCL Daily Limit"},"local_currency":{"type":"string","minLength":3,"maxLength":3,"description":"ISO 4217 numeric currency code for `local_currency_amount`, which is the currency at the point of sale. 3 digits.\n\nExample: `\"124\"`","example":"124"},"local_currency_amount":{"type":"string","default":"0.0","description":"Amount of the request in the currency at the point of sale. Upcharges and fees are not included.\n\nExample: `\"21.00\"`","example":"21.00"},"settle_currency":{"type":"string","minLength":3,"maxLength":3,"nullable":true,"description":"ISO 4217 numeric currency code for `settlement_currency_amount`. To understand what a settlement currency is, see <a href=\"doc:multicurrency-bins\" target=\"_blank\">Multicurrency BINs</a>. 3 digits.\n\nExample: `\"978\"`","example":"978"},"settle_currency_amount":{"type":"string","default":"0.0","description":"Amount of the request in the settlement currency. Upcharges and fees are not included.\n\n\nExample: `\"17.00\"`","example":"17.00"},"billing_currency":{"type":"string","minLength":3,"maxLength":3,"description":"ISO 4217 numeric currency code for `billing_currency_amount`.\n\nExample: `840`","example":840},"billing_currency_amount":{"type":"string","default":"0.0","description":"The amount of the transaction in the billing currency, which is the currency of the card account.\n\nExample: `\"12.40\"`","example":"12.40"},"local_surcharge_amt":{"type":"string","default":"0.0","description":"The surcharge amount in the currency at the point of sale.\n\nExample: `\"0.50\"`","example":"0.50"},"settle_surcharge_amt":{"type":"string","default":"0.0","description":"The surcharge amount in the settlement currency.\n\nExample: `\"0.75\"`","example":"0.75"},"settle_exchange_rate":{"type":"string","description":"The factor used to convert from the local request amount to the settlement amount. The string has the pattern `<shift digit><exchange rate digits>`. The first digit specifies how many places from the right the decimal is moved. For example, `69985022` translates to an exchange rate of 9.985022%.\n\nExample: `\"69985022\"`","example":"69985022"},"exchange_rate":{"type":"string","description":"The factor used to convert from the local request amount to the billing amount. The string has the pattern `<shift digit><exchange rate digits>`. The first digit specifies how many places from the right the decimal is moved. For example, `69985022` translates to an exchange rate of 9.985022%.\n\nExample: `\"65991234\"`","example":"65991234"},"upcharge_amount":{"type":"string","default":"0.0","description":"The upcharge amount, which is included in `trans_amount`.\n\nExample: `\"75.00\"`","example":"75.00"}},"required":["currency","trans_amount","cashback_amount","fee_amount","available_funds","amt_til_limit","upcharge_amount"]},"mcc":{"type":"integer","description":"Merchant category code. This value does not include leading zeros.\n\nExample: `5992`","example":5992},"digital_commerce_data":{"type":"object","description":"_Mastercard only_. Contains data regarding a digital commerce transaction. Derived from DE048SE48.  See <a href=\"doc:auth-api-field-detail#digital-commerce-solutions-indicators\" target=\"_blank\">Digital Commerce Solutions Indicators</a> for more information.\n","properties":{"entity_type_name":{"type":"string","description":"SF3. The check-in entity type and entity name.\n\nExample: `\"202010030220\"`\n","example":"202010030220"},"domain_id":{"type":"string","description":"SF1. The entity responsible for populating the other fields in this object.\n\nExample: `\"01\"`\n","example":"01"},"program_id":{"type":"string","description":"SF2. The specific digital commerce program.\n          \n\nExample: `\"01\"`\n","example":"01"},"checkin_method":{"type":"string","description":"SF4. The methods that a check-in entity applies to validate cardholder presence. **Required** when `program_id: 04`.\n\nExample: `\" \"`\n","example":null}}},"merchant":{"type":"object","properties":{"acquirer_id":{"type":"string","nullable":true,"description":"The acquiring institution ID.\n\nExample: `\"406160\"`","example":"406160"},"terminal_id":{"type":"string","nullable":true,"description":"The ID for the device that acquired the card information.\n\nExample: `\"A1Z23B99\"`","example":"A1Z23B99"},"merchant_id":{"type":"string","nullable":true,"description":"The merchant ID, as assigned by the network.\n\nExample: `\"39AJKEO30634KVN3\"`","example":"39AJKEO30634KVN3"},"merchant_description":{"type":"string","nullable":true,"description":"The merchant description.\n\nExample: `\"123 WIDGETS MERCHANT BEVERLY HILLS CA\"`","example":"123 WIDGETS MERCHANT     BEVERLY HILLSCA"},"merchant_country":{"type":"string","nullable":true,"description":"ISO 3166-1 country code for the country where the merchant is located. 3 digits.\n\nExample: `\"840\"`","example":"840"},"merchant_postal_code":{"type":"string","nullable":true,"description":"Postal code, nine characters. Left-justified and padded with zeros. If there are nine zeros, then no postal code was provided.\n\nExample: `\"902100000\"`","example":"90210"},"merchant_state":{"type":"string","nullable":true,"description":"Two-letter state or provincial designator for the merchant's location.\n\nExample: `\"NV\"`","example":"NV"},"terminal_network":{"type":"string","nullable":true,"description":"Network to which the terminal belongs, Possible values are `VPA` (Visa PLUS Alliance), `Allpoint`, or `None` (another network). If you are not configured to receive this data, the value will always be `None`.\n\n\nExample: `\"VPA\"`","example":"VPA","enum":["Allpoint","VPA","None"]}},"required":["acquirer_id","terminal_id","merchant_id","merchant_description","merchant_country","merchant_postal_code","merchant_state","terminal_network"]},"mti":{"type":"string","description":"Message-type indicator, as defined by ISO 8583. See <a href=\"doc:authorization-controller-api#message-types\" target=\"_blank\">Message types</a> in the _Authorization Controller API_ guide.\n\nExample: `\"0200\"`","example":"0200"},"transaction":{"type":"object","description":"Information about the transaction","properties":{"recurring":{"type":"string","description":"Whether a transaction is recurring: `Y` or `N`.\n\nExample: `\"N\"`","example":"N"},"cardholder_present":{"type":"string","description":"Whether the physical card was present at the point of sale: `Y` or `N`.\n\nExample: `\"Y\"`","example":"Y"},"transaction_initiator_code":{"type":"string","description":"*Mastercard only.* Whether the transaction was initiated by the cardholder or the merchant. Populated only when DE048 subfield 22 is present in the authorization request. See <a href=\"ref:api-reference-cit-and-mit-indicators\" target=\"_blank\">CIT and MIT Indicators</a> for more information.\n\nExample: `\"M101\"`","example":"M101"},"is_advance_payment":{"type":"boolean","description":"_Visa only_. Field 126 SE 13. Whether the transaction is an advance payment, meaning that the merchant secures the payment before the goods or services are available.","example":true}},"required":["recurring","cardholder_present"]},"validation_results":{"type":"object","properties":{"cvv1":{"type":"string","description":"Result of <<glossary:CVV>>1 validation. Possible values:\n* `Y` &mdash; Validated\n* `F` &mdash; Failed\n* `N` &mdash; Not present","enum":["Y","F","N"]},"cvv2":{"type":"string","description":"Result of CVV2 validation. Possible values:\n* `Y` &mdash; Validated\n* `F` &mdash; Failed\n* `N` &mdash; Not present","enum":["Y","F","N"]},"cvv3":{"type":"string","description":"Result of CVV3 validation. Possible values:\n* `Y` &mdash; Validated\n* `F` &mdash; Failed\n* `N` &mdash; Not present","enum":["Y","F","N"]},"pin":{"type":"string","description":"Result of PIN validation. Possible values:\n* `Y` &mdash; Verified\n* `F` &mdash; Failed\n* `L` &mdash; Locked\n* `M` &mdash; PIN not set\n* `B` &mdash; Blocked\n* `N` &mdash; No PIN was passed","enum":["Y","F","L","M","B","N"]},"arqc":{"type":"string","description":"Result of validating the authorization request cryptogram for an EMV chip. Possible values:\n* `Y` &mdash; Validated\n* `F` &mdash; Failed\n* `N` &mdash; Not present","enum":["Y","F","N"]},"offline_pin":{"type":"string","description":"Result of validating the offline PIN. Possible values:\n* `Y` &mdash; Validated\n* `F` &mdash; Failed\n* `N` &mdash; Not present\n* `E` &mdash; Offline PIN attempts exceeded\n* `P` &mdash; Ignored due to risk params","enum":["Y","F","N","E","P"]},"avs_result":{"type":"string","description":"Result of the <<glossary:AVS>> check. See <a href=\"ref:api-reference-avs-codes\" target=\"_blank\">AVS Codes</a> for valid values.\n\nExample: `\"Y\"`","enum":["Y","A","Z","N","M","T","X","S","U","B","C","D","R"]},"aav":{"type":"string","description":"Result of validating the <<glossary:AAV>>/<<glossary:CAVV>>. Possible values:\n* `Y` &mdash; Validated\n* `F` &mdash; Failed\n* `N` &mdash; Not present","enum":["Y","F","N"]}},"required":["cvv1","cvv2","cvv3","pin","arqc","offline_pin","avs_result","aav"]},"avs_data":{"type":"object","description":"When the authorization includes an <<glossary:AVS>> request, this object contains the data that SoFi Tech Solutions used to calculate the AVS response.","properties":{"zip":{"type":"string","description":"Postal code provided by the cardholder.\n\nExample: `\"84121\"`","example":"84121"},"address":{"type":"string","description":"Numbers in the first address line, provided by the cardholder.\n\nExample: `\"1235\"`","example":"1235"}},"required":["zip","address"]},"international":{"type":"boolean","description":"Whether this is <a href=\"doc:international#what-counts-as-a-domestic-transaction\" target=\"_blank\">an international transaction</a>. ","example":true},"response_code":{"type":"string","description":"Authorization response code, which specifies whether a transaction is approved or denied. See the <a href=\"page:authorization-response-codes#account-and-card-status-response-codes\" target=\"_blank\">Authorization Response Codes</a> enumeration for possible values.\n\nExample: `\"05\"`","example":"05"},"auth_id":{"type":"integer","description":"System-generated ID for the authorization. Use this ID to track the transaction throughout the system. For an explanation of how these IDs are generated, see <a href=\"doc:transaction-ids#authorization-identifiers\" target=\"_blank\">Authorization identifiers</a> in the _Transaction IDs_ guide.\n\nExample: `13371854`","example":13371854},"partial_supported":{"type":"boolean","description":"Whether the merchant supports partial authorizations.","example":true},"stip":{"type":"object","description":"This object is present when a <<glossary:STIP>> transaction is processed by the network. See <a href=\"doc:authorization-controller-api#stand-in-processing\" target=\"_blank\">Stand-in processing</a> in the _Authorization Controller API_ guide for more information.","properties":{"detail":{"type":"string","description":"Advice reason code relayed from the network, which provides information on the STIP transaction. See <a href=\"ref:api-reference-advice-reason-codes\" target=\"_blank\">Advice Reason Codes</a> for valid values.\n\nExample: `\"4000000\"` or `\"9020\"`","example":"9020"},"stip_decision":{"type":"string","description":"The <a href=\"ref:api-reference-events-authorization-response-codes\" target=\"_blank\">Authorization Response Code</a> that was returned to the merchant by the STIP process.\n\nExample: `\"00\"`"},"additional_detail":{"type":"string","nullable":true,"description":"More information about the STIP transaction. See <a href=\"ref:api-reference-stip-additional-detail\" target=\"_blank\">STIP Additional Detail</a> for valid values.\n\nExample: `\"000003\"`"},"is_stip_denial":{"type":"string","description":"Whether the transaction was denied by the STIP process: `N` (approved). Denied STIP transactions do not trigger an Auth API message.\n\nExample: `\"N\"`"}}},"incremental_auth":{"type":"boolean","description":"If this authorization is part of an an incremental sequence, this field is `true` and `original_id` contains the `auth_id` of the previous authorization in the sequence. ","example":true},"entry_type":{"type":"string","description":"Method of entering the <<glossary:PAN>>, also known as <<glossary:POS>> entry mode. See <a href=\"ref:api-reference-de022-codes#entry_type-mapping\" target=\"_blank\">DE022 Codes</a> to correlate with the numerical values. Possible values:\n* `Card Not Present` &mdash; Online, mail order or telephone order\n* `Card On File` &mdash; _Mastercard only._ Card number is kept on file\n* `E-Commerce`  &mdash; _Mastercard only._ The card was used on an ecommerce site\n* `EMV Chip` &mdash; The card has an EMV chip that was inserted in an EMV slot\n* `EMV Contactless` &mdash; Contactless transaction with EMV chip card\n* `EMV Fallback` &mdash; Unable to use the EMV chip: fallback to magstripe\n* `Magnetic Stripe` &mdash; The magnetic stripe was read\n* `Contactless` &mdash; Contactless transaction with magstripe card\n* `Manual` &mdash; Manually entered information\n* `Other` &mdash; None of the above","enum":["EMV Chip","EMV Contactless","EMV Fallback","Magnetic Stripe","Contactless","Card Not Present","Manual","Other"]},"pin_entry_capability":{"type":"string","description":"Condition of the PIN pad at the point of sale. See <a href=\"ref:api-reference-de022-codes#position-3\" target=\"_blank\">DE022 Codes</a> to correlate with the numerical values. Possible values:\n* `Capable` &mdash; Terminal has PIN-entry capability\n* `Incapable` &mdash; Terminal has no PIN-entry capability\n* `Inoperative` &mdash; Terminal has PIN-entry capability but it is not working\n* `Other` &mdash; Unknown PIN-entry capability, or not applicable.","enum":["Capable","Incapable","Inoperative","Other"]},"payment_info":{"type":"object","description":"When `transaction_type` is `Payment`, the name of the sender and fund source, if provided in the request.","properties":{"sender_name":{"type":"string","nullable":true,"description":"Name of the sender of the payment.\n\nExample: `\"John Doe\"`.","example":"John Doe"},"fund_source":{"type":"string","nullable":true,"description":"Source of the payment.\n\nExample: `\"Visa Prepaid\"`.","example":"Visa Prepaid"}}},"original_id":{"type":"integer","description":"The `auth_id` of a previous authorization that is linked to this authorization. For reversals or completions, this is the `auth_id` of the authorization that is being reversed or completed. For incremental sequences, this is the `auth_id` of the previous authorization in the sequence.\n\nExample: `13663253`","example":13663253},"risk_score":{"type":"string","description":"The risk score provided by the network. Mastercard range: 0–999, Visa range: 01–99. Higher values indicate higher risk. Product settings determine whether the threshold was exceeded.\n\nExample: `\"23\"`","example":"23"},"token_type":{"type":"string","nullable":true,"description":"If this is a tokenized transaction, its type. Possible values:\n* `Apple Inc`\n* `Google Inc.`\n* `Masterpass`\n* `Merchant`\n* `Microsoft`\n* `Samsung Corporation`\n* `Visa Checkout`","enum":["Apple Inc.","Google Inc.","Masterpass","Merchant","Microsoft","Samsung Corporation","Visa Checkout"]},"rules_denied":{"type":"array","description":"Valid only when using our fraud-rules engine. List of fraud rules that caused a decline. Set the RULAP product parameter to receive these rules.\n\nExample: `[\"hr_crypto:DENY\", \"intl_cnp_ecom:DENY\"]`","items":{"type":"string"}},"rules_warned":{"type":"array","description":"Valid only when using our fraud-rules engine. List of fraud rules that caused a warning. Set the RULAP product parameter to receive these rules.\n\nExample: `[\"dom_cp:WARN\"]`","items":{"type":"string"}},"response_code_list":{"type":"array","description":"List of <a href=\"page:authorization-response-codes#account-and-card-status-response-codes\" target=\"_blank\">response codes</a> that SoFi Tech Solutions has computed. This list does not contain `\"00\"`. May be empty.\n\nExample: `[\"05\", \"51\"]`.","items":{"type":"string","description":"Authorization response code, which specifies whether a transaction is approved or denied. See the <a href=\"page:authorization-response-codes#account-and-card-status-response-codes\" target=\"_blank\">Authorization Response Codes</a> enumeration for possible values.\n\nExample: `\"05\"`","example":"05"}},"bai":{"type":"string","description":"Business application identifier. _Visa only._ See the <a href=\"ref:api-reference-business-application-identifier\" target=\"_blank\">Business Application Identifier</a> enumeration for possible values.\n\nExample: `\"FD\"`","example":"FD"},"risk_code":{"type":"string","description":"_Mastercard only_. Fraud reason code. Indicates the key factors that influenced the value in `risk_score`.\n\nExample: `\"58\"`"},"ecommerce":{"type":"object","description":"This object contains information related to <<glossary:3DS>> authentication, if the website supported 3DS. Included in this information is the result of validating the <<glossary:AAV>> for Mastercard or the <<glossary:CAVV>> for Visa. For detailed information about these fields, refer to <a href=\"doc:3-d-secure-access-control-server#the-ecommerce-object\" target=\"_blank\">The ecommerce object</a> in the _3-D Secure Access Control Server_ guide.","properties":{"is_ecommerce":{"type":"boolean","nullable":true,"description":"Whether the transaction took place on a website that supports 3DS.","example":true},"raw_eci":{"type":"string","description":"The electronic commerce indicator (ECI) that is sent in the authorization request.\n\nExample: `\"212\"`","example":212},"aav_indicator":{"type":"string","description":"Universal Cardholder Authentication Field (UCAF).\n\nExample: `\"kE\"`","example":"kE"},"merchant_asserts_data_protection":{"type":"boolean","nullable":true,"description":"Whether the merchant or acquirer claims that the connection between the ecommerce site and the cardholder was encrypted.","example":true},"merchant_asserts_authentication_attempted":{"type":"boolean","nullable":true,"description":"Whether the merchant or acquirer claims that 3DS authentication was attempted.","example":"None"},"merchant_asserts_authenticated":{"type":"boolean","nullable":true,"description":"Whether the merchant or acquirer claims that the 3DS authentication was successful.","example":false},"merchant_authentication_assertions_validated":{"type":"boolean","nullable":true,"description":"Validation results of the merchant's assertions.","example":true},"cavv_result_code":{"type":"string","description":"_Visa only_. A code that indicates the outcome of CAVV validation. See <a href=\"ref:api-reference-cavv-result-code\" target=\"_blank\">CAVV Result Code</a> for valid values.\n\nExample: `\"B\"`","nullable":true,"example":"B"}},"required":["is_ecommerce"]},"eligible_for_balance_return":{"type":"boolean","description":"Whether the cardholder's balance can be returned. This field is always `true` when `transaction_type: Balance Inquiry`. See <a href=\"doc:authorization-controller-api#balance-inquiry-responses\" target=\"_blank\">Balance-inquiry responses</a> in the _Authorization Controller API_ guide for information on returning balances in the response to this message.","example":true},"emv":{"type":"object","description":"Additional EMV information. Als

# --- truncated at 32 KB (124 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/sofi-technologies/refs/heads/main/openapi/sofi-technologies-auth-api-openapi.json