DRAFTThe sandbox is not live yet. Every example here was returned by the platform's code in a test run on 2026-10-28, priced with example fees: no fee amount in them is an SMP price. Paths and fields can change before launch. Live keys are issued only after our bank program is approved.Sandbox not live yet · examples from a test run on 2026-10-28 · example fees

Reference · 5 operations

Debit schedules

Recurring debits under one standing authorization the payer agrees to, optionally timed to land after the payer's payday.

Sandboxhttps://sandbox.socialmatterspay.com
Livehttps://api.socialmatterspay.com
POST /v1/debit-schedules/authorization-text

The standing authorization's exact words, to show the payer before they agree

Secret key

Host https://api.socialmatterspay.com · https://sandbox.socialmatterspay.com

Show text to the payer word for word, next to the button they press to agree, then send text_sha256 as authorization_text_sha256 with POST /v1/debit-schedules (required for WEB and TEL). The words name the amount, what it is for, the cadence, start date and number of debits, the payday window when there is one, the account and how to revoke. Fetch them again if any of those change.

Request body

FieldNotes
bank_account_id requiredstring—
amount_cents requiredintegerThe same every time; at most the account's per-payment limit. 1 to 99999999
interval requiredenumone of weekly, biweekly, monthly
start_date requiredstring (date)The first scheduled date, today to a year ahead. Monthly keeps its day (the last day of shorter months).
total_countintegerNumber of debits; leave out for until revoked. 1 to 520
payday_window_daysintegerDays after each scheduled date the payer agrees a debit may move to, to land after payday (weekly up to 3, biweekly 7, monthly 10). Above 0 needs payday-aware debits on. 0 to 10. default 0
description requiredstringWhat the payer pays for; it goes into the authorization words. up to 100 characters
entry_codeenumone of WEB, PPD, CCD, TEL. default "WEB"

Responses

StatusMeaning
200The words and their SHA-256
400Error — error shape and codes
403Error — error shape and codes
404Error — error shape and codes
422Error — error shape and codes

Fields of data (200)

FieldNotes
objectstring = "debit_schedule_authorization_text"—
textstring—
text_sha256string—
merchant_namestring—
amount_centsinteger—
amount_descriptionstring—
frequencystring = "recurring"—
schedule_descriptionstring—
payday_window_daysinteger—
entry_codeenumone of WEB, PPD, CCD, TEL
bank_accountobject
3 child fields
idstring—
bank_namestring—
last_fourstring—
ach_companyobject | nullThe ACH company the payer's bank shows on the debit (Company Name and Company Identification); null when not configured
2 child fields
namestringup to 16 characters
idstringup to 10 characters
Example

The standing authorization to show the payer

POST /v1/debit-schedules/authorization-text
curl -X POST https://sandbox.socialmatterspay.com/v1/debit-schedules/authorization-text \
  -H 'Authorization: Bearer sk_sandbox_…' \
  -H 'Content-Type: application/json' \
  -d '{
  "bank_account_id": "0fb9dd42-2bd9-49c1-9c85-68872c5cee57",
  "amount_cents": 4900,
  "interval": "biweekly",
  "start_date": "2026-11-04",
  "total_count": 12,
  "payday_window_days": 3,
  "description": "Shop supplies plan"
}'
Response · 200
HTTP 200
Cache-Control: no-store

{
  "data": {
    "object": "debit_schedule_authorization_text",
    "text": "By agreeing, you authorize Northwind Supply to make recurring electronic debits from your bank account ending in 9606 for Shop supplies plan: $49.00 every two weeks on Wednesday, starting 2026-11-04, 12 times. If a scheduled date is not a business day, that debit is made the next business day. To land after your payday, a debit may instead be made on a later business day up to 3 days after its scheduled date, never before it. This authorization ends after the last debit, unless you revoke it sooner. You may revoke it at any time by contacting Northwind Supply, with the understanding that it may take up to 3 business days to process.",
    "text_sha256": "59b344d797487ea4d4830a8a5cb8a5a2d24ffa7a2aca0794228140152dc3c853",
    "merchant_name": "Northwind Supply",
    "amount_cents": 4900,
    "amount_description": "$49.00",
    "frequency": "recurring",
    "schedule_description": "every two weeks on Wednesday, starting 2026-11-04, 12 times",
    "payday_window_days": 3,
    "entry_code": "WEB",
    "bank_account": {
      "id": "0fb9dd42-2bd9-49c1-9c85-68872c5cee57",
      "bank_name": "Plaid Checking (sandbox)",
      "last_four": "9606"
    },
    "ach_company": null
  }
}
GET /v1/debit-schedules

List debit schedules, newest first, each with its next debit

Secret key

Host https://api.socialmatterspay.com · https://sandbox.socialmatterspay.com

Parameters

FieldNotes
limitquery · integer1 to 100. default 25
offsetquery · integerdefault 0
statusquery · stringone of active, cancelled, completed
payer_idquery · string—

Responses

StatusMeaning
200A page of debit schedules (without their past debits)
400Error — error shape and codes

Fields of each item of data (200)

FieldNotes
idstring—
objectstring = "debit_schedule"—
statusenumone of active, cancelled, completed
amount_centsinteger—
currencystring = "USD"—
intervalenumone of weekly, biweekly, monthly
start_datestring (date)—
total_countinteger | null—
payday_window_daysinteger—
schedule_descriptionstring—
descriptionstring—
entry_codeenumone of WEB, PPD, CCD, TEL
payer_idstring—
bank_account_idstring—
authorization_idstring—
statement_descriptorstring | null—
external_idstring | null—
metadataobject | nullYour own keys and values, as you sent them; null when there are none. Each debit's payment carries them, plus debit_schedule_id and debit_sequence. at most 18 keys
next_debitobject | nullOne debit of a schedule. The payer's payday and balances are never shown, only when the debit goes.
8 child fields
sequenceinteger—
due_datestring (date)The date the authorization names
latest_datestring (date)The last day it may be taken
planned_datestring (date)—
timingenumone of scheduled_date, after_payday
statusenumone of scheduled, submitted, declined, failed, missed, cancelled
payment_idstring | null—
failurestring | null—
debitsarray of objectEvery debit so far and the next; not in lists Its fields are listed under listDebitSchedules · next_debit.
cancelled_atstring | null (date-time)—
cancel_reasonstring | null—
created_atstring (date-time)—

Lists also return pagination: total, limit, offset, has_more.

Example

List debit schedules

GET /v1/debit-schedules
curl https://sandbox.socialmatterspay.com/v1/debit-schedules \
  -H 'Authorization: Bearer sk_sandbox_…'
Response · 200
HTTP 200
Cache-Control: no-store

{
  "data": [
    {
      "id": "ds_b2a7bd4a-cb37-4e32-a367-166bf081fea2",
      "object": "debit_schedule",
      "status": "active",
      "amount_cents": 4900,
      "currency": "USD",
      "interval": "biweekly",
      "start_date": "2026-11-04",
      "total_count": 12,
      "payday_window_days": 3,
      "schedule_description": "every two weeks on Wednesday, starting 2026-11-04, 12 times",
      "description": "Shop supplies plan",
      "entry_code": "WEB",
      "payer_id": "faac6000-d575-4826-af0a-cfa4e0f6bc9a",
      "bank_account_id": "0fb9dd42-2bd9-49c1-9c85-68872c5cee57",
      "authorization_id": "0c1ef864-b5cb-465e-88fc-2f68c61ba5f3",
      "statement_descriptor": null,
      "external_id": "plan_2201",
      "metadata": null,
      "next_debit": {
        "sequence": 1,
        "due_date": "2026-11-04",
        "latest_date": "2026-11-06",
        "planned_date": "2026-11-04",
        "timing": "scheduled_date",
        "status": "scheduled",
        "payment_id": null,
        "failure": null
      },
      "cancelled_at": null,
      "cancel_reason": null,
      "created_at": "2026-10-30T00:28:43.764Z"
    }
  ],
  "pagination": {
    "total": 1,
    "limit": 25,
    "offset": 0,
    "has_more": false
  }
}
POST /v1/debit-schedules

Set up a recurring debit under one standing authorization

Secret key Idempotency-Key required

Host https://api.socialmatterspay.com · https://sandbox.socialmatterspay.com

Records the payer's standing authorization (the exact words, kept two years past its end) and plans the first debit. Each debit is a normal payment, authorized before debit like any other (risk, limits, velocity), with metadata.debit_schedule_id and metadata.debit_sequence; its webhooks are the payment's. Debits are taken from 14:00 to 22:00 UTC on their planned date, a few per merchant at a time; one that couldn't be taken by its latest_date is missed, never late. The same Idempotency-Key with the same body returns the same schedule (200); with a different body it is a 409.

Parameters

FieldNotes
Idempotency-Key requiredheader · string1–255 characters. printable characters, no spaces; see Idempotency

Request body

FieldNotes
bank_account_id requiredstring—
amount_cents requiredintegerThe same every time; at most the account's per-payment limit. 1 to 99999999
interval requiredenumone of weekly, biweekly, monthly
start_date requiredstring (date)The first scheduled date, today to a year ahead. Monthly keeps its day (the last day of shorter months).
total_countintegerNumber of debits; leave out for until revoked. 1 to 520
payday_window_daysintegerDays after each scheduled date the payer agrees a debit may move to, to land after payday (weekly up to 3, biweekly 7, monthly 10). Above 0 needs payday-aware debits on. 0 to 10. default 0
description requiredstringWhat the payer pays for; it goes into the authorization words. up to 100 characters
entry_codeenumone of WEB, PPD, CCD, TEL. default "WEB"
authorization_text_sha256stringRequired for WEB and TEL; the SHA-256 of the words shown. pattern ^[0-9a-f]{64}$
payer_ipstringRequired for WEB
payer_user_agentstringRequired for WEB
authorized_atstring (date-time)—
statement_descriptorstringpattern ^[A-Za-z0-9 .&-]{1,12}$
external_idstringup to 255 characters
metadataobjectat most 18 keys

Responses

StatusMeaning
200Debit schedule (DebitSchedule)
201Debit schedule (DebitSchedule)
400Error — error shape and codes
403Error — error shape and codes
404Error — error shape and codes
409Error — error shape and codes
422Error — error shape and codes

Fields of data (200)

The same fields as under listDebitSchedules.

Example

Set up the recurring debit

POST /v1/debit-schedules
curl -X POST https://sandbox.socialmatterspay.com/v1/debit-schedules \
  -H 'Idempotency-Key: plan_robin_hale' \
  -H 'Authorization: Bearer sk_sandbox_…' \
  -H 'Content-Type: application/json' \
  -d '{
  "bank_account_id": "0fb9dd42-2bd9-49c1-9c85-68872c5cee57",
  "amount_cents": 4900,
  "interval": "biweekly",
  "start_date": "2026-11-04",
  "total_count": 12,
  "payday_window_days": 3,
  "description": "Shop supplies plan",
  "authorization_text_sha256": "59b344d797487ea4d4830a8a5cb8a5a2d24ffa7a2aca0794228140152dc3c853",
  "payer_ip": "203.0.113.7",
  "payer_user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 14_6) AppleWebKit/605.1.15 Safari/605.1.15",
  "external_id": "plan_2201"
}'
Response · 201
HTTP 201
Cache-Control: no-store

{
  "data": {
    "id": "ds_b2a7bd4a-cb37-4e32-a367-166bf081fea2",
    "object": "debit_schedule",
    "status": "active",
    "amount_cents": 4900,
    "currency": "USD",
    "interval": "biweekly",
    "start_date": "2026-11-04",
    "total_count": 12,
    "payday_window_days": 3,
    "schedule_description": "every two weeks on Wednesday, starting 2026-11-04, 12 times",
    "description": "Shop supplies plan",
    "entry_code": "WEB",
    "payer_id": "faac6000-d575-4826-af0a-cfa4e0f6bc9a",
    "bank_account_id": "0fb9dd42-2bd9-49c1-9c85-68872c5cee57",
    "authorization_id": "0c1ef864-b5cb-465e-88fc-2f68c61ba5f3",
    "statement_descriptor": null,
    "external_id": "plan_2201",
    "metadata": null,
    "next_debit": {
      "sequence": 1,
      "due_date": "2026-11-04",
      "latest_date": "2026-11-06",
      "planned_date": "2026-11-04",
      "timing": "scheduled_date",
      "status": "scheduled",
      "payment_id": null,
      "failure": null
    },
    "debits": [
      {
        "sequence": 1,
        "due_date": "2026-11-04",
        "latest_date": "2026-11-06",
        "planned_date": "2026-11-04",
        "timing": "scheduled_date",
        "status": "scheduled",
        "payment_id": null,
        "failure": null
      }
    ],
    "cancelled_at": null,
    "cancel_reason": null,
    "created_at": "2026-10-30T00:28:43.764Z"
  }
}
GET /v1/debit-schedules/{id}

Get a debit schedule with every debit so far and the next one

Secret key

Host https://api.socialmatterspay.com · https://sandbox.socialmatterspay.com

Parameters

FieldNotes
id requiredpath · string—

Responses

StatusMeaning
200Debit schedule (DebitSchedule)
404Error — error shape and codes

Fields of data (200)

The same fields as under listDebitSchedules.

Example

A schedule with its first debit taken

GET /v1/debit-schedules/ds_b2a7bd4a-cb37-4e32-a367-166bf081fea2
curl https://sandbox.socialmatterspay.com/v1/debit-schedules/ds_b2a7bd4a-cb37-4e32-a367-166bf081fea2 \
  -H 'Authorization: Bearer sk_sandbox_…'
Response · 200
HTTP 200
Cache-Control: no-store

{
  "data": {
    "id": "ds_b2a7bd4a-cb37-4e32-a367-166bf081fea2",
    "object": "debit_schedule",
    "status": "active",
    "amount_cents": 4900,
    "currency": "USD",
    "interval": "biweekly",
    "start_date": "2026-11-04",
    "total_count": 12,
    "payday_window_days": 3,
    "schedule_description": "every two weeks on Wednesday, starting 2026-11-04, 12 times",
    "description": "Shop supplies plan",
    "entry_code": "WEB",
    "payer_id": "faac6000-d575-4826-af0a-cfa4e0f6bc9a",
    "bank_account_id": "0fb9dd42-2bd9-49c1-9c85-68872c5cee57",
    "authorization_id": "0c1ef864-b5cb-465e-88fc-2f68c61ba5f3",
    "statement_descriptor": null,
    "external_id": "plan_2201",
    "metadata": null,
    "next_debit": {
      "sequence": 2,
      "due_date": "2026-11-18",
      "latest_date": "2026-11-20",
      "planned_date": "2026-11-18",
      "timing": "scheduled_date",
      "status": "scheduled",
      "payment_id": null,
      "failure": null
    },
    "debits": [
      {
        "sequence": 1,
        "due_date": "2026-11-04",
        "latest_date": "2026-11-06",
        "planned_date": "2026-11-04",
        "timing": "scheduled_date",
        "status": "submitted",
        "payment_id": "1cb29cc3-79f4-48b2-bcf7-fec8686e5a0b",
        "failure": null
      },
      {
        "sequence": 2,
        "due_date": "2026-11-18",
        "latest_date": "2026-11-20",
        "planned_date": "2026-11-18",
        "timing": "scheduled_date",
        "status": "scheduled",
        "payment_id": null,
        "failure": null
      }
    ],
    "cancelled_at": null,
    "cancel_reason": null,
    "created_at": "2026-10-30T00:28:43.764Z"
  }
}
POST /v1/debit-schedules/{id}/cancel

Stop a schedule (the payer revoked it, or you end it); revokes its authorization

Secret key

Host https://api.socialmatterspay.com · https://sandbox.socialmatterspay.com

No further debit is taken. A debit already sent to the bank is not recalled; void or refund that payment.

Parameters

FieldNotes
id requiredpath · string—

Request body

FieldNotes
reasonstringup to 200 characters

Responses

StatusMeaning
200Debit schedule (DebitSchedule)
404Error — error shape and codes
409Error — error shape and codes

Fields of data (200)

The same fields as under listDebitSchedules.

Example

The payer revoked it

POST /v1/debit-schedules/ds_b2a7bd4a-cb37-4e32-a367-166bf081fea2/cancel
curl -X POST https://sandbox.socialmatterspay.com/v1/debit-schedules/ds_b2a7bd4a-cb37-4e32-a367-166bf081fea2/cancel \
  -H 'Authorization: Bearer sk_sandbox_…' \
  -H 'Content-Type: application/json' \
  -d '{
  "reason": "The payer revoked it by phone"
}'
Response · 200
HTTP 200
Cache-Control: no-store

{
  "data": {
    "id": "ds_b2a7bd4a-cb37-4e32-a367-166bf081fea2",
    "object": "debit_schedule",
    "status": "cancelled",
    "amount_cents": 4900,
    "currency": "USD",
    "interval": "biweekly",
    "start_date": "2026-11-04",
    "total_count": 12,
    "payday_window_days": 3,
    "schedule_description": "every two weeks on Wednesday, starting 2026-11-04, 12 times",
    "description": "Shop supplies plan",
    "entry_code": "WEB",
    "payer_id": "faac6000-d575-4826-af0a-cfa4e0f6bc9a",
    "bank_account_id": "0fb9dd42-2bd9-49c1-9c85-68872c5cee57",
    "authorization_id": "0c1ef864-b5cb-465e-88fc-2f68c61ba5f3",
    "statement_descriptor": null,
    "external_id": "plan_2201",
    "metadata": null,
    "next_debit": null,
    "debits": [
      {
        "sequence": 1,
        "due_date": "2026-11-04",
        "latest_date": "2026-11-06",
        "planned_date": "2026-11-04",
        "timing": "scheduled_date",
        "status": "submitted",
        "payment_id": "1cb29cc3-79f4-48b2-bcf7-fec8686e5a0b",
        "failure": null
      },
      {
        "sequence": 2,
        "due_date": "2026-11-18",
        "latest_date": "2026-11-20",
        "planned_date": "2026-11-18",
        "timing": "scheduled_date",
        "status": "cancelled",
        "payment_id": null,
        "failure": null
      }
    ],
    "cancelled_at": "2026-11-04T03:00:00.801Z",
    "cancel_reason": "The payer revoked it by phone",
    "created_at": "2026-10-30T00:28:43.764Z"
  }
}