Lithic Chargeback API
The Chargeback API from Lithic — 4 operation(s) for chargeback.
The Chargeback API from Lithic — 4 operation(s) for chargeback.
openapi: 3.1.0
info:
contact:
email: support@lithic.com
description: 'The Lithic Developer API is designed to provide a predictable programmatic interface for accessing your Lithic account through an API and transaction webhooks.
Note that your API key is a secret and should be treated as such. Don''t share it with anyone, including us. We will never ask you for it.
'
termsOfService: https://lithic.com/legal/terms
license:
name: Apache 2.0
url: https://www.apache.org/licenses/LICENSE-2.0.txt
title: Lithic Developer 3DS Chargeback API
version: 1.0.0
servers:
- description: Sandbox environment that provides key functionality mirroring production
url: https://sandbox.lithic.com
security:
- ApiKeyAuth: []
tags:
- name: Chargeback
paths:
/v1/disputes:
get:
description: List chargeback requests.
operationId: getDisputes
parameters:
- description: Filter by status.
in: query
name: status
required: false
schema:
enum:
- ARBITRATION
- CASE_CLOSED
- CASE_WON
- NEW
- PENDING_CUSTOMER
- PREARBITRATION
- REPRESENTMENT
- SUBMITTED
type: string
- description: Transaction tokens to filter by.
explode: false
in: query
name: transaction_tokens
required: false
schema:
items:
format: uuid
type: string
maxItems: 50
type: array
style: form
- $ref: '#/components/parameters/beginTime'
- $ref: '#/components/parameters/endTime'
- $ref: '#/components/parameters/endingBefore'
- $ref: '#/components/parameters/pageSize'
- $ref: '#/components/parameters/startingAfter'
responses:
'200':
content:
application/json:
schema:
properties:
data:
items:
$ref: '#/components/schemas/dispute-v1'
type: array
has_more:
description: More data exists.
type: boolean
required:
- data
- has_more
type: object
description: OK
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'422':
$ref: '#/components/responses/UnprocessableEntity'
'429':
$ref: '#/components/responses/TooManyRequests'
summary: List chargeback requests
tags:
- Chargeback
post:
description: Request a chargeback.
operationId: postDisputes
requestBody:
content:
application/json:
examples:
initiateDispute:
summary: Request chargeback
value:
amount: 10000
customer_filed_date: '2021-06-28T22:53:15Z'
reason: FRAUD_CARD_PRESENT
transaction_token: 12345624-aa69-4cbc-a946-30d90181b621
schema:
properties:
amount:
description: Amount for chargeback
type: integer
customer_filed_date:
description: Date the customer filed the chargeback request
format: date-time
type: string
customer_note:
description: Customer description
maximum: 5000
type: string
reason:
description: Reason for chargeback
enum:
- ATM_CASH_MISDISPENSE
- CANCELLED
- DUPLICATED
- FRAUD_CARD_NOT_PRESENT
- FRAUD_CARD_PRESENT
- FRAUD_OTHER
- GOODS_SERVICES_NOT_AS_DESCRIBED
- GOODS_SERVICES_NOT_RECEIVED
- INCORRECT_AMOUNT
- MISSING_AUTH
- OTHER
- PROCESSING_ERROR
- RECURRING_TRANSACTION_NOT_CANCELLED
- REFUND_NOT_PROCESSED
type: string
transaction_token:
description: Transaction for chargeback
format: uuid
type: string
required:
- amount
- reason
- transaction_token
type: object
required: true
responses:
'201':
content:
application/json:
schema:
$ref: '#/components/schemas/dispute-v1'
description: OK
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'422':
$ref: '#/components/responses/UnprocessableEntity'
'429':
$ref: '#/components/responses/TooManyRequests'
summary: Request chargeback
tags:
- Chargeback
/v1/disputes/{dispute_token}:
delete:
description: Withdraw chargeback request.
operationId: deleteDisputeByToken
parameters:
- $ref: '#/components/parameters/disputeToken'
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/dispute-v1'
description: OK
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
'429':
$ref: '#/components/responses/TooManyRequests'
summary: Withdraw chargeback request
tags:
- Chargeback
get:
description: Get chargeback request.
operationId: getDisputeByToken
parameters:
- $ref: '#/components/parameters/disputeToken'
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/dispute-v1'
description: OK
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
'429':
$ref: '#/components/responses/TooManyRequests'
summary: Get chargeback request
tags:
- Chargeback
patch:
description: Update chargeback request. Can only be modified if status is `NEW`.
operationId: updateDisputeByToken
parameters:
- $ref: '#/components/parameters/disputeToken'
requestBody:
content:
application/json:
schema:
properties:
amount:
description: Amount for chargeback
type: integer
customer_filed_date:
description: Date the customer filed the chargeback request
format: date-time
type: string
customer_note:
description: Customer description
type: string
reason:
description: Reason for chargeback
enum:
- ATM_CASH_MISDISPENSE
- CANCELLED
- DUPLICATED
- FRAUD_CARD_NOT_PRESENT
- FRAUD_CARD_PRESENT
- FRAUD_OTHER
- GOODS_SERVICES_NOT_AS_DESCRIBED
- GOODS_SERVICES_NOT_RECEIVED
- INCORRECT_AMOUNT
- MISSING_AUTH
- OTHER
- PROCESSING_ERROR
- RECURRING_TRANSACTION_NOT_CANCELLED
- REFUND_NOT_PROCESSED
type: string
type: object
required: true
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/dispute-v1'
description: OK
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
'422':
$ref: '#/components/responses/UnprocessableEntity'
'429':
$ref: '#/components/responses/TooManyRequests'
summary: Update chargeback request
tags:
- Chargeback
/v1/disputes/{dispute_token}/evidences:
get:
description: List evidence for a chargeback request.
operationId: getDisputeEvidences
parameters:
- $ref: '#/components/parameters/beginTime'
- $ref: '#/components/parameters/disputeToken'
- $ref: '#/components/parameters/endTime'
- $ref: '#/components/parameters/endingBefore'
- $ref: '#/components/parameters/pageSize'
- $ref: '#/components/parameters/startingAfter'
responses:
'200':
content:
application/json:
schema:
properties:
data:
items:
$ref: '#/components/schemas/dispute-evidence'
type: array
has_more:
description: More data exists.
type: boolean
required:
- data
- has_more
type: object
description: OK
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
'429':
$ref: '#/components/responses/TooManyRequests'
summary: List evidence
tags:
- Chargeback
post:
description: 'Use this endpoint to upload evidence for a chargeback request. It will return a URL to upload your documents to. The URL will expire in 30 minutes.
Uploaded documents must either be a `jpg`, `png` or `pdf` file, and each must be less than 5 GiB.
'
operationId: postEvidenceDocument
parameters:
- $ref: '#/components/parameters/disputeToken'
requestBody:
content:
application/json:
schema:
properties:
filename:
description: Filename of the evidence.
type: string
type: object
required: false
responses:
'201':
content:
application/json:
schema:
$ref: '#/components/schemas/dispute-evidence'
description: OK
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
'429':
$ref: '#/components/responses/TooManyRequests'
summary: Upload evidence
tags:
- Chargeback
/v1/disputes/{dispute_token}/evidences/{evidence_token}:
delete:
description: Soft delete evidence for a chargeback request. Evidence will not be reviewed or submitted by Lithic after it is withdrawn.
operationId: deleteDisputeEvidenceByToken
parameters:
- $ref: '#/components/parameters/disputeEvidenceToken'
- $ref: '#/components/parameters/disputeToken'
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/dispute-evidence'
description: OK
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
'429':
$ref: '#/components/responses/TooManyRequests'
summary: Delete evidence
tags:
- Chargeback
get:
description: Get evidence for a chargeback request.
operationId: getDisputeEvidenceByToken
parameters:
- $ref: '#/components/parameters/disputeEvidenceToken'
- $ref: '#/components/parameters/disputeToken'
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/dispute-evidence'
description: OK
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
'429':
$ref: '#/components/responses/TooManyRequests'
summary: Get evidence
tags:
- Chargeback
components:
parameters:
startingAfter:
description: A cursor representing an item's token after which a page of results should begin. Used to retrieve the next page of results after this item.
in: query
name: starting_after
required: false
schema:
type: string
endingBefore:
description: A cursor representing an item's token before which a page of results should end. Used to retrieve the previous page of results before this item.
in: query
name: ending_before
required: false
schema:
type: string
disputeEvidenceToken:
examples:
disputeEvidenceExample:
summary: A sample evidence token
value: 73ca53a1-ae89-491a-97d9-f64788f8b2ab
in: path
name: evidence_token
required: true
schema:
format: uuid
type: string
endTime:
description: Date string in RFC 3339 format. Only entries created before the specified time will be included. UTC time zone.
in: query
name: end
schema:
format: date-time
type: string
pageSize:
description: Page size (for pagination).
in: query
name: page_size
schema:
default: 50
maximum: 100
minimum: 1
type: integer
disputeToken:
examples:
disputeTokenExample:
summary: A sample chargeback request token
value: 73ca53a1-ae89-491a-97d9-f64788f8b2ab
in: path
name: dispute_token
required: true
schema:
format: uuid
type: string
beginTime:
description: Date string in RFC 3339 format. Only entries created after the specified time will be included. UTC time zone.
in: query
name: begin
schema:
format: date-time
type: string
schemas:
error:
type: object
properties:
debugging_request_id:
type: string
format: uuid
description: Identifier to help debug an error.
message:
type: string
description: Explanation of error response.
required:
- debugging_request_id
- message
dispute-evidence:
title: Dispute Evidence
description: Dispute evidence.
properties:
created:
description: Timestamp of when dispute evidence was created.
format: date-time
type: string
dispute_token:
description: Dispute token evidence is attached to.
format: uuid
type: string
download_url:
description: URL to download evidence. Only shown when `upload_status` is `UPLOADED`.
type: string
filename:
description: File name of evidence. Recommended to give the dispute evidence a human-readable identifier.
type: string
token:
description: Globally unique identifier.
format: uuid
type: string
upload_status:
description: 'Upload status types:
* `DELETED` - Evidence was deleted.
* `ERROR` - Evidence upload failed.
* `PENDING` - Evidence is pending upload.
* `REJECTED` - Evidence was rejected.
* `UPLOADED` - Evidence was uploaded.
'
enum:
- DELETED
- ERROR
- PENDING
- REJECTED
- UPLOADED
type: string
upload_url:
description: URL to upload evidence. Only shown when `upload_status` is `PENDING`.
type: string
required:
- created
- dispute_token
- token
- upload_status
type: object
dispute-v1:
title: Dispute
description: Dispute.
properties:
amount:
description: Amount under dispute. May be different from the original transaction amount.
type: integer
arbitration_date:
description: Date dispute entered arbitration.
format: date-time
type:
- string
- 'null'
created:
description: Timestamp of when first Dispute was reported.
format: date-time
type: string
customer_filed_date:
description: Date that the dispute was filed by the customer making the dispute.
format: date-time
type:
- string
- 'null'
customer_note:
description: End customer description of the reason for the dispute.
maxLength: 10000
type:
- string
- 'null'
network_claim_ids:
description: Unique identifiers for the dispute from the network.
oneOf:
- type: array
items:
type: string
- type: 'null'
network_filed_date:
description: Date that the dispute was submitted to the network.
format: date-time
type:
- string
- 'null'
network_reason_code:
description: Network reason code used to file the dispute.
type:
- string
- 'null'
prearbitration_date:
description: Date dispute entered pre-arbitration.
format: date-time
type:
- string
- 'null'
primary_claim_id:
description: Unique identifier for the dispute from the network. If there are multiple, this will be the first claim id set by the network
type:
- string
- 'null'
reason:
description: 'Dispute reason:
* `ATM_CASH_MISDISPENSE`: ATM cash misdispense.
* `CANCELLED`: Transaction was cancelled by the customer.
* `DUPLICATED`: The transaction was a duplicate.
* `FRAUD_CARD_NOT_PRESENT`: Fraudulent transaction, card not present.
* `FRAUD_CARD_PRESENT`: Fraudulent transaction, card present.
* `FRAUD_OTHER`: Fraudulent transaction, other types such as questionable merchant activity.
* `GOODS_SERVICES_NOT_AS_DESCRIBED`: The goods or services were not as described.
* `GOODS_SERVICES_NOT_RECEIVED`: The goods or services were not received.
* `INCORRECT_AMOUNT`: The transaction amount was incorrect.
* `MISSING_AUTH`: The transaction was missing authorization.
* `OTHER`: Other reason.
* `PROCESSING_ERROR`: Processing error.
* `REFUND_NOT_PROCESSED`: The refund was not processed.
* `RECURRING_TRANSACTION_NOT_CANCELLED`: The recurring transaction was not cancelled.
'
enum:
- ATM_CASH_MISDISPENSE
- CANCELLED
- DUPLICATED
- FRAUD_CARD_NOT_PRESENT
- FRAUD_CARD_PRESENT
- FRAUD_OTHER
- GOODS_SERVICES_NOT_AS_DESCRIBED
- GOODS_SERVICES_NOT_RECEIVED
- INCORRECT_AMOUNT
- MISSING_AUTH
- OTHER
- PROCESSING_ERROR
- RECURRING_TRANSACTION_NOT_CANCELLED
- REFUND_NOT_PROCESSED
type: string
representment_date:
description: Date the representment was received.
format: date-time
type:
- string
- 'null'
resolution_date:
description: Date that the dispute was resolved.
format: date-time
type:
- string
- 'null'
resolution_note:
description: Note by Dispute team on the case resolution.
maxLength: 10000
type:
- string
- 'null'
resolution_reason:
description: 'Reason for the dispute resolution:
* `CASE_LOST`: This case was lost at final arbitration.
* `NETWORK_REJECTED`: Network rejected.
* `NO_DISPUTE_RIGHTS_3DS`: No dispute rights, 3DS.
* `NO_DISPUTE_RIGHTS_BELOW_THRESHOLD`: No dispute rights, below threshold.
* `NO_DISPUTE_RIGHTS_CONTACTLESS`: No dispute rights, contactless.
* `NO_DISPUTE_RIGHTS_HYBRID`: No dispute rights, hybrid.
* `NO_DISPUTE_RIGHTS_MAX_CHARGEBACKS`: No dispute rights, max chargebacks.
* `NO_DISPUTE_RIGHTS_OTHER`: No dispute rights, other.
* `PAST_FILING_DATE`: Past filing date.
* `PREARBITRATION_REJECTED`: Prearbitration rejected.
* `PROCESSOR_REJECTED_OTHER`: Processor rejected, other.
* `REFUNDED`: Refunded.
* `REFUNDED_AFTER_CHARGEBACK`: Refunded after chargeback.
* `WITHDRAWN`: Withdrawn.
* `WON_ARBITRATION`: Won arbitration.
* `WON_FIRST_CHARGEBACK`: Won first chargeback.
* `WON_PREARBITRATION`: Won prearbitration.
'
enum:
- CASE_LOST
- NETWORK_REJECTED
- NO_DISPUTE_RIGHTS_3DS
- NO_DISPUTE_RIGHTS_BELOW_THRESHOLD
- NO_DISPUTE_RIGHTS_CONTACTLESS
- NO_DISPUTE_RIGHTS_HYBRID
- NO_DISPUTE_RIGHTS_MAX_CHARGEBACKS
- NO_DISPUTE_RIGHTS_OTHER
- PAST_FILING_DATE
- PREARBITRATION_REJECTED
- PROCESSOR_REJECTED_OTHER
- REFUNDED
- REFUNDED_AFTER_CHARGEBACK
- WITHDRAWN
- WON_ARBITRATION
- WON_FIRST_CHARGEBACK
- WON_PREARBITRATION
- null
type:
- string
- 'null'
status:
description: 'Status types:
* `NEW` - New dispute case is opened.
* `PENDING_CUSTOMER` - Lithic is waiting for customer to provide more information.
* `SUBMITTED` - Dispute is submitted to the card network.
* `REPRESENTMENT` - Case has entered second presentment.
* `PREARBITRATION` - Case has entered prearbitration.
* `ARBITRATION` - Case has entered arbitration.
* `CASE_WON` - Case was won and credit will be issued.
* `CASE_CLOSED` - Case was lost or withdrawn.
'
enum:
- ARBITRATION
- CASE_CLOSED
- CASE_WON
- NEW
- PENDING_CUSTOMER
- PREARBITRATION
- REPRESENTMENT
- SUBMITTED
type: string
token:
description: Globally unique identifier.
format: uuid
type: string
transaction_token:
description: The transaction that is being disputed. A transaction can only be disputed once but may have multiple dispute cases.
format: uuid
type: string
required:
- amount
- arbitration_date
- created
- customer_filed_date
- customer_note
- network_claim_ids
- network_filed_date
- network_reason_code
- prearbitration_date
- primary_claim_id
- reason
- representment_date
- resolution_date
- resolution_note
- resolution_reason
- status
- token
- transaction_token
type: object
responses:
TooManyRequests:
content:
application/json:
schema:
$ref: '#/components/schemas/error'
description: 'Client has exceeded the number of allowed requests in a given time period.
| | |
|---|---|
| Rate limited, too many requests per second | User has exceeded their per second rate limit |
| Rate limited, reached daily limit | User has exceeded their daily rate limit |
| Rate limited, too many keys tried | One IP has queried too many different API keys |
'
Unauthorized:
content:
application/json:
schema:
$ref: '#/components/schemas/error'
description: '| | |
|---|---|
| User has not been authenticated | Invalid or missing API key |
| API key is not active | The API key used is no longer active |
| Could not find API key | The API key provided is not associated with any user |
| Please provide API key in Authorization header | The Authorization header is not in the request |
| Please provide API key in the form Authorization: [api-key] | The Authorization header is not formatted properly |
| Insufficient privileges. Issuing API key required | Write access requires an Issuing API key. Reach out at [lithic.com/contact](https://lithic.com/contact) |
| Insufficient privileges to create virtual cards. | Creating virtual cards requires an additional privilege | Reach out at [lithic.com/contact](https://lithic.com/contact) |
'
BadRequest:
content:
application/json:
schema:
$ref: '#/components/schemas/error'
description: A parameter in the query given in the request does not match the valid queries for the endpoint.
NotFound:
content:
application/json:
schema:
$ref: '#/components/schemas/error'
description: The specified resource was not found.
UnprocessableEntity:
content:
application/json:
schema:
$ref: '#/components/schemas/error'
description: Unprocessable entity.
securitySchemes:
ApiKeyAuth:
in: header
name: Authorization
type: apiKey