No. Square returns a success response when it accepts the request. The payment then holds one of 5 states. Only COMPLETED is terminal success. Provely proves approved, completed and refunded as separate promises.

Skill facts from the signed manifest.
FactValue
Skill version0.1.0
PublisherBuilt and signed by Provely.
CertificationProvisional (score 49 of 100)
Last conformance run2026-09-05T12:00:00Z: 52 of 52 cases passed, 0 critical false VERIFIED
Provider API versions2026-08-19
Default provider API version2026-08-19
Compiled2026-09-05T12:00:00Z by compiler 0.1.0
Manifest hash5b92b4a15b5a20ca
Manifest hash checkthe document hashes to the value the manifest states
Signaturevalid, key provely-skill-2026-09, trusted by this build

What does this page prove?

ClaimProven byEvidenceStatus
The card issuer authorised the amount, and Square holds the authorisation. This level does not prove a capture. The money did not move.square.payment.approvedE2 + E3proven
An approved payment is an authorisation hold, not a captured payment. This level reads the payment status and the card timeline together.square.payment.completedE2 + E3proven
A PaymentRefund object does not prove that money moved. This level proves the COMPLETED state on the refund and an event that carries it.square.refund.completedE2 + E3proven
An outcome outside Square, such as a bank credit or a person who read a messagenot provenno E5 channelnot proven
The meaning of the PENDING state of square.paymentnot provenno source states itnot proven
The agent report that the action workednever countsE0not proven

Which completion levels does the Square skill expose?

Each level is one promise with one contract. An agent picks the level that matches the promise it makes. It cannot upgrade a level. Read the completion level definition.

LevelContractPromiseEvidenceCertification
approvedsquare.payment.approved v1.0.0The card issuer authorised the amount, and Square holds the authorisation. This level does not prove a capture. The money did not move.E2 + E3Provisional
completedsquare.payment.completed v1.0.0An approved payment is an authorisation hold, not a captured payment. This level reads the payment status and the card timeline together.E2 + E3Provisional
refundedsquare.refund.completed v1.0.0A PaymentRefund object does not prove that money moved. This level proves the COMPLETED state on the refund and an event that carries it.E2 + E3Provisional

What is the Square lifecycle?

Which states can a square.payment be in?

StateClassVerdictMeaningSource
APPROVEDtransitionalPENDINGThe card issuer authorised the amount. Square holds the authorisation. The money did not move.square.openapi
COMPLETEDterminal successVERIFIEDSquare captured the payment. The money moved. The card_details status member holds CAPTURED.square.openapi
CANCELEDterminal neutralFAILEDSquare voided the payment. No money moved.square.openapi
FAILEDterminal failureFAILEDThe payment did not succeed. The response carries an error code.square.openapi
PENDINGunknownUNVERIFIABLEThe published description lists this value. No source states what it means for the money of the payment.square.openapi

In square.payment under provider API version 2026-08-19, COMPLETED is the only state that means terminal success. Every other state gives PENDING, FAILED, or UNVERIFIABLE.

Source: square.openapi · retrieved 2026-09-08

Which states can a square.payment_refund be in?

StateClassVerdictMeaningSource
PENDINGtransitionalPENDINGThe refund awaits approval. Square still processes it.square.openapi
COMPLETEDterminal successVERIFIEDThe refund is successfully completed. The money reached the payment card of the buyer.square.openapi
REJECTEDterminal neutralFAILEDSquare rejected the refund. No money moved.square.openapi
FAILEDterminal failureFAILEDAn error occurred. The refund did not complete.square.openapi

In square.payment_refund under provider API version 2026-08-19, COMPLETED is the only state that means terminal success. Every other state gives PENDING, FAILED, or UNVERIFIABLE.

Source: square.openapi · retrieved 2026-09-08

How does Provely tie the evidence to this exact operation?

A matching state that already existed must not verify. Every contract names the correlation keys that bind the evidence to the operation, and the idempotency key that stops a duplicate side effect.

StrategyAssuranceKeysRequiredWindow
resource_idstrongpayment_id from $action.result.payment.idyesnone
idempotency_keystrongidempotency_key from $operation.idnonone
fingerprintweakreference_id from $input.reference_id; amount from $input.amountno600000 ms
resource_idstrongrefund_id from $action.result.refund.idyesnone
idempotency_keystrongidempotency_key from $operation.idnonone
fingerprintweakpayment_id from $input.payment_id; amount from $input.amountno600000 ms
The skill reads the channels below. It prefers the ones furthest from the action.
In words
  • E0 agent assertion: never sufficient.
  • E1 action response: the provider acknowledged the request.
  • E2 provider readback: the runtime read the resource back.
  • E3 provider event: the provider reported the change.
  • E4 independent system: a system outside the action path agrees.
  • E5 external outcome: the result is observable in the world.

Which evidence channels does the skill read?

The runtime prefers the channel that is more independent from the action path. Read the evidence level definition. An acknowledgement from Square is E1 and never terminal success.

ChannelLevelIndependenceVerifierDeterministicTypical latency
payment_action_responseE1same responseaction_resultyesnot stated
payment_completed_eventsE3provider eventwebhookno3000 ms
payment_created_eventsE3provider eventwebhookno3000 ms
payment_readbackE2provider readbackhttpyes300 ms
refund_completed_eventsE3provider eventwebhookno4000 ms
refund_created_eventsE3provider eventwebhookno4000 ms
refund_readbackE2provider readbackhttpyes300 ms

Which ways can a Square action look done and not be?

ContractCaseRuleVerdict
square.payment.approvedwrong subjectThe payment carries a different reference than the intent named.CONTRADICTED
square.payment.approvedwrong amountThe provider charged a different amount than the intent stated.CONTRADICTED
square.payment.approvedpre existing stateThe payment is older than the operation. It proves nothing.CONTRADICTED
square.payment.approvedduplicate side effectSquare created more than one payment for the reference since the operation started. Do not retry.CONTRADICTED
square.payment.approvedobserved stateSquare reports a failed payment. The response carries an error code.FAILED
square.payment.approvedobserved stateSquare voided the payment. No money moved, and no retry can change that.CONTRADICTED
square.payment.approvedobserved stateSquare states no meaning for this state. The runtime cannot decide. Ask a person.UNVERIFIABLE
square.payment.completedwrong subjectThe payment carries a different reference than the intent named.CONTRADICTED
square.payment.completedwrong amountThe provider charged a different amount than the intent stated.CONTRADICTED
square.payment.completedpre existing stateThe payment is older than the operation. It proves nothing.CONTRADICTED
square.payment.completedduplicate side effectSquare created more than one payment for the reference since the operation started. Do not retry.CONTRADICTED
square.payment.completedobserved stateSquare reports a failed payment. The response carries an error code.FAILED
square.payment.completedobserved stateSquare voided the payment. No money moved, and no retry can change that.CONTRADICTED
square.payment.completedobserved stateThe payment is not a card payment, so Square writes no card timeline. This level cannot decide.UNVERIFIABLE
square.payment.completedobserved stateSquare holds an authorisation. Nobody captured the payment, so the money did not move.PENDING
square.payment.completedobserved stateSquare states no meaning for this state. The runtime cannot decide. Ask a person.UNVERIFIABLE
square.refund.completedwrong subjectThe refund belongs to a different payment than the intent named.CONTRADICTED
square.refund.completedwrong amountThe provider refunded a different amount than the intent stated.CONTRADICTED
square.refund.completedpre existing stateThe refund is older than the operation. It proves nothing.CONTRADICTED
square.refund.completedduplicate side effectSquare created more than one refund for the payment since the operation started. Do not retry.CONTRADICTED
square.refund.completedobserved stateAn error stopped the refund. Square reports the failed state.FAILED
square.refund.completedobserved stateSquare rejected the refund. No money moved back to the buyer.CONTRADICTED
square.refund.completedobserved stateThe refund awaits approval. The runtime observes again later.PENDING

What did the last conformance run show?

The six confidence dimensions of the signed manifest.
DimensionScoreMaximum
Documentation1420
Schema alignment015
Lifecycle certainty17.7820
Evidence strength1620
Causal correlation1515
Sandbox conformance1010
Raw score72.78100
Score after the caps49100

The raw score is 72.78. 2 hard caps apply, so the score is 49 and the level is Provisional.

Why the score is capped.
ReasonHighest score it allows
A lifecycle state has unknown semantics. The compiler cannot prove the end state.49
10 uncertainty records are open. The lowest cap is 49.49
The score and the level of each contract.
ContractRaw scoreScore after the capsCertification
square.payment.approved7149Provisional
square.payment.completed7149Provisional
square.refund.completed7549Provisional

The weakest contract is square.payment.approved. It scores 49 and reaches Provisional. The package level is Provisional, because a package level never rises above its weakest contract. Read the level of the contract you use.

The last conformance run on 2026-09-05T12:00:00Z passed 52 of 52 cases with 0 critical false VERIFIED. One critical false VERIFIED rejects a skill.

The conformance result by case class.
Case classPassedTotal
duplicate side effect33
error after execution33
error before execution33
evidence unavailable33
idempotent retry33
pre existing state33
stale readback33
still transitional33
terminal failure33
terminal success33
timeout after commit33
version mismatch33
webhook duplicate33
webhook out of order33
wrong amount33
wrong resource11
wrong subject33
wrong terminal state33

The conformance artifact digest is d375359d3d20fb3f. The harness signs the run, so a reader can check that these numbers come from that run.

What remains uncertain?

The level is Provisional because of it. A lifecycle state has unknown semantics. The compiler cannot prove the end state. 10 uncertainty records are open. The lowest cap is 49. Provely does not guess a rule that a source does not state.

Where do these facts come from?

Every claim above cites a source assertion in the skill provenance. The compiler records the source, its hash, and the retrieval date. A page never states a provider rule without one.

SourceKindRetrievedExcerpt
square.docs.idempotencydocs2026-09-08authored
square.docs.paymentsdocs2026-09-08authored
square.docs.refundsdocs2026-09-08authored
square.docs.versionsdocs2026-09-08authored
square.docs.webhooksdocs2026-09-08authored
square.eventsevent sample2026-09-08authored
square.openapiopenapi2026-09-08trimmed

How do I verify a Square action?

Verify a Square action with Provely

  1. Begin the operation.Call begin with the contract square.payment.approved and the input. Keep the operation id.
  2. Make the Square call you make today.Send the request with the correlation metadata that begin returned.
  3. Submit the acknowledgement.Call action_result with the Square response. This is evidence level E1. It is not completion.
  4. Verify.Call verify. The runtime reads payment_action_response, payment_completed_events, payment_created_events, payment_readback, refund_completed_events, refund_created_events and refund_readback and evaluates the contract.
  5. Report the verdict exactly as returned.VERIFIED comes with a signed receipt. PENDING comes with the operation id. CONTRADICTED and UNVERIFIABLE are not success.

Questions developers ask

Does the approved level prove the refunded level?

No. The card issuer authorised the amount, and Square holds the authorisation. This level does not prove a capture. The money did not move. A PaymentRefund object does not prove that money moved. This level proves the COMPLETED state on the refund and an event that carries it. Use square.refund.completed to prove refunded.

What does the agent say while Square reports APPROVED?

It says: "The action is accepted but not yet verified. Operation: <id>." The verdict is PENDING. The runtime observes again on the contract timing policy.

Which Square API versions does the skill support?

2026-08-19. An operation on another version returns UNVERIFIABLE with the reason version_unsupported. The runtime never guesses.

Does Provely need write access to Square?

No. The agent keeps its write key. The verifier reads with a separate read-only credential where Square permits it, and it never shares that credential with the agent.