PUT
Replace the India GST supplier registration

Authorizations

Authorization
string
header
required

A secret API key. Publishable keys cannot reach this API. A key may carry an expiry, and an expired key is refused exactly like an unknown one, with a 401 that names no reason; check the key's expires_at in the dashboard rather than inferring it from a response. When a merchant rolls a key's secret they choose a grace window of up to 3 days, and for its duration BOTH the new secret and the one it replaced authenticate, so an integration moves over on its own deploy schedule instead of at the instant the button is pressed. Move before the window closes: after it, the old secret is refused. Nothing else about this contract moves with a roll. The key keeps its id and its scopes, so the only thing an integration updates is the credential itself.

Headers

Idempotency-Key
string
required

A unique key per logical write. Replaying a request with the same key returns the first response byte for byte instead of applying the write twice.

Body

application/json

A FULL REPLACE and an upsert: a store with no registration gets one. An omitted optional key is CLEARED rather than carried over, so read the config and send every field back. THE FIVE VALUE FIELDS ARE NOT DEFAULTED. A dropped enabled would switch the merchant's invoicing off and a dropped default_rate_bps would read as 0 and tax every unclassified line at nothing, both answering 200. expected_updated_at IS REQUIRED, and null is the legal value meaning "this store has no configuration yet". A mismatch is 409 config_modified. This row has more than one writer and it is stamped onto every invoice issued after it, so a blind write does not lose a screen's worth of edits, it mints wrong legal documents until somebody notices at filing. state_code and created_by are REFUSED BY NAME rather than ignored. The state is derived from the validated GSTIN, and a state that disagreed with the registration would split every invoice against the wrong one; the actor is the api key that made the call.

gstin
string
required

The 15-character registration, for example 27AAPFU0939F1ZV. Validated for structure, GST state and the mod-36 check digit, and stored upper-cased. Its first two digits become state_code.

The registered entity name that prints on the invoice, which is often not the store's trading name.

Maximum string length: 200
default_rate_bps
integer
required

The rate applied to a line whose product carries no HSN classification, in BASIS POINTS: 18% is 1800, never 18. Zero is legal and means unclassified lines are taxed at nothing.

Required range: 0 <= x <= 10000
invoice_prefix
string
required

1 to 6 uppercase letters or digits, leading every generated invoice number (INV in INV/252600001). Changing it renumbers nothing already issued, so a store's history can carry more than one prefix.

Maximum string length: 6
enabled
boolean
required

The master switch. false refuses every issue with 409 gst_disabled and keeps every other field, which is the reversible operation this family offers instead of a delete.

expected_updated_at
string<date-time> | null
required

The updated_at you read from GET /api/v1/india-gst/config, or null if you expect this store to have no configuration yet. Anything else is 409.

address_line1
string

Registered address. Optional, and CLEARED when omitted.

address_line2
string

Registered address. Optional, and CLEARED when omitted.

city
string

Registered address. Optional, and CLEARED when omitted.

postal_code
string

Registered address. Optional, and CLEARED when omitted.

Response

Success

data
object