Save customer billing address

Overview

Create or update (on the user's latest row) the billing address for user_id. The stored name comes from the user's person firstname + lastname (client-supplied names are ignored).

Prerequisites

  • A bearer token in the Authorization header.

Base URL

EnvironmentURL
Productionhttps://production-api.shoutaboutus.com
Developmenthttps://development-api.shoutaboutus.com

Endpoint

POST /api/v1/billing-address/save

Authentication

  • Requires a bearer token in the Authorization: Bearer <bearer-token> header.

  • Bearer account / partner token.

  • user_id validated by an ownership check (must be in the caller's hierarchy).

Rate limit

  • No rate limit.

Request body

FieldTypeRequiredDescription
user_idintegerRequiredMust be an existing user and must belong to caller's hierarchy (an ownership check).
companystringRequiredmax:255; no angle brackets (NameNoAngleBrackets). Stored as company_name.
billing_emailstringRequiredValid email (email:rfc,dns). Stored as email.
mobilestringOptionalmax:20. Stored as phone.
billing_addressstringRequiredmax:255; no angle brackets. Stored as address.
zipcodestringRequiredmin:3, max:10. Stored as postal_code.
city_idintegerRequiredMust be an existing city.
signup_business_idintegerOptionalMust be an existing record. When set and its update_address_user_notify = 1, syncs the store's company address.
{
  "user_id": "<userId>",
  "company": "Acme Corp",
  "billing_email": "[email protected]",
  "mobile": "5551234567",
  "billing_address": "123 Main St",
  "zipcode": "90210",
  "city_id": "<cityId>",
  "signup_business_id": null
}

How it works

  • 200{ data: {.} } with the persisted BillingAddress model (fields: email, phone, postal_code, address, company_name, id, timestamps).
  • 422 — validation failure (invalid email, out-of-scope user_id, angle brackets in text fields, etc.).

Response

200 OK · 200

{
  "data": {
    "user_id": 3,
    "name": "Test User",
    "email": "[email protected]",
    "phone": "5551234567",
    "city_id": 456,
    "postal_code": "90210",
    "address": "123 Main St",
    "company_name": "Acme Corp",
    "updated_at": "2026-06-16T10:42:44.000000Z",
    "created_at": "2026-06-16T10:42:44.000000Z",
    "id": 1
  }
}

422 Validation error · 422

{
  "message": "The billing email field must be a valid email address. (and 1 more error)",
  "errors": {
    "billing_email": [
      "The billing email field must be a valid email address."
    ],
    "city_id": [
      "The selected city id is invalid."
    ]
  }
}

Errors

StatusMeaning
401The bearer token is missing, expired or invalid
422Validation error
500Unexpected server error

Example request

curl --request POST \
  --url "https://production-api.shoutaboutus.com/api/v1/billing-address/save" \
  --header 'Authorization: Bearer <bearer-token>' \
  --header 'Accept: application/json' \
  --header 'Content-Type: application/json' \
  --data '{"user_id": "<userId>", "company": "Acme Corp", "billing_email": "[email protected]", "mobile": "5551234567", "billing_address": "123 Main St", "zipcode": "90210", "city_id": "<cityId>", "signup_business_id": null}'

Notes

  • When you supply signup_business_id and that signup business has update_address_user_notify = 1, the linked store's location-account company address (phone/address/city/zip) is synced to the same values.

Did this page help you?