Duplicate payment methods

Ability to duplicate a payment method in the Rainforest ecosystem

Rainforest supports duplicating a saved payment method, which allows you to associate new billing contact and metadata to a new payment method without having to ask the end user to store their payment method again.

Once a payment method is duplicated, the two payment methods are not associated to each other and will be treated as completely separate payment methods within the Rainforest ecosystem. Meaning, processes such as Card Account Updater will run separately on these two payment methods.

Duplicating a payment method is supported on all payment method types: Card, Apple Pay, ACH, and Plaid ACH (Validated ACH).


How to duplicate


Create a payment method config

First, create a payment method config to specify information such as billing contact and metadata. The billing contact and metadata will not persist from the payment method being duplicated and must be defined when duplicating a payment method.

Create a payment method

Second, create a payment method by providing the payment method ID to duplicate. Only the stored sensitive payment method details (i.e the full card or bank account number) will persist to the duplicated payment method.


Example


Given the following existing payment method:

{
    "status": "SUCCESS",
    "data": {
        "payment_method_id": "mtd_30guzufiuQTL9WvdawVRNnNi8WT",
        "payment_method_config_id": "pmc_30guzGrSO2i1PkA2uESGyHJtb5S",
        // ...
        "fingerprint": "2299b763fa9841f9e4d5edcd1925c09c7c5be09f8b647934a226ad8c2d470874",
        "method_type": "CARD",
        "card": {
            "type": "CREDIT",
            "brand": "VISA",
            "brand_desc": "Visa",
            "last_4": "1111",
            "exp_month": 1,
            "exp_year": 2025
        },
        // ...
        "billing_contact": {
            "name": "Jane Doe",
            "address_line_1": "123 Example Street",
            "address_line_2": null,
            "city": "Atlanta",
            "state": "GA",
            "postal_code": "30308",
            "country": "US",
            "email": "[email protected]",
            "phone": "+11231231234"
        },
        // ...
        "metadata": {
            "account_id": "11223344"
        },
        // ...
        "created_at": "2025-07-12T11:23:22.049779-04:00",
        "updated_at": "2025-07-12T11:23:22.16442-04:00"
    },
    "errors": null
}

First, create a payment method config with new billing contact and metadata:

{
    "status": "SUCCESS",
    "data": {
        "payment_method_config_id": "pmc_30gvb7ViOA7smu9gHZSeYF6o3hV",
        // ...
        "billing_contact": {
            "name": "John Doe",
            "address_line_1": "678 Example Street",
            "address_line_2": null,
            "city": "Atlanta",
            "state": "GA",
            "postal_code": "30319",
            "country": "US",
            "email": "[email protected]",
            "phone": "+16786786789"
        },
        "metadata": {
            "account_id": "66778899"
        },
        // ...
        "created_at": "2025-08-01T11:28:18.990086-04:00"
    },
    "errors": null
}

Then, create a payment method given the payment method ID to duplicate:

{
    "payment_method_config_id": "pmc_30gvb7ViOA7smu9gHZSeYF6o3hV",
    "payment_method_id": "mtd_30guzufiuQTL9WvdawVRNnNi8WT"
}
{
    "status": "SUCCESS",
    "data": {
        "payment_method_id": "mtd_30gwZPvUJT2OSb1RhfwoK5ALeRV",
        "payment_method_config_id": "pmc_30gvb7ViOA7smu9gHZSeYF6o3hV",
        // ...
        "fingerprint": "2299b763fa9841f9e4d5edcd1925c09c7c5be09f8b647934a226ad8c2d470874",
        "method_type": "CARD",
        "card": {
            "type": "CREDIT",
            "brand": "VISA",
            "brand_desc": "Visa",
            "last_4": "1111",
            "exp_month": 1,
            "exp_year": 2025
        },
        // ...
        "billing_contact": {
            "name": "John Doe",
            "address_line_1": "678 Example Street",
            "address_line_2": null,
            "city": "Atlanta",
            "state": "GA",
            "postal_code": "30319",
            "country": "US",
            "email": "[email protected]",
            "phone": "+16786786789"
        },
        // ...
        "metadata": {
            "account_id": "66778899"
        },
        // ...
        "created_at": "2025-08-01T11:29:20.371375-04:00",
        "updated_at": "2025-08-01T11:29:20.391285-04:00"
    },
    "errors": null
}