X-Pay Info

X-Pay connects businesses, APIs and AI agents to programmable payments. Integrate payment collection, paid API access and usage billing into your application.

X-Pay Logo

Team and KYC Verification

The team has securely submitted their personal information to SolidProof.io for verification.

In the event of any fraudulent activities, this information will be promptly reported to the relevant authorities to ensure accountability and compliance.

KYC Badge

TrustNet Score

The TrustNet Score evaluates crypto projects based on audit results, security, KYC verification, and social media presence. This score offers a quick, transparent view of a project's credibility, helping users make informed decisions in the Web3 space.

98.25
Poor Excellent

Real-Time Threat Detection

Real-time threat detection, powered by Cyvers.io, is currently not activated for this project.

This advanced feature provides continuous monitoring and instant alerts to safeguard your assets from potential security threats. Real-time detection enhances your project's security by proactively identifying and mitigating risks. For more information, click here.

Security Assessments

Static Analysis Dynamic Analysis Symbolic Execution SWC Check Manual Review
Contract address
0xe254...6764
Network
Base Mainnet
License MIT
Compiler v0.8.34+commit.80d5c536
Type ERC20 Token
Language Solidity
Onboard date 2026/10/26
Revision date 2026/10/26

Summary and Final Words

No crucial issues found

The contract does not contain issues of high or medium criticality. This means that no known vulnerabilities were found in the source code.

Contract owner cannot mint

It is not possible to mint new tokens.

Contract owner cannot blacklist addresses.

It is not possible to lock user funds by blacklisting addresses.

Contract owner cannot set high fees

The fees, if applicable, can be a maximum of 25% or lower. The contract can therefore not be locked. Please take a look in the comment section for more details.

Contract cannot be locked

Owner cannot lock any user funds.

Token cannot be burned

There is no burning within the contract without any allowances

Ownership is not renounced

The owner retains significant control, which could potentially be used to modify key contract parameters.

Contract is not upgradeable

The contract does not use proxy patterns or other mechanisms to allow future upgrades. Its behavior is locked in its current state.

Scope of Work

This audit encompasses the evaluation of the files listed below, each verified with a SHA-1 Hash. The team referenced above has provided the necessary files for assessment.

The auditing process consists of the following systematic steps:

  1. Specification Review: Analyze the provided specifications, source code, and instructions to fully understand the smart contract's size, scope, and functionality.
  2. Manual Code Examination: Conduct a thorough line-by-line review of the source code to identify potential vulnerabilities and areas for improvement.
  3. Specification Alignment: Ensure that the code accurately implements the provided specifications and intended functionalities.
  4. Test Coverage Assessment: Evaluate the extent and effectiveness of test cases in covering the codebase, identifying any gaps in testing.
  5. Symbolic Execution: Analyze the smart contract to determine how various inputs affect execution paths, identifying potential edge cases and vulnerabilities.
  6. Best Practices Evaluation: Assess the smart contracts against established industry and academic best practices to enhance efficiency, maintainability, and security.
  7. Actionable Recommendations: Provide detailed, specific, and actionable steps to secure and optimize the smart contracts.

A file with a different Hash has been intentionally or otherwise modified after the security review. A different Hash may indicate a changed condition or potential vulnerability that was not within the scope of this review.

Final Words

The following provides a concise summary of the audit report, accompanied by insightful comments from the auditor. This overview captures the key findings and observations, offering valuable context and clarity.


Smart Contract Analysis Statement

Contract Analysis

The X Pay contract implements an ERC20 token with a one-off fixed issuance of one billion units at eighteen decimals, together with a standard ownership module. It is an unmodified composition of a widely used and well established token library plus a twelve line contract of its own, whose only task is to mint the full supply at deployment to a single address that also becomes the owner. There is no way to create further tokens after deployment, no burn function, no pause switch, no blacklist, no transfer fee, no transaction or wallet limit, no trading switch, no proxy and no external call of any kind anywhere in the code. The published source was confirmed to correspond exactly to the code running on Base, including the compiler fingerprint, so what is readable on the block explorer is precisely what executes. The review found no critical and no high severity issues. Every accounting and access property that matters was proven across the full range of possible inputs and then stress tested with more than seven hundred thousand randomised interactions without a single deviation, and a complete scan of the contract's event history confirmed that its state has not changed since the moment of deployment.

Ownership Privileges

The ownership of the contract has not been renounced and is held by a single key account. The owner role, however, carries no power over the token or its holders, and the picture is as follows:

  • The owner can only hand the ownership role to another address, which takes effect immediately and without acceptance by the recipient, or renounce it permanently. No function of the token itself is restricted to the owner.
  • The owner cannot create, burn, freeze, confiscate or move tokens belonging to anyone else, cannot change any allowance, and cannot pause transfers or prevent any holder from selling.
  • The owner cannot introduce a transfer fee, impose transaction or wallet limits, blacklist an address or alter the token name, ticker or decimals, all of which are fixed for the lifetime of the contract.
  • No party, including the owner and the deployer, can upgrade, replace or shut down the contract, because it is not a proxy, contains no code replacement mechanism and cannot be destroyed.
  • The address that holds the owner role also received the entire issuance of one billion tokens and still holds one hundred percent of the supply. It is an ordinary single key account rather than a shared wallet requiring several approvals, and it has not yet sent a single transaction.
  • No vesting arrangement, time lock or published distribution schedule constrains that holding, so the whole float can be moved or sold in one transaction at any moment.

Security Features

The contract implements several positive security features:

  • The absence of privileged token functions is structural rather than merely restricted, so the most common causes of token loss, namely a hidden issuance path, a trading switch, arbitrary account freezing, confiscation by the owner and an upgrade backdoor, are not present to be abused or exposed through a compromised key.
  • The contract makes no external call at all and contains no low level or inline machine code, which removes the entire class of reentrancy, callback and gas exhaustion problems by construction rather than by defensive guards.
  • All arithmetic is protected by the compiler's built in overflow checks, the four places where those checks are deliberately skipped were each verified to be provably safe, and the total supply can neither rise nor fall after deployment.
  • The contract contains no loops, no growing lists and no iteration over holders, so every operation costs a predictable amount of gas and no participant can make the token unusable for others.
  • All state is written at the moment of deployment in a single indivisible step, so there is no separate setup call that an outsider could race to claim control of, and the event history confirms that the initial ownership assignment and the initial issuance are the only events the contract has ever recorded.
  • The token conforms fully to the ERC20 standard, with every required function present using the correct types and every event correctly indexed, which reduces the chance of integration failures with exchanges, wallets and custodians.

Points Requiring Attention

Three matters fall outside the code itself and deserve attention before any distribution or listing:

  • The concentration of the entire supply, together with the owner role, in one single key account with no vesting or shared control is the single largest risk to holders. Moving the holding and the role into a wallet requiring multiple independent approvals, placing everything not needed for immediate liquidity under a time lock, and publishing the intended allocation together with the receiving addresses would reduce it substantially without touching the contract.
  • Shortly before this contract, the same team deployed two further contracts on Base with the same name, identical code and the same one billion issuance. Both are still fully held by the same account and both use the ticker XPAY rather than $XPAY. Three billion tokens have therefore been issued in total while each contract advertises one billion, and the project's published material does not name an official contract address. The team should state clearly which deployment is the official one and verifiably retire the other two supplies.
  • As with most tokens built on this widely used library, anyone can create zero value transfer records that appear to come from any holder, including the treasury, which is a common basis for address poisoning scams. Treasury payments should never use addresses copied from transaction history, and official interfaces should flag such records.

Note - This Audit report consists of a security analysis of the X Pay ($XPAY) smart contract. This analysis did not include economic analysis of the contract's tokenomics. Moreover, we only audited the main contract for the X Pay team. Other contracts associated with the project were not audited by our team, including the two earlier deployments of the same token and any staking, governance or fee discount contract described in the project's whitepaper, none of which had been published at the time of review. We recommend investors do their own research before investing.

Files and details

Findings and Audit result

low Issues | 3 findings

Pending

#1 low Issue
Allowance changes can be front-run
xpaucontract_flattened.sol
L428
Description

The approve function overwrites the stored allowance instead of comparing it with an expected current value. A spender who sees an allowance being lowered can spend the full old allowance first and then the new one as well, ending up with more than the holder ever intended to grant. The library version in use no longer offers increaseAllowance or decreaseAllowance helpers and the token has no signature based approval, so there is no built-in way around the race. This is a long-standing characteristic of the token standard rather than a coding mistake, and it was reproduced in testing where a spender obtained 150 tokens from an allowance that the holder had reduced from 100 to 50.

Pending

#2 low Issue
Anyone can create zero-value transfer records that appear to come from any holder
xpaucontract_flattened.sol
L450
Description

A call to transferFrom with an amount of zero succeeds for any caller and any source address, even when the caller has no allowance at all, because a zero amount can never exceed a zero allowance. The call emits a normal transfer record in which the victim appears as the sender, so block explorers and wallets show an outgoing transfer from the victim's own address that the victim never signed. A plain zero-value transfer likewise succeeds from an account that has never held the token. Balances, supply and allowances are not affected, which was proven for all inputs, but this is the mechanism behind address poisoning, where an attacker fills a victim's history with transfers to lookalike addresses in the hope that the victim later copies the wrong one. On Base each such record costs a tiny fraction of a cent, and the treasury address is the obvious target as soon as it starts distributing tokens.

Pending

#3 low Issue
Assets sent to the token contract can never be recovered
xpaucontract_flattened.sol
L727
Description

The contract has no recovery function and never grants an allowance over its own balance, and although it has an owner, that owner has no means to sweep stranded assets. Any of these tokens, or any other token, sent to the contract address is therefore frozen permanently. Ether cannot be sent through a normal transfer because nothing in the contract is payable, but it can still be forced in, and it would be equally unrecoverable. The constructor only checks that the owner is not the zero address. Because a contract address can be computed before deployment, a deployment that passed the token's own future address would have locked the whole supply and the owner role at once. This did not happen on the live deployment, but the safeguard is absent.

optimization Issues | 2 findings

Pending

#1 optimization Issue
The contract was compiled and deployed with the optimizer switched off
xpaucontract_flattened.sol
L720
Description

The verified settings show the optimizer disabled. Rebuilding the identical source with the optimizer enabled at 200 runs shows that the deployed runtime code is about twice as large as necessary, at 4,241 bytes instead of 2,096, and that deployment used about 75 percent more gas. Every interaction carries a permanent premium of roughly 1 percent for transfers and approvals and of 6 to 15 percent for the read functions that integrators call most often. At current Base gas prices the absolute cost is a fraction of a cent per interaction, and there is no security consequence.

Pending

#2 optimization Issue
Token name, ticker and supply are read or computed at runtime rather than fixed in code
xpaucontract_flattened.sol
L731
Description

The token name and ticker are kept in contract storage, so each read costs a storage access of roughly 3,300 gas even though both values are short and can never change. The constructor also computes the supply by multiplying the constant by ten to the power of the decimals at deployment instead of using the final figure directly. The first point is inherited unmodified library behaviour and the second is a one-off deployment cost of a few hundred gas, and neither has any security impact.

informational Issues | 11 findings

Pending

#1 informational Issue
The owner role controls nothing but itself and moves in a single irrevocable step
xpaucontract_flattened.sol
L699
Description

The token inherits a standard ownership module, but no function of the token is restricted to the owner. The role can only hand itself on or renounce itself, and it has no power over balances, allowances, transfers or token details, which was proven for every possible call. Two consequences follow. Token scanners and listing checklists usually treat an owner that has not been renounced as a warning sign and a renounced owner as a guarantee of safety, yet for this contract neither statement carries any information. The handover is also single-step, so a mistyped address would receive the role immediately and permanently without having to accept it. That costs nothing on-chain today, but block explorers and listing processes often treat the owner address as the official identity of the project.

Pending

#2 informational Issue
The published initial supply constant is expressed in whole tokens rather than base units
xpaucontract_flattened.sol
L725
Description

The public constant INITIAL_SUPPLY returns 1,000,000,000, while every other amount the contract reports, including the total supply, balances, allowances and event values, is expressed in base units with eighteen decimals. The constructor bridges the two by multiplying by ten to the power of eighteen, but anyone who reads the constant directly receives a figure that is a billion billion times smaller than the total supply, which leads to wrong results in any percentage, vesting or reward calculation that mixes the two. The word initial also suggests that the supply might change, although it cannot.

Pending

#3 informational Issue
The deployed token does not implement the utility described in the whitepaper, and the whitepaper does not identify the contract
xpaucontract_flattened.sol
L724
Description

The whitepaper, version 0.3 of October 2026, describes a proposed token used for fee discounts, staking with penalties and governance over fees, networks, treasury and upgrades, and says that supply, allocation, vesting and emissions still require product and legal approval. The deployed contract is a plain token with a supply fixed permanently at one billion, issued three times over to a single account. It has no voting power or delegation, so standard on-chain governance cannot use it without a wrapper token, it has no staking or fee logic, and it does not support the signed transfer authorizations the whitepaper relies on for payments. Keeping such utility outside an immutable token is a sound design choice, but the published specification and the deployed contract currently describe different things, and no document links the project to this contract address.

Pending

#4 informational Issue
Signature-based approvals and transfer authorizations are not supported
xpaucontract_flattened.sol
L724
Description

The token implements neither the permit extension for signed approvals nor the transfer with authorization standard, and there is no signing domain, no nonce tracking and no signature verification anywhere in the code. Every allowance therefore needs its own on-chain transaction paid by the holder, and the token cannot take part in the gasless signed payment flow that the whitepaper describes for its payment protocol, so paying fees in this token will require a standard approval followed by a transfer, or a separate approval router. The compensating benefit is that the contract has no signature surface at all, which rules out signature replay, cross-chain replay, deadline handling errors and signing domain drift.

Pending

#5 informational Issue
Unreachable interfaces and helper functions remain in the source
xpaucontract_flattened.sol
L200
Description

Flattening the source pulled in error definitions for two other token standards, fifteen errors in total, that nothing in this contract can raise, together with three library helpers that are never called, one of which is an internal burn routine. None of this produces deployed code, so there is no gas or size cost, which the exact bytecode match confirms. The only cost is a longer source to review, and the presence of an unused burn routine can lead readers to believe that the token is burnable when it is not.

Pending

#6 informational Issue
Floating and mixed compiler version ranges
xpaucontract_flattened.sol
L720
Description

The file contains seven version statements with four different ranges inherited from the library and from the project file, and the project contract itself accepts any compiler from 0.8.20 onwards, including releases with known defects. The deployed bytecode was produced with exactly version 0.8.34 and has been matched byte for byte, so the floating range has no effect on the live contract. It would only matter if someone recompiled the source with a different compiler, for example for a redeployment or a fork.

Pending

#7 informational Issue
The compiler release used has six known defects, none of which affects this contract
xpaucontract_flattened.sol
L720
Description

Compiler version 0.8.34 is listed in the official compiler bug registry with six known defects, and block explorers may display a warning on the contract page. Each was assessed against this contract. Four of them only occur with the alternative compilation pipeline or with the optimizer enabled, and this contract was compiled with the standard pipeline and the optimizer switched off. One requires a custom storage layout specifier, which the contract does not use, and one requires deleting a single element of an in-memory byte array, which the contract never does. None of the six can therefore affect the deployed code.

Pending

#8 informational Issue
No approval record is produced when an allowance is consumed
xpaucontract_flattened.sol
L602
Description

When transferFrom uses up part of an allowance, the library updates the stored allowance without emitting an approval event. This is deliberate upstream behaviour that saves gas and is permitted by the standard, and testing confirmed that a delegated transfer produces exactly one log entry. Services that rebuild allowances purely from event history, without reading the contract state, will therefore report allowances that are higher than the real values.

Pending

#9 informational Issue
The older allowance adjustment helpers are not available
xpaucontract_flattened.sol
L428
Description

The increaseAllowance and decreaseAllowance helpers, which earlier versions of the library provided, were removed in the version used here and are absent from the token. Older integrations that still call them will fail. Together with the approval race, this means the only way to change an allowance is to overwrite it completely.

Pending

#10 informational Issue
The token contract carries no documentation of its own
xpaucontract_flattened.sol
L717
Description

The short project contract has no documentation comments at all, so nothing explains the purpose of the owner role, the unit of the initial supply constant or the intended distribution of the minted supply. The original source file is named xpaucontract, which appears to be a misspelling, and the explorer listing is a single flattened file in which the project code appears only at the very end, after more than seven hundred lines of library code.

Pending

#11 informational Issue
The entire token supply and the owner role sit in a single unprotected account
xpaucontract_flattened.sol
L727
Description

The constructor mints the full issuance of one billion tokens to the address supplied at deployment and makes that same address the owner. On the live deployment this is 0x406D2788E9709FDF90289c216B2E82A7847aB461, an ordinary single key account with no contract code. It has never sent a transaction, it holds a small amount of ETH for gas, and it still holds one hundred percent of the supply. The same account also holds the entire supply of two further deployments of this token. There is no vesting contract, no time lock, no wallet requiring several approvals and no published split between liquidity, treasury, team or ecosystem allocations, and the project whitepaper states that supply, allocation and vesting are still subject to approval. The token gives its owner no power over other holders, so this is a custody matter rather than a coding defect, but it is the dominant risk for anyone who acquires the token, because one private key can move or sell the whole float in a single transaction, and a lost or stolen key would strand or surrender it.