-
Notifications
You must be signed in to change notification settings - Fork 532
Open
Labels
help wantedExtra attention is neededExtra attention is needed
Description
When a holder declines a credential offer, the webhook behavior differs between connection-based and OOB credential offers.
Environment:
- ACA-Py version: 1.3.0
- Holder: BC Wallet (Mobile) / Cloud Wallet
- Issuer: ACA-Py agent (cloud)
Case 1: Connection-based credential offer
- Issuer sends credential offer.
- Holder declines from BC Wallet (Mobile) or Cloud Wallet (problem-report: issuance-abandoned).
- Issuer receives webhook with state: abandoned.
Case 2: OOB credential offer
- Issuer sends OOB invitation with credential offer attached.
- Holder scans QR code.
- Holder declines from BC Wallet (Mobile) or Cloud Wallet.
- Holder does receive a webhook for the decline.
- No webhook is received on issuer side.
- Logs show only problem report handling on issuer side :
2025-09-01 11:25:11,056 acapy_agent.transport.pack_format DEBUG Expanded message: {'@type': 'https://didcomm.org/issue-credential/2.0/problem-report', '@id': 'd77a6f4a-3458-496c-bfe3-3ca0eeb1b564', 'description': {'en': 'Declined', 'code': 'issuance-abandoned'}, '~thread': {'thid': '5c3d7eec-151b-4d97-823d-35efbc9818c2', 'pthid': '619033fe-c5b7-4033-9710-70233cb5c65a'}}
2025-09-01 11:25:11,057 aiohttp.access INFO 172.21.0.25 [01/Sep/2025:11:25:11 +0000] "POST / HTTP/1.1" 200 112 "-" "okhttp/4.9.2"
2025-09-01 11:25:11,057 acapy_agent.utils.classloader DEBUG Successfully loaded class V20CredProblemReportSchema from module acapy_agent.protocols.issue_credential.v2_0.messages.cred_problem_report
2025-09-01 11:25:11,057 acapy_agent.utils.classloader DEBUG Successfully loaded class ThreadDecoratorSchema from module acapy_agent.messaging.decorators.thread_decorator
2025-09-01 11:25:11,060 acapy_agent.utils.classloader DEBUG Successfully loaded class CredProblemReportHandler from module acapy_agent.protocols.issue_credential.v2_0.handlers.cred_problem_report_handler
2025-09-01 11:25:11,060 acapy_agent.messaging.base_handler DEBUG Issue-credential v2.0 problem report handler called with context <RequestContext(_connection_ready=True, _connection_record=<ConnRecord(_id='0132cf35-01c1-43e5-a5cf-d27a5934600b', _last_state='active', _new_with_id=False, state='active', created_at='2025-09-01T11:22:34.397032Z', updated_at='2025-09-01T11:24:38.204318Z', my_did='did:peer:4zQmep6ySUPterinDdeqgtYSwETWjmUnsQettKXUZSiNSiNx', their_did='did:peer:1zQmSsu7A2tz2j8UqvL5JjVr9HSx5iHyaTHE8TRiL93NEzAN', their_label='My Wallet - 2112', their_role='invitee', invitation_key='EWBHTnNC9YuksMsT56d3xcVgrzvVVu6TzgZGHQrsaVR4', invitation_msg_id='619033fe-c5b7-4033-9710-70233cb5c65a', request_id='4f6aa6c8-bd17-454d-9269-358f88abde5f', error_msg=None, inbound_connection_id=None, accept='auto', invitation_mode='once', alias=None, their_public_did=None, connection_protocol='didexchange/1.1')>, _context=<acapy_agent.config.injection_context.InjectionContext object at 0x7fb197e45610>, _message=<V20CredProblemReport(_message_id='d77a6f4a-3458-496c-bfe3-3ca0eeb1b564', _message_new_id=False, _message_decorators=<DecoratorSet{~thread: <ThreadDecorator(_thid='5c3d7eec-151b-4d97-823d-35efbc9818c2', _pthid='619033fe-c5b7-4033-9710-70233cb5c65a', _sender_order=None, _received_orders=None)>}>, _message_type='https://didcomm.org/issue-credential/2.0/problem-report', description={'en': 'Declined', 'code': 'issuance-abandoned'}, problem_items=None, who_retries=None, fix_hint=None, impact=None, where=None, noticed_time=None, tracking_uri=None, escalation_uri=None)>, _message_receipt=<MessageReceipt(_connection_id=None, _direct_response_mode=None, _in_time='2025-09-01T11:25:11.054694Z', _raw_message='{"@type":"https://didcomm.org/issue-credential/2.0/problem-report","@id":"d77a6f4a-3458-496c-bfe3-3ca0eeb1b564","description":{"en":"Declined","code":"issuance-abandoned"},"~thread":{"thid":"5c3d7eec-151b-4d97-823d-35efbc9818c2","pthid":"619033fe-c5b7-4033-9710-70233cb5c65a"}}', _recipient_verkey='Fg4wnrgpjdVtiiWGyCDaeUYD71mVACKVkEc2Xxk6Sze2', _recipient_did='did:peer:4zQmep6ySUPterinDdeqgtYSwETWjmUnsQettKXUZSiNSiNx:zma8FNHhFHZjpFgACi9VrHrLbn1gz2BfA3hHjKUFCTgMv3eSUkQHutsftDKuYiUAnqfD6syevN4KEneCG669u6TXCL8DZKP8Fo74GF8UBeMgBdziUvH1BYFkEbwNaJrBL8fMafUq1bV4qMeJ2V2dShwhs1Q7RL4DhHDpSmUrSbZ81ycn6gPAN68ZBseRNz68gPTRj3Tvq2iEc7DkE48j3cjeqvUpp9P2jrNXTzMwsqmatk3w698rZTPrqQ4CXwFbeyDAuE87hYcC2dcGyxeDrsEFo66G32XmgQVrLcDAYLM6fb3DNqfT9wXGTL3RX9BpCoJo3gBLMNk9mCz8Pfb7jnkGfg1HxZvjhLGiz8AZwWJm6AJQVhBvNdNJroZ3KwcWLW8P5M2z9fme5WCtokukGrQLYC9GhHQEZbCzk9SmoEkQEAiqm3Sn4Uiqa2r9QsKUrmqYPtm5cGHRAxSPpe2rq6FFoVfiZ3joydsXkCWjaADiCeK3bN3EwXpH7eouiAA7au4vhyGUXHEpVWp7Lme3BZnXfBavaXuVJeaPxVcjKPvTsoBc2zXQaQthZj9mT1hyeeN25iVzDdED91ABFkRfLDFef6r13TbEgKMkH7yV6eiRw3eg4', _recipient_did_public=None, _sender_did='did:peer:1zQmSsu7A2tz2j8UqvL5JjVr9HSx5iHyaTHE8TRiL93NEzAN', _sender_verkey='6Bo2XX7i74vxEcPRfkdJP9vDersw9D7fLKYxavAiLr7M', _thread_id='5c3d7eec-151b-4d97-823d-35efbc9818c2', _parent_thread_id='619033fe-c5b7-4033-9710-70233cb5c65a', didcomm_version=<DIDCommVersion.v1: 1>)>, _profile=<AskarProfile(backend=askar, name=dev-vivekorg_wallet)>)>
2025-09-01 11:25:11,063 acapy_agent.messaging.base_handler WARNING Record not found while processing issue-credential v2.0 problem report
Question:
- Should the issuer receive a webhook (state: abandoned) when a holder declines an OOB credential offer?
- Or is this expected behavior because no credential exchange record is created until the holder accepts, so ACA-Py has nothing to update?
Note:
- OOB offer contain the handshake_protocol as well.
Metadata
Metadata
Assignees
Labels
help wantedExtra attention is neededExtra attention is needed