About Auth API

The Authorization Controller API (Auth API) is a webhook that allows you to participate in the authorization decision-making process in real time.

When SoFi Tech Solutions receives an ISO 8583 authorization request from the network, it performs initial checks such as validating the PIN, verifying account status, and checking account balance. We calculate the response code, convert the request into the Auth API webhook, and pass it to you so that you can make the final decision—whether to accept or verdict or override.

For more information, see the Authorization Controller API guide.

Versions

There are currently two supported versions of the Auth API: 2.0 and 3.0. Version 3 is a breaking change from version 2. See Differences between version 2 and version 3 in the Authorization Controller API guide for details.

Security

Use HTTPS for the Auth API webhook to ensure fundamental security is in place. SoFi Tech Solutions supports TLS 1.2.

SoFi Tech Solutions uses JSON web tokens (JWTs) to authenticate the webhook. A shared secret encodes and decodes the token.

The payload will have the following arguments:

  • iat — Issued-at time
  • exp — Expiration time
  • issgalileo

The times are expressed as Unix epoch time.

The token is created using this Python code:

import jwt
from datetime import datetime, timedelta
payload = {
    'exp': datetime.utcnow() + timedelta(seconds=5),
    'iat': datetime.utcnow(),
    'iss': 'galileo'
}
token = jwt.encode(payload, secret, algorithm='HS256')

where secret is the shared secret.

The token is placed in the Authorization header field.

Security Example

This is the header value for exp = 1534274886 and iat = 1534274881:

Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnYWxpbGVvIiwiaWF0IjoxNTM0Mjc0ODgxLCJleHAiOjE1MzQyNzQ4ODZ9.1xUk4iNFGWLo01MyJUHXRlyrNlzwPvDMSXpN38TrblU

Paths

You provide a base URL, hosted by a server in your system. SoFi Tech Solutions invokes your webhook at the /Authorization endpoint.

Examples

These are some examples of how you use the Auth API. See Overrides in the Authorization Controller API guide for details.

Overriding the response code

  1. SoFi Tech Solutions receives an authorization request, but we are not the system of record for your program. Although the transaction passes all validation checks, we cannot determine whether the account has sufficient funds, so we calculate response_code: 51 (Non-sufficient funds and not a force post).
  2. We sends the Auth API webhook to you.
  3. Because you maintain your own ledgers, you see that the account has sufficient funds, so you return response_code: 00 (Success), and the transaction is authorized.

Transfer with override

  1. SoFi Tech Solutions receives an authorization request and the cardholder has insufficient funds, so we calculate response_code: 51.
  2. We send you the Auth API webhook.
  3. You see that the account has insufficient funds, so you initiate a transfer by populating transfer_prn and transfer_amount. (This must be configured specially during product setup.)
  4. After the transfer, the cardholder has sufficient funds, so we approve the request with response_code: 00.

For examples of webhook code, see the Auth API v3 webhook examples in the Authorization Controller API guide.


© SoFi Technology Solutions, LLC 2026    Privacy Disclosure

All documentation, including but not limited to text, graphics, images, and any other content, are the exclusive property of SoFi Technology Solutions, LLC and are protected by copyright laws. These materials may not be reproduced, distributed, transmitted, displayed, or otherwise used without the prior written permission of SoFi Technology Solutions, LLC. Any unauthorized use or reproduction of these materials are expressly prohibited.