Scheduled maintenanceScheduled maintenance: PayWise infrastructure maintenance is planned from Friday, October 9 at 7:00 p.m. ET through Monday, October 12 at 8:00 a.m. ET. Sandbox and Production services may experience intermittent interruptions during this period. Existing PayWise service URLs and SFTP hostnames will remain unchanged.
Skip to main content

Create account session

Resolves account status from lookup details and returns a short-lived session token for downstream account operations.

Account API access is restricted

Portal-created sandbox test app accounts do not grant your project direct Account API access.

If your project is not approved for Account API access, /account/* calls return HTTP 403 with PW_ACCOUNT_ACCESS_REQUIRED.

See /getting-started/sandbox-account-setup.

Endpoint​

POST /account/account_session

Query Parameters​

  • version (string, required) - API contract version. Use exactly 2024-10-01.
  • diagnostics (boolean, optional) - Non-production docs only. Set true to include extra diagnostic metadata (for example observed_client_ip).

Header Parameters​

  • PW-subscription-key (string, required)
  • PW-origin-country (string, required)
  • PW-request-date (string, required) - UTC request timestamp formatted as YYYY-MM-DD HH:mm:ss.
  • PW-ip-address (string, required)
  • User-Agent (string, required)
  • PW-request-id (string, required) - Caller-generated UUID used for idempotent tracing through PayWise account_session.
  • Accept (string, optional) - If provided, must include application/json.

Header Constraints​

KeyDescriptionExampleData typeRequirementField Length
PW-subscription-keyDeveloper key available after portal registration. Production key is shared on request.eed0d85c530c4b26a91d09b783d8fab3stringmandatory32
PW-origin-countryISO Alpha-2 country code where the transaction is created.TTstringmandatory2
PW-request-dateCurrent request timestamp. Format: YYYY-MM-DD HH:mm:ss (UTC).2014-10-08 16:01:31stringmandatory19
PW-ip-addressFixed institution IP used for PayWise network-level validation.255.255.255.255stringconditional8-16
User-AgentIn programmable environments, this avoids running into Cloudflare issues.Mozilla/5.0 (Windows NT 10.0; Win64; x64)stringmandatory255

Request Body​

{
"lookup_type": "MOBILE",
"lookup_value": "18680001234",
"institution_name": "ExampleInstitution",
"first_name": "First",
"last_name": "Last",
"email": "[email protected]"
}

Downloads​

Response semantics​

For this endpoint, an HTTP 200 does not always mean a usable account session was issued.

Callers must inspect:

  • data.account.account_status
  • data.session.session_token

Current public behavior:

  • available -> HTTP 200, status: "success", usable data.session.session_token
  • unavailable -> HTTP 200, status: "success", data.session: null
  • unknown -> HTTP 404, status: "error"
  • ambiguous match -> HTTP 409, status: "error"

If data.account.account_status !== "available", do not assume the account can be used for downstream session-based operations.

Example: unavailable account still returns HTTP 200​

{
"status": "success",
"code": 200,
"message": "Account is currently unavailable or not active. Please try again later or contact PayWise Support.",
"request_id": "3fc9cf50-444f-4c1f-b687-e836d47331b7",
"timestamp": "2026-08-23T18:17:06.000Z",
"data": {
"request_id": "3fc9cf50-444f-4c1f-b687-e836d47331b7",
"version": "2024-10-01",
"lookup": {
"type": "EMAIL",
"value_masked": "gl**********@email.com"
},
"account": {
"account_status": "unavailable",
"account_number": null,
"account_type": "personal",
"display_name": "Gloria Joseph",
"country": "TT"
},
"session": null,
"resolution": {
"usable": false,
"reason_code": "ACCOUNT_UNAVAILABLE"
}
}
}

Responses​

200 - Wrapper-normalized response envelope (success cases).​

Example: success​

{
"status": "success",
"code": 200,
"message": "Account is in good standing.",
"request_id": "9d9078a9-fdf2-43cc-8e5a-f6264cd4a2fb",
"timestamp": "2026-03-01T18:42:11.913Z",
"data": {
"request_id": "9d9078a9-fdf2-43cc-8e5a-f6264cd4a2fb",
"version": "2024-10-01",
"lookup": {
"type": "MOBILE",
"value_masked": "******2220"
},
"account": {
"account_status": "available",
"account_number": "001234567890",
"account_type": "personal",
"display_name": "Icon Gilbert",
"country": "TT"
},
"session": {
"session_token": "H6QJ4F5JY4",
"expires_at": "2026-03-01T18:57:11.913Z",
"ttl_seconds": 900,
"single_use": false
}
}
}

Example: unavailable​

{
"status": "success",
"code": 200,
"message": "Account is currently unavailable or not active. Please try again later or contact PayWise Support.",
"request_id": "3fc9cf50-444f-4c1f-b687-e836d47331b7",
"timestamp": "2026-08-23T18:17:06.000Z",
"data": {
"request_id": "3fc9cf50-444f-4c1f-b687-e836d47331b7",
"version": "2024-10-01",
"lookup": {
"type": "EMAIL",
"value_masked": "gl**********@email.com"
},
"account": {
"account_status": "unavailable",
"account_number": null,
"account_type": "personal",
"display_name": "Gloria Joseph",
"country": "TT"
},
"session": null,
"resolution": {
"usable": false,
"reason_code": "ACCOUNT_UNAVAILABLE"
}
}
}

404 - Wrapper-normalized response envelope (404)​

Example: unknown​

{
"status": "error",
"code": 404,
"message": "Account not found",
"request_id": "3fc9cf50-444f-4c1f-b687-e836d47331b7",
"timestamp": "2026-08-23T18:15:20.000Z",
"data": {
"errorCode": "ACCOUNT_NOT_FOUND",
"request_id": "3fc9cf50-444f-4c1f-b687-e836d47331b7",
"details": {
"lookup_type": "EMAIL"
}
}
}

409 - Wrapper-normalized response envelope (409)​

Example: error​

{
"status": "error",
"code": 409,
"message": "Multiple matches found. Please use the email key in the body.",
"request_id": "9d9078a9-fdf2-43cc-8e5a-f6264cd4a2fb",
"timestamp": "2026-03-01T18:42:12.215Z",
"data": {
"errorCode": "AMBIGUOUS_MATCH",
"request_id": "9d9078a9-fdf2-43cc-8e5a-f6264cd4a2fb",
"details": {
"lookup_type": "MOBILE"
}
}
}

Notes​

This endpoint page is generated from openapi/pw-wrappers.2024-10-01.yaml.