If unauthorized activity occurs on a card, you can create a Card Dispute and we’ll work with the card networks to return the funds if appropriate.
{
"amount": 1000,
"card_id": "card_oubs0hwk5rn6knuecxg2",
"created_at": "2020-01-31T23:59:59Z",
"disputed_transaction_id": "transaction_uyrp7fld2ium70oa7oi",
"id": "card_dispute_h9sc95nbl1cgltpp7men",
"idempotency_key": null,
"loss": null,
"network": "visa",
"rejection": null,
"status": "pending_response",
"type": "card_dispute",
"user_submission_required_by": null,
"visa": {
"network_events": [],
"required_user_submission_category": null,
"user_submissions": [
{
"accepted_at": null,
"amount": 1000,
"attachment_files": [],
"category": "chargeback",
"chargeback": {
"authorization": null,
"category": "fraud",
"consumer_canceled_merchandise": null,
"consumer_canceled_recurring_transaction": null,
"consumer_canceled_services": null,
"consumer_counterfeit_merchandise": null,
"consumer_credit_not_processed": null,
"consumer_damaged_or_defective_merchandise": null,
"consumer_merchandise_misrepresentation": null,
"consumer_merchandise_not_as_described": null,
"consumer_merchandise_not_received": null,
"consumer_non_receipt_of_cash": null,
"consumer_original_credit_transaction_not_accepted": null,
"consumer_quality_merchandise": null,
"consumer_quality_services": null,
"consumer_services_misrepresentation": null,
"consumer_services_not_as_described": null,
"consumer_services_not_received": null,
"fraud": {
"fraud_type": "lost"
},
"processing_error": null
},
"created_at": "2020-01-31T23:59:59Z",
"explanation": null,
"further_information_requested_at": null,
"further_information_requested_reason": null,
"status": "pending_reviewing",
"updated_at": "2020-01-31T23:59:59Z"
}
]
},
"win": null,
"withdrawal": null
}The amount of the dispute.
The Card that the Card Dispute is associated with.
The ISO 8601 date and time at which the Card Dispute was created.
The identifier of the Transaction that was disputed.
The Card Dispute identifier.
The idempotency key you chose for this object. This value is unique across Increase and is used to ensure that a request is only processed once. Learn more about idempotency.
If the Card Dispute’s status is lost, this will contain details of the lost dispute.
The network that the Card Dispute is associated with.
If the Card Dispute has been rejected, this will contain details of the rejection.
The status of the Card Dispute.
A constant representing the object’s type. For this resource it will always be card_dispute.
The ISO 8601 date and time at which the user submission is required by. Present only if status is user_submission_required and a user submission is required by a certain time. Otherwise, this will be nil.
Card Dispute information for card payments processed over Visa’s network. This field will be present in the JSON response if and only if network is equal to visa.
If the Card Dispute’s status is won, this will contain details of the won dispute.
If the Card Dispute has been withdrawn, this will contain details of the withdrawal.
curl \
--url "${INCREASE_URL}/card_disputes" \
-H "Authorization: Bearer ${INCREASE_API_KEY}"import Increase from 'increase';
const client = new Increase({
apiKey: process.env['INCREASE_API_KEY'], // This is the default and can be omitted
});
// Automatically fetches more pages as needed.
for await (const cardDispute of client.cardDisputes.list()) {
console.log(cardDispute.id);
}import os
from increase import Increase
client = Increase(
api_key=os.environ.get("INCREASE_API_KEY"), # This is the default and can be omitted
)
page = client.card_disputes.list()
page = page.data[0]
print(page.id)require "increase"
increase = Increase::Client.new(
api_key: ENV["INCREASE_API_KEY"] # This is the default and can be omitted
)
page = increase.card_disputes.list
puts(page)package main
import (
"context"
"fmt"
"os"
"github.com/Increase/increase-go"
"github.com/Increase/increase-go/option"
)
func main() {
client := increase.NewClient(
option.WithAPIKey(os.Getenv("INCREASE_API_KEY")), // This is the default and can be omitted
)
page, err := client.CardDisputes.List(context.TODO(), increase.CardDisputeListParams{})
if err != nil {
panic(err.Error())
}
fmt.Printf("%+v\n", page)
}
package com.increase.api.example;
import com.increase.api.client.IncreaseClient;
import com.increase.api.client.okhttp.IncreaseOkHttpClient;
import com.increase.api.models.carddisputes.CardDisputeListPage;
import com.increase.api.models.carddisputes.CardDisputeListParams;
public final class Main {
private Main() {}
public static void main(String[] args) {
IncreaseClient client = IncreaseOkHttpClient.fromEnv();
CardDisputeListPage page = client.cardDisputes().list();
}
}package com.increase.api.example
import com.increase.api.client.IncreaseClient
import com.increase.api.client.okhttp.IncreaseOkHttpClient
import com.increase.api.models.carddisputes.CardDisputeListPage
import com.increase.api.models.carddisputes.CardDisputeListParams
fun main() {
val client: IncreaseClient = IncreaseOkHttpClient.fromEnv()
val page: CardDisputeListPage = client.cardDisputes().list()
}<?php
require_once dirname(__DIR__) . '/vendor/autoload.php';
use Increase\Client;
use Increase\Core\Exceptions\APIException;
$client = new Client(apiKey: getenv('INCREASE_API_KEY'));
try {
$page = $client->cardDisputes->list(
createdAt: [
'after' => new \DateTimeImmutable('2019-12-27T18:11:19.117Z'),
'before' => new \DateTimeImmutable('2019-12-27T18:11:19.117Z'),
'onOrAfter' => new \DateTimeImmutable('2019-12-27T18:11:19.117Z'),
'onOrBefore' => new \DateTimeImmutable('2019-12-27T18:11:19.117Z'),
],
cursor: 'cursor',
idempotencyKey: 'x',
limit: 1,
status: ['in' => ['user_submission_required']],
);
var_dump($page);
} catch (APIException $e) {
echo $e->getMessage();
}using System;
using Increase.Api;
using Increase.Api.Models.CardDisputes;
IncreaseClient client = new();
CardDisputeListParams parameters = new();
var page = await client.CardDisputes.List(parameters);
await foreach (var item in page.Paginate())
{
Console.WriteLine(item);
}{
"data": [
{ /* Card Dispute object */ },
{ /* Card Dispute object */ }
/* ... */
],
"next_cursor": "v57w5d",
}Filter Card Disputes for those with the specified status or statuses. For GET requests, this should be encoded as a comma-delimited string, such as ?in=one,two,three.
Filter records to the one with the specified idempotency_key you chose for that object. This value is unique across Increase and is used to ensure that a request is only processed once. Learn more about idempotency.
curl -X "POST" \
--url "${INCREASE_URL}/card_disputes" \
-H "Authorization: Bearer ${INCREASE_API_KEY}" \
-H "Content-Type: application/json" \
-d $'{
"amount": 100,
"disputed_transaction_id": "transaction_uyrp7fld2ium70oa7oi",
"network": "visa",
"visa": {
"category": "fraud",
"fraud": {
"fraud_type": "account_or_credentials_takeover"
}
}
}'import Increase from 'increase';
const client = new Increase({
apiKey: process.env['INCREASE_API_KEY'], // This is the default and can be omitted
});
const cardDispute = await client.cardDisputes.create({
disputed_transaction_id: 'transaction_uyrp7fld2ium70oa7oi',
network: 'visa',
});
console.log(cardDispute.id);import os
from increase import Increase
client = Increase(
api_key=os.environ.get("INCREASE_API_KEY"), # This is the default and can be omitted
)
card_dispute = client.card_disputes.create(
disputed_transaction_id="transaction_uyrp7fld2ium70oa7oi",
network="visa",
)
print(card_dispute.id)require "increase"
increase = Increase::Client.new(
api_key: ENV["INCREASE_API_KEY"] # This is the default and can be omitted
)
card_dispute = increase.card_disputes.create(disputed_transaction_id: "transaction_uyrp7fld2ium70oa7oi", network: :visa)
puts(card_dispute)package main
import (
"context"
"fmt"
"os"
"github.com/Increase/increase-go"
"github.com/Increase/increase-go/option"
)
func main() {
client := increase.NewClient(
option.WithAPIKey(os.Getenv("INCREASE_API_KEY")), // This is the default and can be omitted
)
cardDispute, err := client.CardDisputes.New(context.TODO(), increase.CardDisputeNewParams{
DisputedTransactionID: increase.F("transaction_uyrp7fld2ium70oa7oi"),
Network: increase.F(increase.CardDisputeNewParamsNetworkVisa),
})
if err != nil {
panic(err.Error())
}
fmt.Printf("%+v\n", cardDispute.ID)
}
package com.increase.api.example;
import com.increase.api.client.IncreaseClient;
import com.increase.api.client.okhttp.IncreaseOkHttpClient;
import com.increase.api.models.carddisputes.CardDispute;
import com.increase.api.models.carddisputes.CardDisputeCreateParams;
public final class Main {
private Main() {}
public static void main(String[] args) {
IncreaseClient client = IncreaseOkHttpClient.fromEnv();
CardDisputeCreateParams params = CardDisputeCreateParams.builder()
.disputedTransactionId("transaction_uyrp7fld2ium70oa7oi")
.network(CardDisputeCreateParams.Network.VISA)
.build();
CardDispute cardDispute = client.cardDisputes().create(params);
}
}package com.increase.api.example
import com.increase.api.client.IncreaseClient
import com.increase.api.client.okhttp.IncreaseOkHttpClient
import com.increase.api.models.carddisputes.CardDispute
import com.increase.api.models.carddisputes.CardDisputeCreateParams
fun main() {
val client: IncreaseClient = IncreaseOkHttpClient.fromEnv()
val params: CardDisputeCreateParams = CardDisputeCreateParams.builder()
.disputedTransactionId("transaction_uyrp7fld2ium70oa7oi")
.network(CardDisputeCreateParams.Network.VISA)
.build()
val cardDispute: CardDispute = client.cardDisputes().create(params)
}<?php
require_once dirname(__DIR__) . '/vendor/autoload.php';
use Increase\Client;
use Increase\Core\Exceptions\APIException;
$client = new Client(apiKey: getenv('INCREASE_API_KEY'));
try {
$cardDispute = $client->cardDisputes->create(
disputedTransactionID: 'transaction_uyrp7fld2ium70oa7oi',
network: 'visa',
amount: 100,
attachmentFiles: [['fileID' => 'file_id']],
explanation: 'x',
visa: [
'category' => 'fraud',
'authorization' => ['accountStatus' => 'account_closed'],
'consumerCanceledMerchandise' => [
'merchantResolutionAttempted' => 'attempted',
'purchaseExplanation' => 'x',
'receivedOrExpectedAt' => '2019-12-27',
'returnOutcome' => 'not_returned',
'cardholderCancellation' => [
'canceledAt' => '2019-12-27',
'canceledPriorToShipDate' => 'canceled_prior_to_ship_date',
'cancellationPolicyProvided' => 'not_provided',
'reason' => 'x',
],
'notReturned' => [],
'returnAttempted' => [
'attemptExplanation' => 'x',
'attemptReason' => 'merchant_not_responding',
'attemptedAt' => '2019-12-27',
'merchandiseDisposition' => 'x',
],
'returned' => [
'returnMethod' => 'dhl',
'returnedAt' => '2019-12-27',
'merchantReceivedReturnAt' => '2019-12-27',
'otherExplanation' => 'x',
'trackingNumber' => 'x',
],
],
'consumerCanceledRecurringTransaction' => [
'cancellationTarget' => 'account',
'merchantContactMethods' => [
'applicationName' => 'x',
'callCenterPhoneNumber' => 'x',
'emailAddress' => 'x',
'inPersonAddress' => 'x',
'mailingAddress' => 'x',
'textPhoneNumber' => 'x',
],
'transactionOrAccountCanceledAt' => '2019-12-27',
'otherFormOfPaymentExplanation' => 'x',
],
'consumerCanceledServices' => [
'cardholderCancellation' => [
'canceledAt' => '2019-12-27',
'cancellationPolicyProvided' => 'not_provided',
'reason' => 'x',
],
'contractedAt' => '2019-12-27',
'merchantResolutionAttempted' => 'attempted',
'purchaseExplanation' => 'x',
'serviceType' => 'guaranteed_reservation',
'guaranteedReservation' => [
'explanation' => 'cardholder_canceled_prior_to_service'
],
'other' => [],
'timeshare' => [],
],
'consumerCounterfeitMerchandise' => [
'counterfeitExplanation' => 'x',
'dispositionExplanation' => 'x',
'orderExplanation' => 'x',
'receivedAt' => '2019-12-27',
],
'consumerCreditNotProcessed' => [
'canceledOrReturnedAt' => '2019-12-27',
'creditExpectedAt' => '2019-12-27',
],
'consumerDamagedOrDefectiveMerchandise' => [
'merchantResolutionAttempted' => 'attempted',
'orderAndIssueExplanation' => 'x',
'receivedAt' => '2019-12-27',
'returnOutcome' => 'not_returned',
'notReturned' => [],
'returnAttempted' => [
'attemptExplanation' => 'x',
'attemptReason' => 'merchant_not_responding',
'attemptedAt' => '2019-12-27',
'merchandiseDisposition' => 'x',
],
'returned' => [
'returnMethod' => 'dhl',
'returnedAt' => '2019-12-27',
'merchantReceivedReturnAt' => '2019-12-27',
'otherExplanation' => 'x',
'trackingNumber' => 'x',
],
],
'consumerMerchandiseMisrepresentation' => [
'merchantResolutionAttempted' => 'attempted',
'misrepresentationExplanation' => 'x',
'purchaseExplanation' => 'x',
'receivedAt' => '2019-12-27',
'returnOutcome' => 'not_returned',
'notReturned' => [],
'returnAttempted' => [
'attemptExplanation' => 'x',
'attemptReason' => 'merchant_not_responding',
'attemptedAt' => '2019-12-27',
'merchandiseDisposition' => 'x',
],
'returned' => [
'returnMethod' => 'dhl',
'returnedAt' => '2019-12-27',
'merchantReceivedReturnAt' => '2019-12-27',
'otherExplanation' => 'x',
'trackingNumber' => 'x',
],
],
'consumerMerchandiseNotAsDescribed' => [
'merchantResolutionAttempted' => 'attempted',
'receivedAt' => '2019-12-27',
'returnOutcome' => 'returned',
'returnAttempted' => [
'attemptExplanation' => 'x',
'attemptReason' => 'merchant_not_responding',
'attemptedAt' => '2019-12-27',
'merchandiseDisposition' => 'x',
],
'returned' => [
'returnMethod' => 'dhl',
'returnedAt' => '2019-12-27',
'merchantReceivedReturnAt' => '2019-12-27',
'otherExplanation' => 'x',
'trackingNumber' => 'x',
],
],
'consumerMerchandiseNotReceived' => [
'cancellationOutcome' => 'cardholder_cancellation_prior_to_expected_receipt',
'deliveryIssue' => 'delayed',
'lastExpectedReceiptAt' => '2019-12-27',
'merchantResolutionAttempted' => 'attempted',
'purchaseInfoAndExplanation' => 'x',
'cardholderCancellationPriorToExpectedReceipt' => [
'canceledAt' => '2019-12-27', 'reason' => 'x'
],
'delayed' => [
'explanation' => 'x',
'returnOutcome' => 'not_returned',
'notReturned' => [],
'returnAttempted' => ['attemptedAt' => '2019-12-27'],
'returned' => [
'merchantReceivedReturnAt' => '2019-12-27',
'returnedAt' => '2019-12-27',
],
],
'deliveredToWrongLocation' => ['agreedLocation' => 'x'],
'merchantCancellation' => ['canceledAt' => '2019-12-27'],
'noCancellation' => [],
],
'consumerNonReceiptOfCash' => [],
'consumerOriginalCreditTransactionNotAccepted' => [
'explanation' => 'x',
'reason' => 'prohibited_by_local_laws_or_regulation',
],
'consumerQualityMerchandise' => [
'expectedAt' => '2019-12-27',
'merchantResolutionAttempted' => 'attempted',
'purchaseInfoAndQualityIssue' => 'x',
'receivedAt' => '2019-12-27',
'returnOutcome' => 'not_returned',
'notReturned' => [],
'ongoingNegotiations' => [
'explanation' => 'x',
'issuerFirstNotifiedAt' => '2019-12-27',
'startedAt' => '2019-12-27',
],
'returnAttempted' => [
'attemptExplanation' => 'x',
'attemptReason' => 'merchant_not_responding',
'attemptedAt' => '2019-12-27',
'merchandiseDisposition' => 'x',
],
'returned' => [
'returnMethod' => 'dhl',
'returnedAt' => '2019-12-27',
'merchantReceivedReturnAt' => '2019-12-27',
'otherExplanation' => 'x',
'trackingNumber' => 'x',
],
],
'consumerQualityServices' => [
'cardholderCancellation' => [
'acceptedByMerchant' => 'accepted',
'canceledAt' => '2019-12-27',
'reason' => 'x',
],
'nonFiatCurrencyOrNonFungibleTokenRelatedAndNotMatchingDescription' => 'not_related',
'purchaseInfoAndQualityIssue' => 'x',
'servicesReceivedAt' => '2019-12-27',
'cardholderPaidToHaveWorkRedone' => 'did_not_pay_to_have_work_redone',
'ongoingNegotiations' => [
'explanation' => 'x',
'issuerFirstNotifiedAt' => '2019-12-27',
'startedAt' => '2019-12-27',
],
'restaurantFoodRelated' => 'not_related',
],
'consumerServicesMisrepresentation' => [
'cardholderCancellation' => [
'acceptedByMerchant' => 'accepted',
'canceledAt' => '2019-12-27',
'reason' => 'x',
],
'merchantResolutionAttempted' => 'attempted',
'misrepresentationExplanation' => 'x',
'purchaseExplanation' => 'x',
'receivedAt' => '2019-12-27',
],
'consumerServicesNotAsDescribed' => [
'cardholderCancellation' => [
'acceptedByMerchant' => 'accepted',
'canceledAt' => '2019-12-27',
'reason' => 'x',
],
'explanation' => 'x',
'merchantResolutionAttempted' => 'attempted',
'receivedAt' => '2019-12-27',
],
'consumerServicesNotReceived' => [
'cancellationOutcome' => 'cardholder_cancellation_prior_to_expected_receipt',
'lastExpectedReceiptAt' => '2019-12-27',
'merchantResolutionAttempted' => 'attempted',
'purchaseInfoAndExplanation' => 'x',
'cardholderCancellationPriorToExpectedReceipt' => [
'canceledAt' => '2019-12-27', 'reason' => 'x'
],
'merchantCancellation' => ['canceledAt' => '2019-12-27'],
'noCancellation' => [],
],
'fraud' => ['fraudType' => 'account_or_credentials_takeover'],
'processingError' => [
'errorReason' => 'duplicate_transaction',
'merchantResolutionAttempted' => 'attempted',
'duplicateTransaction' => ['otherTransactionID' => 'x'],
'incorrectAmount' => ['expectedAmount' => 0],
'paidByOtherMeans' => [
'otherFormOfPaymentEvidence' => 'canceled_check',
'otherTransactionID' => 'x',
],
],
],
);
var_dump($cardDispute);
} catch (APIException $e) {
echo $e->getMessage();
}using System;
using Increase.Api;
using Increase.Api.Models.CardDisputes;
IncreaseClient client = new();
CardDisputeCreateParams parameters = new()
{
DisputedTransactionID = "transaction_uyrp7fld2ium70oa7oi",
Network = Network.Visa,
};
var cardDispute = await client.CardDisputes.Create(parameters);
Console.WriteLine(cardDispute);The monetary amount of the part of the transaction that is being disputed. This is optional and will default to the full amount of the transaction if not provided. If provided, the amount must be less than or equal to the amount of the transaction.
The files to be attached to the initial dispute submission.
The Transaction you wish to dispute. This Transaction must have a source_type of card_settlement.
The free-form explanation provided to Increase to provide more context for the user submission. This field is not sent directly to the card networks.
The network of the disputed transaction. Details specific to the network are required under the sub-object with the same identifier as the network.
The Visa-specific parameters for the dispute. Required if and only if network is visa.
curl \
--url "${INCREASE_URL}/card_disputes/card_dispute_h9sc95nbl1cgltpp7men" \
-H "Authorization: Bearer ${INCREASE_API_KEY}"import Increase from 'increase';
const client = new Increase({
apiKey: process.env['INCREASE_API_KEY'], // This is the default and can be omitted
});
const cardDispute = await client.cardDisputes.retrieve('card_dispute_h9sc95nbl1cgltpp7men');
console.log(cardDispute.id);import os
from increase import Increase
client = Increase(
api_key=os.environ.get("INCREASE_API_KEY"), # This is the default and can be omitted
)
card_dispute = client.card_disputes.retrieve(
"card_dispute_h9sc95nbl1cgltpp7men",
)
print(card_dispute.id)require "increase"
increase = Increase::Client.new(
api_key: ENV["INCREASE_API_KEY"] # This is the default and can be omitted
)
card_dispute = increase.card_disputes.retrieve("card_dispute_h9sc95nbl1cgltpp7men")
puts(card_dispute)package main
import (
"context"
"fmt"
"os"
"github.com/Increase/increase-go"
"github.com/Increase/increase-go/option"
)
func main() {
client := increase.NewClient(
option.WithAPIKey(os.Getenv("INCREASE_API_KEY")), // This is the default and can be omitted
)
cardDispute, err := client.CardDisputes.Get(context.TODO(), "card_dispute_h9sc95nbl1cgltpp7men")
if err != nil {
panic(err.Error())
}
fmt.Printf("%+v\n", cardDispute.ID)
}
package com.increase.api.example;
import com.increase.api.client.IncreaseClient;
import com.increase.api.client.okhttp.IncreaseOkHttpClient;
import com.increase.api.models.carddisputes.CardDispute;
import com.increase.api.models.carddisputes.CardDisputeRetrieveParams;
public final class Main {
private Main() {}
public static void main(String[] args) {
IncreaseClient client = IncreaseOkHttpClient.fromEnv();
CardDispute cardDispute = client.cardDisputes().retrieve("card_dispute_h9sc95nbl1cgltpp7men");
}
}package com.increase.api.example
import com.increase.api.client.IncreaseClient
import com.increase.api.client.okhttp.IncreaseOkHttpClient
import com.increase.api.models.carddisputes.CardDispute
import com.increase.api.models.carddisputes.CardDisputeRetrieveParams
fun main() {
val client: IncreaseClient = IncreaseOkHttpClient.fromEnv()
val cardDispute: CardDispute = client.cardDisputes().retrieve("card_dispute_h9sc95nbl1cgltpp7men")
}<?php
require_once dirname(__DIR__) . '/vendor/autoload.php';
use Increase\Client;
use Increase\Core\Exceptions\APIException;
$client = new Client(apiKey: getenv('INCREASE_API_KEY'));
try {
$cardDispute = $client->cardDisputes->retrieve(
'card_dispute_h9sc95nbl1cgltpp7men'
);
var_dump($cardDispute);
} catch (APIException $e) {
echo $e->getMessage();
}using System;
using Increase.Api;
using Increase.Api.Models.CardDisputes;
IncreaseClient client = new();
CardDisputeRetrieveParams parameters = new()
{
CardDisputeID = "card_dispute_h9sc95nbl1cgltpp7men"
};
var cardDispute = await client.CardDisputes.Retrieve(parameters);
Console.WriteLine(cardDispute);The identifier of the Card Dispute.
curl -X "POST" \
--url "${INCREASE_URL}/card_disputes/card_dispute_h9sc95nbl1cgltpp7men/submit_user_submission" \
-H "Authorization: Bearer ${INCREASE_API_KEY}" \
-H "Content-Type: application/json" \
-d $'{
"network": "visa",
"visa": {
"category": "merchant_prearbitration_decline",
"merchant_prearbitration_decline": {
"reason": "The pre-arbitration received from the merchantdoes not explain how they obtained permission to charge the card."
}
}
}'import Increase from 'increase';
const client = new Increase({
apiKey: process.env['INCREASE_API_KEY'], // This is the default and can be omitted
});
const cardDispute = await client.cardDisputes.submitUserSubmission(
'card_dispute_h9sc95nbl1cgltpp7men',
{ network: 'visa' },
);
console.log(cardDispute.id);import os
from increase import Increase
client = Increase(
api_key=os.environ.get("INCREASE_API_KEY"), # This is the default and can be omitted
)
card_dispute = client.card_disputes.submit_user_submission(
card_dispute_id="card_dispute_h9sc95nbl1cgltpp7men",
network="visa",
)
print(card_dispute.id)require "increase"
increase = Increase::Client.new(
api_key: ENV["INCREASE_API_KEY"] # This is the default and can be omitted
)
card_dispute = increase.card_disputes.submit_user_submission("card_dispute_h9sc95nbl1cgltpp7men", network: :visa)
puts(card_dispute)package main
import (
"context"
"fmt"
"os"
"github.com/Increase/increase-go"
"github.com/Increase/increase-go/option"
)
func main() {
client := increase.NewClient(
option.WithAPIKey(os.Getenv("INCREASE_API_KEY")), // This is the default and can be omitted
)
cardDispute, err := client.CardDisputes.SubmitUserSubmission(
context.TODO(),
"card_dispute_h9sc95nbl1cgltpp7men",
increase.CardDisputeSubmitUserSubmissionParams{
Network: increase.F(increase.CardDisputeSubmitUserSubmissionParamsNetworkVisa),
},
)
if err != nil {
panic(err.Error())
}
fmt.Printf("%+v\n", cardDispute.ID)
}
package com.increase.api.example;
import com.increase.api.client.IncreaseClient;
import com.increase.api.client.okhttp.IncreaseOkHttpClient;
import com.increase.api.models.carddisputes.CardDispute;
import com.increase.api.models.carddisputes.CardDisputeSubmitUserSubmissionParams;
public final class Main {
private Main() {}
public static void main(String[] args) {
IncreaseClient client = IncreaseOkHttpClient.fromEnv();
CardDisputeSubmitUserSubmissionParams params = CardDisputeSubmitUserSubmissionParams.builder()
.cardDisputeId("card_dispute_h9sc95nbl1cgltpp7men")
.network(CardDisputeSubmitUserSubmissionParams.Network.VISA)
.build();
CardDispute cardDispute = client.cardDisputes().submitUserSubmission(params);
}
}package com.increase.api.example
import com.increase.api.client.IncreaseClient
import com.increase.api.client.okhttp.IncreaseOkHttpClient
import com.increase.api.models.carddisputes.CardDispute
import com.increase.api.models.carddisputes.CardDisputeSubmitUserSubmissionParams
fun main() {
val client: IncreaseClient = IncreaseOkHttpClient.fromEnv()
val params: CardDisputeSubmitUserSubmissionParams = CardDisputeSubmitUserSubmissionParams.builder()
.cardDisputeId("card_dispute_h9sc95nbl1cgltpp7men")
.network(CardDisputeSubmitUserSubmissionParams.Network.VISA)
.build()
val cardDispute: CardDispute = client.cardDisputes().submitUserSubmission(params)
}<?php
require_once dirname(__DIR__) . '/vendor/autoload.php';
use Increase\Client;
use Increase\Core\Exceptions\APIException;
$client = new Client(apiKey: getenv('INCREASE_API_KEY'));
try {
$cardDispute = $client->cardDisputes->submitUserSubmission(
'card_dispute_h9sc95nbl1cgltpp7men',
network: 'visa',
amount: 1,
attachmentFiles: [['fileID' => 'file_id']],
explanation: 'x',
visa: [
'category' => 'merchant_prearbitration_decline',
'chargeback' => [
'category' => 'authorization',
'authorization' => ['accountStatus' => 'account_closed'],
'consumerCanceledMerchandise' => [
'merchantResolutionAttempted' => 'attempted',
'purchaseExplanation' => 'x',
'receivedOrExpectedAt' => '2019-12-27',
'returnOutcome' => 'not_returned',
'cardholderCancellation' => [
'canceledAt' => '2019-12-27',
'canceledPriorToShipDate' => 'canceled_prior_to_ship_date',
'cancellationPolicyProvided' => 'not_provided',
'reason' => 'x',
],
'notReturned' => [],
'returnAttempted' => [
'attemptExplanation' => 'x',
'attemptReason' => 'merchant_not_responding',
'attemptedAt' => '2019-12-27',
'merchandiseDisposition' => 'x',
],
'returned' => [
'returnMethod' => 'dhl',
'returnedAt' => '2019-12-27',
'merchantReceivedReturnAt' => '2019-12-27',
'otherExplanation' => 'x',
'trackingNumber' => 'x',
],
],
'consumerCanceledRecurringTransaction' => [
'cancellationTarget' => 'account',
'merchantContactMethods' => [
'applicationName' => 'x',
'callCenterPhoneNumber' => 'x',
'emailAddress' => 'x',
'inPersonAddress' => 'x',
'mailingAddress' => 'x',
'textPhoneNumber' => 'x',
],
'transactionOrAccountCanceledAt' => '2019-12-27',
'otherFormOfPaymentExplanation' => 'x',
],
'consumerCanceledServices' => [
'cardholderCancellation' => [
'canceledAt' => '2019-12-27',
'cancellationPolicyProvided' => 'not_provided',
'reason' => 'x',
],
'contractedAt' => '2019-12-27',
'merchantResolutionAttempted' => 'attempted',
'purchaseExplanation' => 'x',
'serviceType' => 'guaranteed_reservation',
'guaranteedReservation' => [
'explanation' => 'cardholder_canceled_prior_to_service'
],
'other' => [],
'timeshare' => [],
],
'consumerCounterfeitMerchandise' => [
'counterfeitExplanation' => 'x',
'dispositionExplanation' => 'x',
'orderExplanation' => 'x',
'receivedAt' => '2019-12-27',
],
'consumerCreditNotProcessed' => [
'canceledOrReturnedAt' => '2019-12-27',
'creditExpectedAt' => '2019-12-27',
],
'consumerDamagedOrDefectiveMerchandise' => [
'merchantResolutionAttempted' => 'attempted',
'orderAndIssueExplanation' => 'x',
'receivedAt' => '2019-12-27',
'returnOutcome' => 'not_returned',
'notReturned' => [],
'returnAttempted' => [
'attemptExplanation' => 'x',
'attemptReason' => 'merchant_not_responding',
'attemptedAt' => '2019-12-27',
'merchandiseDisposition' => 'x',
],
'returned' => [
'returnMethod' => 'dhl',
'returnedAt' => '2019-12-27',
'merchantReceivedReturnAt' => '2019-12-27',
'otherExplanation' => 'x',
'trackingNumber' => 'x',
],
],
'consumerMerchandiseMisrepresentation' => [
'merchantResolutionAttempted' => 'attempted',
'misrepresentationExplanation' => 'x',
'purchaseExplanation' => 'x',
'receivedAt' => '2019-12-27',
'returnOutcome' => 'not_returned',
'notReturned' => [],
'returnAttempted' => [
'attemptExplanation' => 'x',
'attemptReason' => 'merchant_not_responding',
'attemptedAt' => '2019-12-27',
'merchandiseDisposition' => 'x',
],
'returned' => [
'returnMethod' => 'dhl',
'returnedAt' => '2019-12-27',
'merchantReceivedReturnAt' => '2019-12-27',
'otherExplanation' => 'x',
'trackingNumber' => 'x',
],
],
'consumerMerchandiseNotAsDescribed' => [
'merchantResolutionAttempted' => 'attempted',
'receivedAt' => '2019-12-27',
'returnOutcome' => 'returned',
'returnAttempted' => [
'attemptExplanation' => 'x',
'attemptReason' => 'merchant_not_responding',
'attemptedAt' => '2019-12-27',
'merchandiseDisposition' => 'x',
],
'returned' => [
'returnMethod' => 'dhl',
'returnedAt' => '2019-12-27',
'merchantReceivedReturnAt' => '2019-12-27',
'otherExplanation' => 'x',
'trackingNumber' => 'x',
],
],
'consumerMerchandiseNotReceived' => [
'cancellationOutcome' => 'cardholder_cancellation_prior_to_expected_receipt',
'deliveryIssue' => 'delayed',
'lastExpectedReceiptAt' => '2019-12-27',
'merchantResolutionAttempted' => 'attempted',
'purchaseInfoAndExplanation' => 'x',
'cardholderCancellationPriorToExpectedReceipt' => [
'canceledAt' => '2019-12-27', 'reason' => 'x'
],
'delayed' => [
'explanation' => 'x',
'returnOutcome' => 'not_returned',
'notReturned' => [],
'returnAttempted' => ['attemptedAt' => '2019-12-27'],
'returned' => [
'merchantReceivedReturnAt' => '2019-12-27',
'returnedAt' => '2019-12-27',
],
],
'deliveredToWrongLocation' => ['agreedLocation' => 'x'],
'merchantCancellation' => ['canceledAt' => '2019-12-27'],
'noCancellation' => [],
],
'consumerNonReceiptOfCash' => [],
'consumerOriginalCreditTransactionNotAccepted' => [
'explanation' => 'x',
'reason' => 'prohibited_by_local_laws_or_regulation',
],
'consumerQualityMerchandise' => [
'expectedAt' => '2019-12-27',
'merchantResolutionAttempted' => 'attempted',
'purchaseInfoAndQualityIssue' => 'x',
'receivedAt' => '2019-12-27',
'returnOutcome' => 'not_returned',
'notReturned' => [],
'ongoingNegotiations' => [
'explanation' => 'x',
'issuerFirstNotifiedAt' => '2019-12-27',
'startedAt' => '2019-12-27',
],
'returnAttempted' => [
'attemptExplanation' => 'x',
'attemptReason' => 'merchant_not_responding',
'attemptedAt' => '2019-12-27',
'merchandiseDisposition' => 'x',
],
'returned' => [
'returnMethod' => 'dhl',
'returnedAt' => '2019-12-27',
'merchantReceivedReturnAt' => '2019-12-27',
'otherExplanation' => 'x',
'trackingNumber' => 'x',
],
],
'consumerQualityServices' => [
'cardholderCancellation' => [
'acceptedByMerchant' => 'accepted',
'canceledAt' => '2019-12-27',
'reason' => 'x',
],
'nonFiatCurrencyOrNonFungibleTokenRelatedAndNotMatchingDescription' => 'not_related',
'purchaseInfoAndQualityIssue' => 'x',
'servicesReceivedAt' => '2019-12-27',
'cardholderPaidToHaveWorkRedone' => 'did_not_pay_to_have_work_redone',
'ongoingNegotiations' => [
'explanation' => 'x',
'issuerFirstNotifiedAt' => '2019-12-27',
'startedAt' => '2019-12-27',
],
'restaurantFoodRelated' => 'not_related',
],
'consumerServicesMisrepresentation' => [
'cardholderCancellation' => [
'acceptedByMerchant' => 'accepted',
'canceledAt' => '2019-12-27',
'reason' => 'x',
],
'merchantResolutionAttempted' => 'attempted',
'misrepresentationExplanation' => 'x',
'purchaseExplanation' => 'x',
'receivedAt' => '2019-12-27',
],
'consumerServicesNotAsDescribed' => [
'cardholderCancellation' => [
'acceptedByMerchant' => 'accepted',
'canceledAt' => '2019-12-27',
'reason' => 'x',
],
'explanation' => 'x',
'merchantResolutionAttempted' => 'attempted',
'receivedAt' => '2019-12-27',
],
'consumerServicesNotReceived' => [
'cancellationOutcome' => 'cardholder_cancellation_prior_to_expected_receipt',
'lastExpectedReceiptAt' => '2019-12-27',
'merchantResolutionAttempted' => 'attempted',
'purchaseInfoAndExplanation' => 'x',
'cardholderCancellationPriorToExpectedReceipt' => [
'canceledAt' => '2019-12-27', 'reason' => 'x'
],
'merchantCancellation' => ['canceledAt' => '2019-12-27'],
'noCancellation' => [],
],
'fraud' => ['fraudType' => 'account_or_credentials_takeover'],
'processingError' => [
'errorReason' => 'duplicate_transaction',
'merchantResolutionAttempted' => 'attempted',
'duplicateTransaction' => ['otherTransactionID' => 'x'],
'incorrectAmount' => ['expectedAmount' => 0],
'paidByOtherMeans' => [
'otherFormOfPaymentEvidence' => 'canceled_check',
'otherTransactionID' => 'x',
],
],
],
'merchantPrearbitrationDecline' => [
'reason' => 'The pre-arbitration received from the merchantdoes not explain how they obtained permission to charge the card.',
],
'userPrearbitration' => [
'reason' => 'x',
'categoryChange' => ['category' => 'authorization', 'reason' => 'x'],
],
],
);
var_dump($cardDispute);
} catch (APIException $e) {
echo $e->getMessage();
}using System;
using Increase.Api;
using Increase.Api.Models.CardDisputes;
IncreaseClient client = new();
CardDisputeSubmitUserSubmissionParams parameters = new()
{
CardDisputeID = "card_dispute_h9sc95nbl1cgltpp7men",
Network = CardDisputeSubmitUserSubmissionParamsNetwork.Visa,
};
var cardDispute = await client.CardDisputes.SubmitUserSubmission(parameters);
Console.WriteLine(cardDispute);The identifier of the Card Dispute to submit a user submission for.
The adjusted monetary amount of the part of the transaction that is being disputed. This is optional and will default to the most recent amount provided. If provided, the amount must be less than or equal to the amount of the transaction.
The files to be attached to the user submission.
The free-form explanation provided to Increase to provide more context for the user submission. This field is not sent directly to the card networks.
The network of the Card Dispute. Details specific to the network are required under the sub-object with the same identifier as the network.
The Visa-specific parameters for the dispute. Required if and only if network is visa.
curl -X "POST" \
--url "${INCREASE_URL}/card_disputes/card_dispute_h9sc95nbl1cgltpp7men/withdraw" \
-H "Authorization: Bearer ${INCREASE_API_KEY}" \
-H "Content-Type: application/json" \
-d $'{
"explanation": "The explanation for withdrawing the Card Dispute."
}'import Increase from 'increase';
const client = new Increase({
apiKey: process.env['INCREASE_API_KEY'], // This is the default and can be omitted
});
const cardDispute = await client.cardDisputes.withdraw('card_dispute_h9sc95nbl1cgltpp7men');
console.log(cardDispute.id);import os
from increase import Increase
client = Increase(
api_key=os.environ.get("INCREASE_API_KEY"), # This is the default and can be omitted
)
card_dispute = client.card_disputes.withdraw(
card_dispute_id="card_dispute_h9sc95nbl1cgltpp7men",
)
print(card_dispute.id)require "increase"
increase = Increase::Client.new(
api_key: ENV["INCREASE_API_KEY"] # This is the default and can be omitted
)
card_dispute = increase.card_disputes.withdraw("card_dispute_h9sc95nbl1cgltpp7men")
puts(card_dispute)package main
import (
"context"
"fmt"
"os"
"github.com/Increase/increase-go"
"github.com/Increase/increase-go/option"
)
func main() {
client := increase.NewClient(
option.WithAPIKey(os.Getenv("INCREASE_API_KEY")), // This is the default and can be omitted
)
cardDispute, err := client.CardDisputes.Withdraw(
context.TODO(),
"card_dispute_h9sc95nbl1cgltpp7men",
increase.CardDisputeWithdrawParams{},
)
if err != nil {
panic(err.Error())
}
fmt.Printf("%+v\n", cardDispute.ID)
}
package com.increase.api.example;
import com.increase.api.client.IncreaseClient;
import com.increase.api.client.okhttp.IncreaseOkHttpClient;
import com.increase.api.models.carddisputes.CardDispute;
import com.increase.api.models.carddisputes.CardDisputeWithdrawParams;
public final class Main {
private Main() {}
public static void main(String[] args) {
IncreaseClient client = IncreaseOkHttpClient.fromEnv();
CardDispute cardDispute = client.cardDisputes().withdraw("card_dispute_h9sc95nbl1cgltpp7men");
}
}package com.increase.api.example
import com.increase.api.client.IncreaseClient
import com.increase.api.client.okhttp.IncreaseOkHttpClient
import com.increase.api.models.carddisputes.CardDispute
import com.increase.api.models.carddisputes.CardDisputeWithdrawParams
fun main() {
val client: IncreaseClient = IncreaseOkHttpClient.fromEnv()
val cardDispute: CardDispute = client.cardDisputes().withdraw("card_dispute_h9sc95nbl1cgltpp7men")
}<?php
require_once dirname(__DIR__) . '/vendor/autoload.php';
use Increase\Client;
use Increase\Core\Exceptions\APIException;
$client = new Client(apiKey: getenv('INCREASE_API_KEY'));
try {
$cardDispute = $client->cardDisputes->withdraw(
'card_dispute_h9sc95nbl1cgltpp7men',
explanation: 'The explanation for withdrawing the Card Dispute.',
);
var_dump($cardDispute);
} catch (APIException $e) {
echo $e->getMessage();
}using System;
using Increase.Api;
using Increase.Api.Models.CardDisputes;
IncreaseClient client = new();
CardDisputeWithdrawParams parameters = new()
{
CardDisputeID = "card_dispute_h9sc95nbl1cgltpp7men"
};
var cardDispute = await client.CardDisputes.Withdraw(parameters);
Console.WriteLine(cardDispute);The identifier of the Card Dispute to withdraw.
The explanation for withdrawing the Card Dispute.
After a Card Dispute is created in production, the dispute will initially be in a pending_user_submission_reviewing state. Since no review or further action happens in sandbox, this endpoint simulates moving a Card Dispute through its various states.
curl -X "POST" \
--url "${INCREASE_URL}/simulations/card_disputes/card_dispute_h9sc95nbl1cgltpp7men/action" \
-H "Authorization: Bearer ${INCREASE_API_KEY}" \
-H "Content-Type: application/json" \
-d $'{
"network": "visa",
"visa": {
"accept_user_submission": {},
"action": "accept_user_submission"
}
}'import Increase from 'increase';
const client = new Increase({
apiKey: process.env['INCREASE_API_KEY'], // This is the default and can be omitted
});
const cardDispute = await client.simulations.cardDisputes.action(
'card_dispute_h9sc95nbl1cgltpp7men',
{ network: 'visa' },
);
console.log(cardDispute.id);import os
from increase import Increase
client = Increase(
api_key=os.environ.get("INCREASE_API_KEY"), # This is the default and can be omitted
)
card_dispute = client.simulations.card_disputes.action(
card_dispute_id="card_dispute_h9sc95nbl1cgltpp7men",
network="visa",
)
print(card_dispute.id)require "increase"
increase = Increase::Client.new(
api_key: ENV["INCREASE_API_KEY"] # This is the default and can be omitted
)
card_dispute = increase.simulations.card_disputes.action("card_dispute_h9sc95nbl1cgltpp7men", network: :visa)
puts(card_dispute)package main
import (
"context"
"fmt"
"os"
"github.com/Increase/increase-go"
"github.com/Increase/increase-go/option"
)
func main() {
client := increase.NewClient(
option.WithAPIKey(os.Getenv("INCREASE_API_KEY")), // This is the default and can be omitted
)
cardDispute, err := client.Simulations.CardDisputes.Action(
context.TODO(),
"card_dispute_h9sc95nbl1cgltpp7men",
increase.SimulationCardDisputeActionParams{
Network: increase.F(increase.SimulationCardDisputeActionParamsNetworkVisa),
},
)
if err != nil {
panic(err.Error())
}
fmt.Printf("%+v\n", cardDispute.ID)
}
package com.increase.api.example;
import com.increase.api.client.IncreaseClient;
import com.increase.api.client.okhttp.IncreaseOkHttpClient;
import com.increase.api.models.carddisputes.CardDispute;
import com.increase.api.models.simulations.carddisputes.CardDisputeActionParams;
public final class Main {
private Main() {}
public static void main(String[] args) {
IncreaseClient client = IncreaseOkHttpClient.fromEnv();
CardDisputeActionParams params = CardDisputeActionParams.builder()
.cardDisputeId("card_dispute_h9sc95nbl1cgltpp7men")
.network(CardDisputeActionParams.Network.VISA)
.build();
CardDispute cardDispute = client.simulations().cardDisputes().action(params);
}
}package com.increase.api.example
import com.increase.api.client.IncreaseClient
import com.increase.api.client.okhttp.IncreaseOkHttpClient
import com.increase.api.models.carddisputes.CardDispute
import com.increase.api.models.simulations.carddisputes.CardDisputeActionParams
fun main() {
val client: IncreaseClient = IncreaseOkHttpClient.fromEnv()
val params: CardDisputeActionParams = CardDisputeActionParams.builder()
.cardDisputeId("card_dispute_h9sc95nbl1cgltpp7men")
.network(CardDisputeActionParams.Network.VISA)
.build()
val cardDispute: CardDispute = client.simulations().cardDisputes().action(params)
}<?php
require_once dirname(__DIR__) . '/vendor/autoload.php';
use Increase\Client;
use Increase\Core\Exceptions\APIException;
$client = new Client(apiKey: getenv('INCREASE_API_KEY'));
try {
$cardDispute = $client->simulations->cardDisputes->action(
'card_dispute_h9sc95nbl1cgltpp7men',
network: 'visa',
visa: [
'action' => 'accept_user_submission',
'acceptChargeback' => [],
'acceptUserSubmission' => [],
'declineUserPrearbitration' => [],
'receiveMerchantPrearbitration' => [],
'represent' => [],
'requestFurtherInformation' => ['reason' => 'x'],
'timeOutChargeback' => [],
'timeOutMerchantPrearbitration' => [],
'timeOutRepresentment' => [],
'timeOutUserPrearbitration' => [],
],
);
var_dump($cardDispute);
} catch (APIException $e) {
echo $e->getMessage();
}using System;
using Increase.Api;
using Increase.Api.Models.Simulations.CardDisputes;
IncreaseClient client = new();
CardDisputeActionParams parameters = new()
{
CardDisputeID = "card_dispute_h9sc95nbl1cgltpp7men",
Network = Network.Visa,
};
var cardDispute = await client.Simulations.CardDisputes.Action(parameters);
Console.WriteLine(cardDispute);The dispute you would like to action.
The network of the Card Dispute. Details specific to the network are required under the sub-object with the same identifier as the network.
The Visa-specific parameters for the taking action on the dispute. Required if and only if network is visa.