Update seller billing mandate readiness (admin)
curl --request PUT \
--url https://api.interchange.io/api/v2/storefront/billing-mandates/{mandateUid}/readiness \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"idempotencyKey": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"expectedMandateRevision": 4503599627370495,
"expectedReadinessRevision": 4503599627370495,
"reasonCode": "<string>",
"reasonSummary": "<string>"
}
'import requests
url = "https://api.interchange.io/api/v2/storefront/billing-mandates/{mandateUid}/readiness"
payload = {
"idempotencyKey": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"expectedMandateRevision": 4503599627370495,
"expectedReadinessRevision": 4503599627370495,
"reasonCode": "<string>",
"reasonSummary": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
idempotencyKey: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
expectedMandateRevision: 4503599627370495,
expectedReadinessRevision: 4503599627370495,
reasonCode: '<string>',
reasonSummary: '<string>'
})
};
fetch('https://api.interchange.io/api/v2/storefront/billing-mandates/{mandateUid}/readiness', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"data": {
"mandateUid": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"sellerCustomerId": 4503599627370495,
"storefrontId": "<string>",
"revision": 4503599627370495,
"relationshipKind": "seller_self_serve",
"payeeRef": "<string>",
"operator": {
"domain": "<string>",
"scope": "whole_operator",
"unitId": "<string>"
},
"liablePayerRef": "<string>",
"paymentAuthorityHolderRef": "<string>",
"advertiserScopeKind": "exact_advertiser",
"advertisers": [
{
"advertiserId": "<string>",
"advertiserCustomerId": 4503599627370495,
"brand": {
"domain": "<string>",
"id": "<string>",
"countries": [
"AD"
]
},
"operator": {
"domain": "<string>",
"scope": "whole_operator",
"unitId": "<string>"
},
"fixedCurrency": "<string>",
"buyerSelectedTimezone": "<string>",
"sandbox": true,
"bindingEpoch": "<string>",
"identityFingerprint": "<string>",
"binding": {
"relationshipRef": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"relationshipVersion": 4503599627370495,
"bindingUid": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"bindingRevision": 4503599627370495
}
}
],
"billing": {
"mode": "seller_direct_invoice",
"party": "seller",
"authorityKind": "invoice_authority",
"authorityRef": "<string>"
},
"terms": {
"currency": "<string>",
"paymentTermsDays": 182,
"termsRef": "<string>",
"perTransactionLimitMinor": "<string>",
"aggregateLimitMinor": "<string>",
"aggregateLimitPeriodDays": 183
},
"lifecycleState": "draft",
"effectiveFrom": "2023-11-07T05:31:56Z",
"effectiveUntil": "2023-11-07T05:31:56Z",
"provenance": {
"kind": "seller_admin_contract",
"reference": "<string>"
},
"reason": "<string>",
"authoredAt": "2023-11-07T05:31:56Z",
"readiness": {
"mandateRevision": 4503599627370495,
"readinessRevision": 4503599627370495,
"status": "pending",
"reasonCode": "<string>",
"reasonSummary": "<string>",
"projectedAt": "2023-11-07T05:31:56Z",
"billingMandateReady": true
},
"custody": {
"cardControlledBy": "liable_payer_or_payment_authority_holder",
"advertiserOwnsPaymentMethod": false,
"organizationCardReused": false,
"interchangeRole": "no_card_custody_no_media_receivable"
}
},
"error": null
}{
"data": null,
"error": {
"code": "<string>",
"message": "<string>",
"field": "<string>",
"details": {}
}
}{
"data": null,
"error": {
"code": "<string>",
"message": "<string>",
"field": "<string>",
"details": {}
}
}{
"data": null,
"error": {
"code": "<string>",
"message": "<string>",
"field": "<string>",
"details": {}
}
}Storefront Billing
Update seller billing mandate readiness (admin)
Compare-and-swap the readiness projection for the exact current mandate revision. billingMandateReady is necessary mandate evidence only: it grants no complete billing, proposal, Campaign, execution, or spend authority and does not prove a funded or invoice rail. This endpoint performs no payment or invoice execution. Admin-only.
PUT
/
billing-mandates
/
{mandateUid}
/
readiness
Update seller billing mandate readiness (admin)
curl --request PUT \
--url https://api.interchange.io/api/v2/storefront/billing-mandates/{mandateUid}/readiness \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"idempotencyKey": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"expectedMandateRevision": 4503599627370495,
"expectedReadinessRevision": 4503599627370495,
"reasonCode": "<string>",
"reasonSummary": "<string>"
}
'import requests
url = "https://api.interchange.io/api/v2/storefront/billing-mandates/{mandateUid}/readiness"
payload = {
"idempotencyKey": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"expectedMandateRevision": 4503599627370495,
"expectedReadinessRevision": 4503599627370495,
"reasonCode": "<string>",
"reasonSummary": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
idempotencyKey: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
expectedMandateRevision: 4503599627370495,
expectedReadinessRevision: 4503599627370495,
reasonCode: '<string>',
reasonSummary: '<string>'
})
};
fetch('https://api.interchange.io/api/v2/storefront/billing-mandates/{mandateUid}/readiness', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"data": {
"mandateUid": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"sellerCustomerId": 4503599627370495,
"storefrontId": "<string>",
"revision": 4503599627370495,
"relationshipKind": "seller_self_serve",
"payeeRef": "<string>",
"operator": {
"domain": "<string>",
"scope": "whole_operator",
"unitId": "<string>"
},
"liablePayerRef": "<string>",
"paymentAuthorityHolderRef": "<string>",
"advertiserScopeKind": "exact_advertiser",
"advertisers": [
{
"advertiserId": "<string>",
"advertiserCustomerId": 4503599627370495,
"brand": {
"domain": "<string>",
"id": "<string>",
"countries": [
"AD"
]
},
"operator": {
"domain": "<string>",
"scope": "whole_operator",
"unitId": "<string>"
},
"fixedCurrency": "<string>",
"buyerSelectedTimezone": "<string>",
"sandbox": true,
"bindingEpoch": "<string>",
"identityFingerprint": "<string>",
"binding": {
"relationshipRef": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"relationshipVersion": 4503599627370495,
"bindingUid": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"bindingRevision": 4503599627370495
}
}
],
"billing": {
"mode": "seller_direct_invoice",
"party": "seller",
"authorityKind": "invoice_authority",
"authorityRef": "<string>"
},
"terms": {
"currency": "<string>",
"paymentTermsDays": 182,
"termsRef": "<string>",
"perTransactionLimitMinor": "<string>",
"aggregateLimitMinor": "<string>",
"aggregateLimitPeriodDays": 183
},
"lifecycleState": "draft",
"effectiveFrom": "2023-11-07T05:31:56Z",
"effectiveUntil": "2023-11-07T05:31:56Z",
"provenance": {
"kind": "seller_admin_contract",
"reference": "<string>"
},
"reason": "<string>",
"authoredAt": "2023-11-07T05:31:56Z",
"readiness": {
"mandateRevision": 4503599627370495,
"readinessRevision": 4503599627370495,
"status": "pending",
"reasonCode": "<string>",
"reasonSummary": "<string>",
"projectedAt": "2023-11-07T05:31:56Z",
"billingMandateReady": true
},
"custody": {
"cardControlledBy": "liable_payer_or_payment_authority_holder",
"advertiserOwnsPaymentMethod": false,
"organizationCardReused": false,
"interchangeRole": "no_card_custody_no_media_receivable"
}
},
"error": null
}{
"data": null,
"error": {
"code": "<string>",
"message": "<string>",
"field": "<string>",
"details": {}
}
}{
"data": null,
"error": {
"code": "<string>",
"message": "<string>",
"field": "<string>",
"details": {}
}
}{
"data": null,
"error": {
"code": "<string>",
"message": "<string>",
"field": "<string>",
"details": {}
}
}Authorizations
API key or access token
Path Parameters
Pattern:
^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$Body
application/json
Compare-and-swap update to the mandate-readiness projection. Ready is accepted only for the current active/effective mandate and complete current advertiser identities. Caller-authored reason codes and summaries reject payment- or provider-credential-shaped content before persistence.
Pattern:
^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$Required range:
0 < x <= 9007199254740991Required range:
0 <= x <= 9007199254740991Available options:
pending, ready, failed, hold Maximum string length:
100Pattern:
^[a-z0-9]+(?:_[a-z0-9]+)*$Required string length:
1 - 500