Payments
Get Manual Retry State
Check whether a failed subscription renewal payment can be retried now, and when the next manual retry becomes available.
GET
/
payments
/
{payment_id}
/
retry
JavaScript
import DodoPayments from 'dodopayments';
const client = new DodoPayments({
bearerToken: process.env['DODO_PAYMENTS_API_KEY'], // This is the default and can be omitted
});
const manualRetryState = await client.payments.retrieveRetryState('payment_id');
console.log(manualRetryState.can_retry);import os
from dodopayments import DodoPayments
client = DodoPayments(
bearer_token=os.environ.get("DODO_PAYMENTS_API_KEY"), # This is the default and can be omitted
)
manual_retry_state = client.payments.retrieve_retry_state(
"payment_id",
)
print(manual_retry_state.can_retry)package main
import (
"context"
"fmt"
"github.com/dodopayments/dodopayments-go"
"github.com/dodopayments/dodopayments-go/option"
)
func main() {
client := dodopayments.NewClient(
option.WithBearerToken("My Bearer Token"),
)
manualRetryState, err := client.Payments.GetRetryState(context.TODO(), "payment_id")
if err != nil {
panic(err.Error())
}
fmt.Printf("%+v\n", manualRetryState.CanRetry)
}
package com.dodopayments.api.example;
import com.dodopayments.api.client.DodoPaymentsClient;
import com.dodopayments.api.client.okhttp.DodoPaymentsOkHttpClient;
import com.dodopayments.api.models.payments.ManualRetryState;
import com.dodopayments.api.models.payments.PaymentRetrieveRetryStateParams;
public final class Main {
private Main() {}
public static void main(String[] args) {
DodoPaymentsClient client = DodoPaymentsOkHttpClient.fromEnv();
ManualRetryState manualRetryState = client.payments().retrieveRetryState("payment_id");
}
}package com.dodopayments.api.example
import com.dodopayments.api.client.DodoPaymentsClient
import com.dodopayments.api.client.okhttp.DodoPaymentsOkHttpClient
import com.dodopayments.api.models.payments.ManualRetryState
import com.dodopayments.api.models.payments.PaymentRetrieveRetryStateParams
fun main() {
val client: DodoPaymentsClient = DodoPaymentsOkHttpClient.fromEnv()
val manualRetryState: ManualRetryState = client.payments().retrieveRetryState("payment_id")
}require "dodopayments"
dodo_payments = Dodopayments::Client.new(
bearer_token: "My Bearer Token",
environment: "test_mode" # defaults to "live_mode"
)
manual_retry_state = dodo_payments.payments.retrieve_retry_state("payment_id")
puts(manual_retry_state)<?php
require_once dirname(__DIR__) . '/vendor/autoload.php';
use Dodopayments\Client;
use Dodopayments\Core\Exceptions\APIException;
$client = new Client(
bearerToken: getenv('DODO_PAYMENTS_API_KEY') ?: 'My Bearer Token',
environment: 'test_mode',
);
try {
$manualRetryState = $client->payments->retrieveRetryState('payment_id');
var_dump($manualRetryState);
} catch (APIException $e) {
echo $e->getMessage();
}using System;
using DodoPayments.Client;
using DodoPayments.Client.Models.Payments;
DodoPaymentsClient client = new();
PaymentRetrieveRetryStateParams parameters = new() { PaymentID = "payment_id" };
var manualRetryState = await client.Payments.RetrieveRetryState(parameters);
Console.WriteLine(manualRetryState);use dodopayments::Client;
#[tokio::main]
async fn main() -> dodopayments::Result<()> {
let client = Client::from_env()?;
let payment_id = "payment_id";
let result = client
.payments()
.retrieve_retry_state()
.payment_id(payment_id)
.await?;
println!("{result:?}");
Ok(())
}curl --request GET \
--url https://test.dodopayments.com/payments/{payment_id}/retry \
--header 'Authorization: Bearer <token>'{
"can_retry": true,
"sends_allowed": 123,
"sends_used": 123,
"reason": "<string>",
"retry_available_at": "2023-11-07T05:31:56Z"
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Path Parameters
Id of the failed payment
Response
Whether this payment can be retried now
The code POST would fail with. Null when can_retry is true.
When the next send becomes available. Null when no send is left, or when the block has nothing to do with the cooldown.
Last modified on October 7, 2026
Was this page helpful?
⌘I
JavaScript
import DodoPayments from 'dodopayments';
const client = new DodoPayments({
bearerToken: process.env['DODO_PAYMENTS_API_KEY'], // This is the default and can be omitted
});
const manualRetryState = await client.payments.retrieveRetryState('payment_id');
console.log(manualRetryState.can_retry);import os
from dodopayments import DodoPayments
client = DodoPayments(
bearer_token=os.environ.get("DODO_PAYMENTS_API_KEY"), # This is the default and can be omitted
)
manual_retry_state = client.payments.retrieve_retry_state(
"payment_id",
)
print(manual_retry_state.can_retry)package main
import (
"context"
"fmt"
"github.com/dodopayments/dodopayments-go"
"github.com/dodopayments/dodopayments-go/option"
)
func main() {
client := dodopayments.NewClient(
option.WithBearerToken("My Bearer Token"),
)
manualRetryState, err := client.Payments.GetRetryState(context.TODO(), "payment_id")
if err != nil {
panic(err.Error())
}
fmt.Printf("%+v\n", manualRetryState.CanRetry)
}
package com.dodopayments.api.example;
import com.dodopayments.api.client.DodoPaymentsClient;
import com.dodopayments.api.client.okhttp.DodoPaymentsOkHttpClient;
import com.dodopayments.api.models.payments.ManualRetryState;
import com.dodopayments.api.models.payments.PaymentRetrieveRetryStateParams;
public final class Main {
private Main() {}
public static void main(String[] args) {
DodoPaymentsClient client = DodoPaymentsOkHttpClient.fromEnv();
ManualRetryState manualRetryState = client.payments().retrieveRetryState("payment_id");
}
}package com.dodopayments.api.example
import com.dodopayments.api.client.DodoPaymentsClient
import com.dodopayments.api.client.okhttp.DodoPaymentsOkHttpClient
import com.dodopayments.api.models.payments.ManualRetryState
import com.dodopayments.api.models.payments.PaymentRetrieveRetryStateParams
fun main() {
val client: DodoPaymentsClient = DodoPaymentsOkHttpClient.fromEnv()
val manualRetryState: ManualRetryState = client.payments().retrieveRetryState("payment_id")
}require "dodopayments"
dodo_payments = Dodopayments::Client.new(
bearer_token: "My Bearer Token",
environment: "test_mode" # defaults to "live_mode"
)
manual_retry_state = dodo_payments.payments.retrieve_retry_state("payment_id")
puts(manual_retry_state)<?php
require_once dirname(__DIR__) . '/vendor/autoload.php';
use Dodopayments\Client;
use Dodopayments\Core\Exceptions\APIException;
$client = new Client(
bearerToken: getenv('DODO_PAYMENTS_API_KEY') ?: 'My Bearer Token',
environment: 'test_mode',
);
try {
$manualRetryState = $client->payments->retrieveRetryState('payment_id');
var_dump($manualRetryState);
} catch (APIException $e) {
echo $e->getMessage();
}using System;
using DodoPayments.Client;
using DodoPayments.Client.Models.Payments;
DodoPaymentsClient client = new();
PaymentRetrieveRetryStateParams parameters = new() { PaymentID = "payment_id" };
var manualRetryState = await client.Payments.RetrieveRetryState(parameters);
Console.WriteLine(manualRetryState);use dodopayments::Client;
#[tokio::main]
async fn main() -> dodopayments::Result<()> {
let client = Client::from_env()?;
let payment_id = "payment_id";
let result = client
.payments()
.retrieve_retry_state()
.payment_id(payment_id)
.await?;
println!("{result:?}");
Ok(())
}curl --request GET \
--url https://test.dodopayments.com/payments/{payment_id}/retry \
--header 'Authorization: Bearer <token>'{
"can_retry": true,
"sends_allowed": 123,
"sends_used": 123,
"reason": "<string>",
"retry_available_at": "2023-11-07T05:31:56Z"
}