Skip to Content
CheckoutAPI ReferenceSettingsPrepare a merchant signer rotation

Prepare a merchant signer rotation

GET/settings/signer/rotation

Returns, per chain with a SubscriptionManager deployment, the data the outgoing signer must sign for setFactory: the manager clone address, its current setFactoryNonce, and the predicted replacement PaymentFactory address for the new signer. metafactory_address is the chain's PaymentFactoryFactory contract — the CREATE2 deployer whose predict(merchant_id, new_signer, settlement_address) view lets you verify new_factory_address independently before signing.

Headers

HeaderDescriptionRequired
AuthorizationBearer token with your secret API keyyes

Query Parameters

NameTypeRequiredDescription
new_signerstringyes

Example Request

Request

const response = await fetch('https://checkout-api.exodus.com/settings/signer/rotation?new_signer=<new_signer>', {
  method: 'GET',
  headers: {
    Authorization: 'Bearer sk_live_xxxxxxxxxxxxxxxx',
  },
});

Responses

StatusDescription
200The per-chain rotation entries to sign.
400Validation error
401Missing or invalid authentication
403API key lacks the required scope
422Signer not configured, unchanged signer, nothing to rotate, payments in flight, or a SubscriptionManager address that returned no data: no contract, a different contract, or a node that has not seen it yet (manager_unreachable).

Response body

FieldTypeRequiredDescription
objectenum: signer_rotationyes
current_signerstringyes
new_signerstringyes
new_factory_addressstringyes
merchant_idstringyes
settlement_addressstringyes
rotationsobject[]yes

rotations

FieldTypeRequiredDescription
chainstringyes
contract_addressstringyes
current_signerstringyes
new_factory_addressstringyes
metafactory_addressstringyes
set_factory_nonceintegeryes
statusenum: pending | already_rotatedyes

Example Response

{
  "object": "signer_rotation",
  "current_signer": "0x1234abcd1234abcd1234abcd1234abcd1234abcd",
  "new_signer": "0x5678ef015678ef015678ef015678ef015678ef01",
  "new_factory_address": "0xfaceb00cfaceb00cfaceb00cfaceb00cfaceb00c",
  "merchant_id": "0x750ba0a7160fc57611beb7d07de10a83425eb034e2daf679f7069347751ab566",
  "settlement_address": "0xabcd1234abcd1234abcd1234abcd1234abcd1234",
  "rotations": [
    {
      "chain": "eip155:11155111",
      "contract_address": "0xdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef",
      "current_signer": "0x1234abcd1234abcd1234abcd1234abcd1234abcd",
      "new_factory_address": "0xfaceb00cfaceb00cfaceb00cfaceb00cfaceb00c",
      "metafactory_address": "0xc0ffee254729296a45a3885639ac7e10f9d54979",
      "set_factory_nonce": 0,
      "status": "pending"
    }
  ]
}

Error Response

Error (e.g. 400)

{
  "error": {
    "type": "validation_error",
    "message": "amount must be a positive number",
    "param": "amount"
  }
}
Last updated on

Start building

XO

Request Demo

Schedule a call with our team

Select a productArrow right

Start building
Grateful

Contact Us

We're here to help