Customer / Scheduled Transactions
Document metadata
Category
Customer
Endpoint
GET https://valora.spotahome.com/api/v1/c/transactions/scheduled
Sandbox
GET https://valora-testing.laravel.cloud/api/sandbox/v1/c/transactions/scheduled
Authentication
Bearer token (long-lived API token, auth:api guard)
Token class
customer
Pagination
Supported
Filters
Supported
Version
1
Stability
stable
Deprecated
No
Last updated
2026-05-03

Scheduled Transactions

List upcoming (scheduled) payments for the authenticated customer account.

Shared conventions and base URLs live in Customer API Documentation.

API hosts: Production https://valora.spotahome.com/ (sandbox compatible); Staging / testing https://valora-testing.laravel.cloud/ (sandbox compatible).

Endpoint (production): GET https://valora.spotahome.com/api/v1/c/transactions/scheduled Endpoint (sandbox): GET https://valora-testing.laravel.cloud/api/sandbox/v1/c/transactions/scheduled


Authentication

Requirement Details
Type Bearer token (long-lived API token, auth:api guard)
How to obtain a token See Long-Lived API Token Authentication
Header Authorization: Bearer {token}
Accept Accept: application/json
Token class Customer only. Non-customer users receive HTTP 403 with message Access denied. This resource is restricted to customers. from CheckCustomerApi middleware.
Rate limit 120 requests per minute per authenticated customer.

Connection test

GET https://valora.spotahome.com/api/v1/c/transactions/scheduled?test=connection
Authorization: Bearer {token}
Accept: application/json

Response: 200 OK

{
  "message": "You are connected!",
  "accepted_params": {
    "test": "Set to \"connection\" to test API connection",
    "booking_id": "string, optional (exact booking reference)",
    "status": "string, optional (upcoming|delayed|blocked|missing_iban|missing_details|has_debt|blocked_missing_details|blocked_missing_iban|blocked_account_debtor)",
    "currency": "string, optional (e.g., EUR, USD)",
    "due_date_from": "date (YYYY-MM-DD), optional",
    "due_date_to": "date (YYYY-MM-DD), optional",
    "amount_from": "decimal, optional (e.g., 100.50)",
    "amount_to": "decimal, optional (e.g., 500.00)",
    "search": "string, optional (booking reference, account name or IBAN)",
    "page": "integer, optional (page number, default = 1)",
    "per_page": "integer, optional (items per page, default = 100, max = 500)"
  }
}

Query parameters

Parameter Type Required Description
test string No Set to connection to perform a connection test.
booking_id string No Exact booking reference.
status string No Filter by payment status. See Payment statuses.
currency string No Currency code (e.g. EUR, USD).
due_date_from date (YYYY-MM-DD) No Due date from (inclusive).
due_date_to date (YYYY-MM-DD) No Due date to (inclusive).
amount_from number No Minimum amount in major units (e.g. 100.50). Stored internally in minor units.
amount_to number No Maximum amount in major units.
search string No Search in booking_id, account_name, iban.
page integer No Page number. Default: 1.
per_page integer No Items per page. Default: 100, max: 500.

Success response

Status: 200 OK

{
  "message": "Scheduled transactions retrieved successfully.",
  "pagination": {
    "total": 5,
    "per_page": 100,
    "current_page": 1,
    "last_page": 1,
    "from": 1,
    "to": 5
  },
  "data": [
    {
      "booking_id": "BK123456",
      "amount": 120000,
      "currency": "EUR",
      "iban": "ES1234567890123456789012",
      "due_date": "2025-02-15",
      "due_date_erp": "2025-02-15",
      "status": "upcoming",
      "account_name": "John Doe",
      "b2b": false,
      "transfer_blocked": false,
      "available_bank_account": true,
      "same_account": false,
      "days_delayed": 0,
      "has_debt": false,
      "updated_at": "2025-01-15T10:30:00.000000Z"
    }
  ]
}

Scheduled transaction object

Field Type Description
booking_id string Booking reference.
amount integer Amount in minor units (cents).
currency string Currency code.
iban string Destination IBAN.
due_date date Scheduled due date.
due_date_erp date Due date as provided by the ERP.
status string Payment status. See Payment statuses.
account_name string Account holder name.
b2b boolean Whether this is a business-to-business payment.
transfer_blocked boolean Whether the transfer is currently blocked.
available_bank_account boolean Whether a valid bank account is on file.
same_account boolean Whether origin and destination are the same account.
days_delayed integer Number of days past the due date (0 when not delayed).
has_debt boolean Whether the account has an outstanding debt.
updated_at string (ISO 8601) Last update timestamp.

No results response

Status: 404 Not Found

Example response

{
  "message": "No scheduled transactions found for the given filters.",
  "pagination": {
    "total": 0,
    "per_page": 100,
    "current_page": 1,
    "last_page": 1,
    "from": null,
    "to": null
  },
  "data": []
}

Response notes

  • pagination.total is 0 when the filters match no scheduled payments.
  • data is always an array.
  • Consumers can treat 404 as "no matching rows" without a schema change.

Payment statuses

Status Description
upcoming Scheduled and ready — no issues detected.
delayed Due date has passed but no blocking issue detected.
blocked Stopped by an external service.
missing_iban No valid IBAN on file for this booking.
missing_details One or more required details are missing.
has_debt Account has an outstanding debt; payment may be held.
blocked_missing_details Blocked and missing required details.
blocked_missing_iban Blocked because no valid IBAN is on file.
blocked_account_debtor Blocked because the account has a debt.

Errors

Status Meaning
404 Not Found No scheduled transactions matched the filters.
{
  "message": "No scheduled transactions found for the given filters.",
  "data": []
}

Notes

  • amount_from and amount_to accept major units; all amounts in the response are in minor units (cents).
  • Results are ordered by due_date ascending (soonest first).
  • Sensitive employee fields (account_manager, comment, tenant_email, missing_details, etc.) are not included in the response.