SoFi Tech Solutions Dispute API 2.0

The previous generation of the dispute surface - 22 operations for creating a case, attaching reasons and transactions, answering the questionnaire and submitting. Superseded by Dispute API 3.0 but still published in the provider api-catalog, with no sunset date and no Deprecation or Sunset header on the wire.

Operations 22

POST /submitCase Submit Case #
POST /getCaseConfirmation Get Case Confirmation #
POST /createCase Create Case #
POST /getCaseReasons Get Case Reasons #
POST /addCaseReasons Add Case Reasons #
POST /getTransactions Get Transactions #
POST /getQuestionnaire Get Questionnaire #
POST /addQuestionnaire Add Questionnaire #
POST /getDocRequirements Get Doc Requirements #
POST /addRequiredDocs Add Required Docs #
POST /addTransactions Add Transactions #
POST /addAttachments Add Attachments #
POST /ping Ping #
POST /getCaseSummary Get Case Summary #
POST /getTransactionsList Get Transactions List #
POST /getSimilarTransactions Get Similar Transactions #
POST /getOtherAccounts Get Other Accounts #
POST /addSimilarTransactions Add Similar Transactions #
POST /getCreditTransactions Get Credit Transactions #
POST /getCaseList Get Case List #
POST /getRequirements Get Requirements #
POST /addDocument Add Document #

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-dispute-api-20"
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-dispute-api-2-0-openapi.json Raw ↑
{"paths":{"/submitCase":{"post":{"summary":"Submit Case","description":"> 👍 Availability\n>\n> No new clients will be set up with Dispute API 2.0. Legacy clients will eventually be migrated to <a href=“doc:api-reference-about-dispute-api-30” target=“_blank”>Dispute API 3.0</a>.\n\nUse the Submit Case endpoint to finalize a dispute case when the account holder presses a \"submit\" button on your user interface.\n\nThis endpoint is part of a conversational API—a series of endpoint calls that must be made in a certain order. For instructions see the <a href=\"doc:creating-an-api-20-dispute\" target=\"_blank\">Creating an API 2.0 Dispute</a> guide.\n\n- **Previous endpoint:** <a href=\"ref:dispute_post_getcasesummary\" target=\"_blank\">Get Case Summary</a>\n- **Next endpoint:** _Optional_. <a href=\"ref:dispute_post_getcaseconfirmation\" target=\"_blank\">Get Case Confirmation</a>","parameters":[],"tags":["Intake Flow"],"requestBody":{"content":{"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"apiLogin":{"type":"string","description":"Provider's web service username, as provided by Galileo for the requesting IP address.\nPattern: Max 50 characters\nExample: `\"AbC123-9999\"`","example":"AbC123-9999"},"apiTransKey":{"type":"string","description":"Web service password, as provided by Galileo for the requesting IP address.\nPattern: Max 15 characters\nExample: `\"4sb62fh6w4h7w34g\"`","example":"4sb62fh6w4h7w34g"},"providerId":{"type":"integer","format":"int32","description":"Galileo-issued unique provider identifier.\nPattern: Max 10 digits\nExample: `9999`","example":9999},"transactionId":{"type":"string","minimum":1,"maximum":60,"description":"A provider-generated ID that is unique to each API call. A UUID is preferred. Do not reuse this identifier for multiple API calls.\nPattern: 60 characters or less\nExample: `\"9845dk-39fdk3fj3-4483483478\"`","example":"9845dk-39fdk3fj3-4483483478"},"caseId":{"type":"string","pattern":"^$|^([0-9]{11}[A-Z]{1})$","description":"Case identifier as returned by <a href=\"ref:dispute_post_createcase\" target=\"_blank\">Create Case</a>.\nPattern: Max 11 digits with a letter\nExample: \"`22021000017C`\"","example":"22021000017C"},"questionnaire":{"type":"string","description":"Array of `identifier`/`answerValue` pairs from the questionnaire returned by <a href=\"ref:dispute_post_getcasesummary\" target=\"_blank\">Get Case Summary</a>. Populate this field with answers about updating the contact date. Do not permit the account holder to update the contact date. Answers about contact information should be passed in `correspondenceDetails`.\nPattern: JSON array\nExample: ` [{\"identifier\": \"<string>\", \"answerValue\": \"<string>\"}, {\"identifier\": \"<string>\", \"answerValue\": \"<string>\"}]`","example":" [\n                                {\n                                    \"identifier\": \"OverrideContactDate\",\n                                    \"answerValue\": \"8/18/23\"\n                                },\n                                {\n                                    \"identifier\": \"IsContactDateOverridden\",\n                                    \"answerValue\": \"True\"\n                                },\n                                {\n                                    \"identifier\": \"ContactDateOverrideReason\",\n                                    \"answerValue\": \"Application error\"\n                                }\n                            ]"},"correspondenceDetails":{"type":"string","description":"Populate this field to change contact information just for this case. This value updates the contact information for this case only, not the account holder's existing record. See <a href=\"ref:api-reference-correspondencedetails-subfields\" target=\"_blank\">`correspondenceDetails` Subfields</a> for valid values.\nPattern: JSON array\nExample: `'{'selectedChannel': 'Email', 'emailAddress': 'test@example.com'}'`","example":"\n            {\n                \"selectedChannel\":\"Mail\",\n                \"address\": {\n                    \"line1\":\"123 Crimson St\",\n                    \"line2\":\"Apt B6\",\n                    \"line3\":\"ATTN: Supervisor\",\n                    \"city\":\"Seattle\",\n                    \"state\":\"WA\",\n                    \"zip\":\"98109-0032\",\n                    \"country\":\"USA\"\n                }\n            }\n            "}},"required":["apiLogin","apiTransKey","caseId","providerId","transactionId"]}}}},"responses":{"default":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer","format":"int32","nullable":true,"description":"The response status code"},"status":{"type":"string","nullable":true,"description":"The condition of a process or response"},"processingTime":{"type":"number","format":"float","nullable":true,"description":"The time elapsed in processing the transaction"},"echo":{"nullable":true,"description":"A structure that contains transaction ID information","type":"object","properties":{"transactionId":{"type":"string","nullable":true,"description":"The `transactionId` that was passed in the API request"}},"required":["transactionId"]},"systemTimestamp":{"type":"string","format":"date-time","nullable":true,"description":"A system generated timestamp"},"rtoken":{"type":"string","nullable":true,"description":"A Galileo-generated ID used for tracking"},"errors":{"type":"array","description":"A list of errors generated while the request was processed","items":{"type":"string"}},"responseData":{"description":"A structure for the response data. This endpoint does not return response data, so it will always be empty.","type":"object","properties":{}}},"required":["echo","processingTime","responseData","rtoken","status","statusCode","systemTimestamp"]},"examples":{"response":{"value":"{\n  \"statusCode\": 0,\n  \"status\": \"Success\",\n  \"processingTime\": 0.081,\n  \"responseData\": {},\n  \"echo\": {\n    \"transactionId\": \"9845dk-39fdk3fj3-4483483478\"\n  },\n  \"rtoken\": \"8cc16de0-5eda-4e2a-968e-3b08fce6f778\",\n  \"systemTimestamp\": \"2020-07-13 10:38:13\"\n}\n"}}}}}},"operationId":"dispute_post_submitcase"}},"/getCaseConfirmation":{"post":{"summary":"Get Case Confirmation","description":"> 👍 Availability\n>\n> No new clients will be set up with Dispute API 2.0. Legacy clients will eventually be migrated to <a href=“doc:api-reference-about-dispute-api-30” target=“_blank”>Dispute API 3.0</a>.\n\nUse the Get Case Confirmation endpoint to retrieve a confirmation number and PDF after the dispute claim has been submitted.\n\nThis endpoint is part of a conversational API—a series of endpoint calls that must be made in a certain order. For instructions see the <a href=\"doc:creating-an-api-20-dispute\" target=\"_blank\">Creating an API 2.0 Dispute</a> guide.\n\n- **Previous endpoint:** <a href=\"ref:dispute_post_submitcase\" target=\"_blank\">Submit Case</a>","parameters":[],"tags":["Dispute Management"],"requestBody":{"content":{"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"apiLogin":{"type":"string","description":"Provider's web service username, as provided by Galileo for the requesting IP address.\nPattern: Max 50 characters\nExample: `\"AbC123-9999\"`","example":"AbC123-9999"},"apiTransKey":{"type":"string","description":"Web service password, as provided by Galileo for the requesting IP address.\nPattern: Max 15 characters\nExample: `\"4sb62fh6w4h7w34g\"`","example":"4sb62fh6w4h7w34g"},"providerId":{"type":"integer","format":"int32","description":"Galileo-issued unique provider identifier.\nPattern: Max 10 digits\nExample: `9999`","example":9999},"transactionId":{"type":"string","minimum":1,"maximum":60,"description":"A provider-generated ID that is unique to each API call. A UUID is preferred. Do not reuse this identifier for multiple API calls.\nPattern: 60 characters or less\nExample: `\"9845dk-39fdk3fj3-4483483478\"`","example":"9845dk-39fdk3fj3-4483483478"},"caseId":{"type":"string","pattern":"^$|^([0-9]{11}[A-Z]{1})$","description":"Case identifier as returned by <a href=\"ref:dispute_post_createcase\" target=\"_blank\">Create Case</a>.\nPattern: Max 11 digits with a letter\nExample: \"`22021000017C`\"","example":"22021000017C"}},"required":["apiLogin","apiTransKey","caseId","providerId","transactionId"]}}}},"responses":{"default":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer","format":"int32","nullable":true,"description":"The response status code"},"status":{"type":"string","nullable":true,"description":"The condition of a process or response"},"processingTime":{"type":"number","format":"float","nullable":true,"description":"The time elapsed in processing the transaction"},"echo":{"nullable":true,"description":"A structure that contains transaction ID information","type":"object","properties":{"transactionId":{"type":"string","nullable":true,"description":"The `transactionId` that was passed in the API request"}},"required":["transactionId"]},"systemTimestamp":{"type":"string","format":"date-time","nullable":true,"description":"A system generated timestamp"},"rtoken":{"type":"string","nullable":true,"description":"A Galileo-generated ID used for tracking"},"errors":{"type":"array","description":"A list of errors generated while the request was processed","items":{"type":"string"}},"responseData":{"nullable":true,"description":"A structure for the response data. It can be empty but usually will contain information.","type":"object","properties":{"confirmationDocumentName":{"type":"string","description":"Filename of the PDF"},"confirmationHeader":{"type":"string","description":"Confirmation header"},"confirmationMessageMarkup":{"type":"string","description":"A base64-encoded HTML page that displays the confirmation"},"confirmationDocumentStream":{"type":"string","description":"A base64-encoded PDF that contains the confirmation."}},"required":["confirmationDocumentName","confirmationDocumentStream","confirmationHeader","confirmationMessageMarkup"]}},"required":["echo","processingTime","responseData","rtoken","status","statusCode","systemTimestamp"]},"examples":{"response":{"value":"{\n  \"statusCode\": 0,\n  \"status\": \"Success\",\n  \"processingTime\": 0.081,\n  \"responseData\": {\n    \"confirmationDocumentStream\": \"JVBERi0xLjQKJcfl9OXwCjEgMCBvYmoKPDwKL0ZpbHRlciAvUVPRgo=\",\n    \"confirmationMessageMarkup\": \"PHRhYmxlIGNsYXNzPSJxdm9Cb2R5Q29udGVudCI+PHRyPjx0ZD4gPCEtLXF2b0JvZHlDb250ZW50=\",\n    \"confirmationHeader\": \"Confirmation #: 2108240024C\",\n    \"confirmationDocumentName\": \"Confirmation.pdf\"\n  },\n  \"echo\": {\n    \"transactionId\": \"9845dk-39fdk3fj3-4483483478\"\n  },\n  \"rtoken\": \"8cc16de0-5eda-4e2a-968e-3b08fce6f778\",\n  \"systemTimestamp\": \"2020-07-13 10:38:13\"\n}\n"}}}}}},"operationId":"dispute_post_getcaseconfirmation"}},"/createCase":{"post":{"summary":"Create Case","description":"> 👍 Availability\n>\n> No new clients will be set up with Dispute API 2.0. Legacy clients will eventually be migrated to <a href=\"doc:api-reference-about-dispute-api-30\" target=\"_blank\">Dispute API 3.0</a>.\n\nUse the Create Case endpoint to initiate a dispute claim. A single claim may contain multiple disputed transactions. Call this endpoint when the account holder initiates a claim by clicking a \"dispute a transaction\" control on your interface.\n\nThis endpoint returns a case number (`caseId`) that you pass with all subsequent endpoint calls that are related to this dispute.\n\nThis endpoint is part of a conversational API—a series of endpoint calls that must be made in a certain order. For instructions see the <a href=\"doc:creating-an-api-20-dispute\" target=\"_blank\">Creating an API 2.0 Dispute</a> guide.\n\n- **Next endpoint:** <a href=\"ref:dispute_post_getcasereasons\" target=\"_blank\">Get Case Reasons</a>","parameters":[],"tags":["Intake Flow"],"requestBody":{"content":{"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"apiLogin":{"type":"string","description":"Provider's web service username, as provided by Galileo for the requesting IP address.\nPattern: Max 50 characters\nExample: `\"AbC123-9999\"`","example":"AbC123-9999"},"apiTransKey":{"type":"string","description":"Web service password, as provided by Galileo for the requesting IP address.\nPattern: Max 15 characters\nExample: `\"4sb62fh6w4h7w34g\"`","example":"4sb62fh6w4h7w34g"},"providerId":{"type":"integer","format":"int32","description":"Galileo-issued unique provider identifier.\nPattern: Max 10 digits\nExample: `9999`","example":9999},"transactionId":{"type":"string","minimum":1,"maximum":60,"description":"A provider-generated ID that is unique to each API call. A UUID is preferred. Do not reuse this identifier for multiple API calls.\nPattern: 60 characters or less\nExample: `\"9845dk-39fdk3fj3-4483483478\"`","example":"9845dk-39fdk3fj3-4483483478"},"accountNo":{"type":"string","pattern":"^$|^([0-9]{12}|[0-9]{16})$","description":"The <<glossary:PRN>> or <<glossary:PAN>> of the account. If more than one card is associated with the PRN, use the PAN.\nPattern: PAN or PRN\nExample: `\"074103447228\"`","example":"074103447228"}},"required":["accountNo","apiLogin","apiTransKey","providerId","transactionId"]}}}},"responses":{"default":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer","format":"int32","nullable":true,"description":"The response status code"},"status":{"type":"string","nullable":true,"description":"The condition of a process or response"},"processingTime":{"type":"number","format":"float","nullable":true,"description":"The time elapsed in processing the transaction"},"echo":{"nullable":true,"description":"A structure that contains transaction ID information","type":"object","properties":{"transactionId":{"type":"string","nullable":true,"description":"The `transactionId` that was passed in the API request"}},"required":["transactionId"]},"systemTimestamp":{"type":"string","format":"date-time","nullable":true,"description":"A system generated timestamp"},"rtoken":{"type":"string","nullable":true,"description":"A Galileo-generated ID used for tracking"},"errors":{"type":"array","description":"A list of errors generated while the request was processed","items":{"type":"string"}},"responseData":{"nullable":true,"description":"A structure for the response data. It can be empty but usually will contain information.","type":"object","properties":{"caseId":{"type":"string","description":"The case identifier that you will use in all subsequent calls for the dispute that you initiated with this call. This number is unique across Galileo."}},"required":["caseId"]}},"required":["echo","processingTime","responseData","rtoken","status","statusCode","systemTimestamp"]},"examples":{"response":{"value":"{\n  \"statusCode\": 0,\n  \"status\": \"Success\",\n  \"processingTime\": 0.081,\n  \"responseData\": {\n     \"caseId\":\"12345678\"\n  },\n  \"echo\": {\n    \"transactionId\": \"9845dk-39fdk3fj3-4483483478\"\n  },\n  \"rtoken\": \"8cc16de0-5eda-4e2a-968e-3b08fce6f778\",\n  \"systemTimestamp\": \"2020-07-13 10:38:13\"\n}\n"}}}}}},"operationId":"dispute_post_createcase"}},"/getCaseReasons":{"post":{"summary":"Get Case Reasons","description":"> 👍 Availability\n>\n> No new clients will be set up with Dispute API 2.0. Legacy clients will eventually be migrated to <a href=“doc:api-reference-about-dispute-api-30” target=“_blank”>Dispute API 3.0</a>.\n\nUse the Get Case Reasons endpoint to retrieve the case reasons, which are questions and answers that you display to the account holder during the creation of a dispute case. The answers to these questions classify the type of dispute and provide a reason for the dispute. The case reasons are radio buttons so that the account holder can select only one option.\n\nThis endpoint is part of a conversational API—a series of endpoint calls that must be made in a certain order. For instructions see the <a href=\"doc:creating-an-api-20-dispute\" target=\"_blank\">Creating an API 2.0 Dispute</a> guide.\n\n- **Previous endpoint:** <a href=\"ref:dispute_post_createcase\" target=\"_blank\">Create Case</a>\n- **Next endpoint:** <a href=\"ref:dispute_post_addcasereasons\" target=\"_blank\">Add Case Reasons</a>","parameters":[],"tags":["Intake Flow"],"requestBody":{"content":{"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"apiLogin":{"type":"string","description":"Provider's web service username, as provided by Galileo for the requesting IP address.\nPattern: Max 50 characters\nExample: `\"AbC123-9999\"`","example":"AbC123-9999"},"apiTransKey":{"type":"string","description":"Web service password, as provided by Galileo for the requesting IP address.\nPattern: Max 15 characters\nExample: `\"4sb62fh6w4h7w34g\"`","example":"4sb62fh6w4h7w34g"},"providerId":{"type":"integer","format":"int32","description":"Galileo-issued unique provider identifier.\nPattern: Max 10 digits\nExample: `9999`","example":9999},"transactionId":{"type":"string","minimum":1,"maximum":60,"description":"A provider-generated ID that is unique to each API call. A UUID is preferred. Do not reuse this identifier for multiple API calls.\nPattern: 60 characters or less\nExample: `\"9845dk-39fdk3fj3-4483483478\"`","example":"9845dk-39fdk3fj3-4483483478"},"caseId":{"type":"string","pattern":"^$|^([0-9]{11}[A-Z]{1})$","description":"Case identifier as returned by <a href=\"ref:dispute_post_createcase\" target=\"_blank\">Create Case</a>.\nPattern: Max 11 digits with a letter\nExample: \"`22021000017C`\"","example":"22021000017C"}},"required":["apiLogin","apiTransKey","caseId","providerId","transactionId"]}}}},"responses":{"default":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer","format":"int32","nullable":true,"description":"The response status code"},"status":{"type":"string","nullable":true,"description":"The condition of a process or response"},"processingTime":{"type":"number","format":"float","nullable":true,"description":"The time elapsed in processing the transaction"},"echo":{"nullable":true,"description":"A structure that contains transaction ID information","type":"object","properties":{"transactionId":{"type":"string","nullable":true,"description":"The `transactionId` that was passed in the API request"}},"required":["transactionId"]},"systemTimestamp":{"type":"string","format":"date-time","nullable":true,"description":"A system generated timestamp"},"rtoken":{"type":"string","nullable":true,"description":"A Galileo-generated ID used for tracking"},"errors":{"type":"array","description":"A list of errors generated while the request was processed","items":{"type":"string"}},"responseData":{"nullable":true,"description":"A structure for the response data. It can be empty but usually will contain information.","type":"object","properties":{"questionList":{"type":"object","properties":{"questionList":{"type":"array","description":"List of questions to present","items":{"type":"object","properties":{"identifier":{"type":"string","description":"Tag for the question"},"format":{"type":"string","enum":["Caption","Default","Internal","Notification","Warning"],"description":"Metadata describing the question format. It can be used to optionally provide different visual treatment"},"dataType":{"type":"string","description":"Data type for the question"},"answerList":{"type":"array","description":"List of answers for a question","items":{"type":"object","properties":{"identifier":{"type":"string","description":"Tag for the answer"},"questionList":{"type":"array","description":"List of questions to present","items":{"type":"object","properties":{}}},"displayText":{"type":"string","description":"Text to display of the question or answer"}},"required":["displayText","identifier"]}},"isOptional":{"type":"boolean","description":"Is this question an optional?"},"selectedAnswer":{"type":"string","description":"The selected answer to this question. This could be a default for an initially loaded questionnaire or a persisted previous answer."},"type":{"type":"string","enum":["YesNo","Date","DateTime","Text","TextMulti","Dropdown","AutoComplete","RadioButtons","Checkboxes","MultiSelect","Decimal","Integer","Currency","RichText","Nothing","Section","Questionnaire"],"description":"Type of question"},"apiDocumentationList":{"type":"array","description":"This is returned for questions of type Section. It contains the implementation details to provide the answer to the questions.","items":{"type":"object","properties":{"implementationNotes":{"type":"string","description":"Description of the connector."},"method":{"type":"string","description":"Method for REST connector (always 'post')."},"endpoint":{"type":"string","description":"REST connector endpoint suffix."}},"required":["endpoint","implementationNotes"]}},"displayText":{"type":"string","description":"Text of the question to display"}},"required":["answerList","dataType","displayText","identifier","type"]}}},"required":["questionList"]}}}},"required":["echo","processingTime","responseData","rtoken","status","statusCode","systemTimestamp"]},"examples":{"response":{"value":"{\n  \"statusCode\": 0,\n  \"status\": \"Success\",\n  \"processingTime\": 24.609,\n  \"responseData\": {\n    \"questionList\": [\n      {\n        \"type\": \"RadioButtons\",\n        \"identifier\": \"ClaimReasonType\",\n        \"displayText\": \"Which of the following would you like to report?\",\n        \"dataType\": \"String\",\n        \"answerList\": [\n          {\n            \"questionList\": [\n              {\n                \"type\": \"RadioButtons\",\n                \"identifier\": \"ClaimReason\",\n                \"displayText\": \"Which of the following best describes the reason for your dispute?\",\n                \"dataType\": \"String\",\n                \"answerList\": [\n                  {\n                    \"identifier\": \"MerchantDuplicate\",\n                    \"displayText\": \"I was charged more than once.\"\n                  },\n                  {\n                    \"identifier\": \"MerchantNotProvided\",\n                    \"displayText\": \"I haven't received merchandise or a service I purchased.\"\n                  },\n                  {\n                    \"identifier\": \"MerchantCreditNotIssued\",\n                    \"displayText\": \"I cancelled or returned the merchandise or service and have not received the expected credit.\"\n                  },\n                  {\n                    \"identifier\": \"MerchantRecurring\",\n                    \"displayText\": \"I have an issue with a recurring transaction on my account.\"\n                  },\n                  {\n                    \"identifier\": \"MerchandiseServiceIssue\",\n                    \"displayText\": \"I am dissatisfied with the merchandise or a service I received.\"\n                  },\n                  {\n                    \"identifier\": \"ChargedCreditedIncorrect\",\n                    \"displayText\": \"I was charged or credited incorrectly.\"\n                  }\n                ]\n              }\n            ],\n            \"identifier\": \"NonFraud\",\n            \"displayText\": \"I made this purchase, but there is a problem and I need to dispute it.\"\n          },\n          {\n            \"questionList\": [\n              {\n                \"type\": \"RadioButtons\",\n                \"identifier\": \"ClaimReason\",\n                \"displayText\": \"Which of the following best describes the reason for your dispute?\",\n                \"dataType\": \"String\",\n                \"answerList\": [\n                  {\n                    \"identifier\": \"CardLost\",\n                    \"displayText\": \"I lost my card.\"\n                  },\n                  {\n                    \"identifier\": \"CardStolen\",\n                    \"displayText\": \"My card was stolen.\"\n                  },\n                  {\n                    \"identifier\": \"CardNotReceived\",\n                    \"displayText\": \"I did not receive my card.\"\n                  },\n                  {\n                    \"identifier\": \"CardSecure\",\n                    \"displayText\": \"I didn't make the purchase, but I still have my card.\"\n                  }\n                ]\n              }\n            ],\n            \"identifier\": \"Fraud\",\n            \"displayText\": \"I did not authorize this transaction. I suspect fraud.\"\n          },\n          {\n            \"questionList\": [\n              {\n                \"type\": \"RadioButtons\",\n                \"identifier\": \"ClaimReason\",\n                \"displayText\": \"Tell us about the reason behind the dispute.\",\n                \"dataType\": \"String\",\n                \"answerList\": [\n                  {\n                    \"identifier\": \"ATMPar\",\n                    \"displayText\": \"I did not receive cash or received partial cash at an ATM.\"\n                  }\n                ]\n              }\n            ],\n            \"identifier\": \"NonFraudATM\",\n            \"displayText\": \"I had an issue while using my card at an ATM.\"\n          },\n          {\n            \"identifier\": \"AuthChargeback\",\n            \"displayText\": \"There is an authorization issue.\"\n          }\n        ]\n      }\n    ]\n  },\n  \"echo\": {\n    \"transactionId\": \"fa93a690-0b4a-4039-8437-fac9ffc1cbaa\"\n  },\n  \"systemTimestamp\": \"2022-04-14 14:52:55\",\n  \"rtoken\": \"3f6fa179-c510-4214-b96b-8f0a03d0912c\"\n}\n"}}}}}},"operationId":"dispute_post_getcasereasons"}},"/addCaseReasons":{"post":{"summary":"Add Case Reasons","description":"> 👍 Availability\n>\n> No new clients will be set up with Dispute API 2.0. Legacy clients will eventually be migrated to <a href=“doc:api-reference-about-dispute-api-30” target=“_blank”>Dispute API 3.0</a>.\n\nUse the Add Case Reasons endpoint to submit the account holder's answers to the case-reason questions while creating a dispute claim.\n\nThis endpoint is part of a conversational API—a series of endpoint calls that must be made in a certain order. For instructions see the <a href=\"doc:creating-an-api-20-dispute\" target=\"_blank\">Creating an API 2.0 Dispute</a> guide.\n\n- **Previous endpoint:** <a href=\"ref:dispute_post_getcasereasons\" target=\"_blank\">Get Case Reasons</a>\n- **Next endpoint:** <a href=\"ref:dispute_post_gettransactions\" target=\"_blank\">Get Transactions</a>","parameters":[],"tags":["Intake Flow"],"requestBody":{"content":{"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"apiLogin":{"type":"string","description":"Provider's web service username, as provided by Galileo for the requesting IP address.\nPattern: Max 50 characters\nExample: `\"AbC123-9999\"`","example":"AbC123-9999"},"apiTransKey":{"type":"string","description":"Web service password, as provided by Galileo for the requesting IP address.\nPattern: Max 15 characters\nExample: `\"4sb62fh6w4h7w34g\"`","example":"4sb62fh6w4h7w34g"},"providerId":{"type":"integer","format":"int32","description":"Galileo-issued unique provider identifier.\nPattern: Max 10 digits\nExample: `9999`","example":9999},"transactionId":{"type":"string","minimum":1,"maximum":60,"description":"A provider-generated ID that is unique to each API call. A UUID is preferred. Do not reuse this identifier for multiple API calls.\nPattern: 60 characters or less\nExample: `\"9845dk-39fdk3fj3-4483483478\"`","example":"9845dk-39fdk3fj3-4483483478"},"caseId":{"type":"string","pattern":"^$|^([0-9]{11}[A-Z]{1})$","description":"Case identifier as returned by <a href=\"ref:dispute_post_createcase\" target=\"_blank\">Create Case</a>.\nPattern: Max 11 digits with a letter\nExample: \"`22021000017C`\"","example":"22021000017C"},"questionnaire":{"type":"string","description":"Array of `identifier`/`answerValue` pairs.\nPattern: JSON array\nExample: `[{\"identifier\": \"<text>\", \"answerValue\": \"<text>\"}]`","example":"[\n                            {\n                                \"Identifier\": \"ClaimTransType\",\n                                \"AnswerValue\": \"true\"\n                            },\n                            {\n                                \"Identifier\": \"ClaimReasonType\",\n                                \"AnswerValue\": \"Fraud\"\n                            },\n                            {\n                                \"Identifier\": \"ClaimReason\",\n                                \"AnswerValue\": \"CardSecure\"\n                            }\n                        ]"}},"required":["apiLogin","apiTransKey","caseId","providerId","transactionId"]}}}},"responses":{"default":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer","format":"int32","nullable":true,"description":"The response status code"},"status":{"type":"string","nullable":true,"description":"The condition of a process or response"},"processingTime":{"type":"number","format":"float","nullable":true,"description":"The time elapsed in processing the transaction"},"echo":{"nullable":true,"description":"A structure that contains transaction ID information","type":"object","properties":{"transactionId":{"type":"string","nullable":true,"description":"The `transactionId` that was passed in the API request"}},"required":["transactionId"]},"systemTimestamp":{"type":"string","format":"date-time","nullable":true,"description":"A system generated timestamp"},"rtoken":{"type":"string","nullable":true,"description":"A Galileo-generated ID used for tracking"},"errors":{"type":"array","description":"A list of errors generated while the request was processed","items":{"type":"string"}},"responseData":{"description":"A structure for the response data. This endpoint does not return response data, so it will always be empty.","type":"object","properties":{}}},"required":["echo","processingTime","responseData","rtoken","status","statusCode","systemTimestamp"]},"examples":{"response":{"value":"{\n  \"statusCode\": 0,\n  \"status\": \"Success\",\n  \"processingTime\": 0.081,\n  \"responseData\": {},\n  \"echo\": {\n    \"transactionId\": \"9845dk-39fdk3fj3-4483483478\"\n  },\n  \"rtoken\": \"8cc16de0-5eda-4e2a-968e-3b08fce6f778\",\n  \"systemTimestamp\": \"2020-07-13 10:38:13\"\n}\n"}}}}}},"operationId":"dispute_post_addcasereasons"}},"/getTransactions":{"post":{"summary":"Get Transactions","description":"> 👍 Availability\n>\n> No new clients will be set up with Dispute API 2.0. Legacy clients will eventually be migrated to <a href=“doc:api-reference-about-dispute-api-30” target=“_blank”>Dispute API 3.0</a>.\n\nUse the Get Transactions endpoint to retrieve the account holder transactions that are eligible to be disputed. You can filter the results by start date, end date, amount, and merchant name.\n\nThis endpoint is part of a conversational API—a series of endpoint calls that must be made in a certain order. For instructions see the <a href=\"doc:creating-an-api-20-dispute\" target=\"_blank\">Creating an API 2.0 Dispute</a> guide.\n\n- **Previous endpoint:** <a href=\"ref:dispute_post_addcasereasons\" target=\"_blank\">Add Case Reasons</a>\n- **Next endpoint:** <a href=\"ref:dispute_post_addtransactions\" target=\"_blank\">Add Transactions</a>","parameters":[],"tags":["Intake Flow"],"requestBody":{"content":{"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"apiLogin":{"type":"string","description":"Provider's web service username, as provided by Galileo for the requesting IP address.\nPattern: Max 50 characters\nExample: `\"AbC123-9999\"`","example":"AbC123-9999"},"apiTransKey":{"type":"string","description":"Web service password, as provided by Galileo for the requesting IP address.\nPattern: Max 15 characters\nExample: `\"4sb62fh6w4h7w34g\"`","example":"4sb62fh6w4h7w34g"},"providerId":{"type":"integer","format":"int32","description":"Galileo-issued unique provider identifier.\nPattern: Max 10 digits\nExample: `9999`","example":9999},"transactionId":{"type":"string","minimum":1,"maximum":60,"description":"A provider-generated ID that is unique to each API call. A UUID is preferred. Do not reuse this identifier for multiple API calls.\nPattern: 60 characters or less\nExample: `\"9845dk-39fdk3fj3-4483483478\"`","example":"9845dk-39f

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