Platform

Support

Stuck on an integration? Here's how to reach the Credicorp developer team, what to include so we can trace your exact call, and which references to check before you open a ticket. Most issues resolve faster with one good request_id than with a paragraph of description.

Check platform status first. If decisioning, payments or webhook delivery is degraded, an incident is likely already open and you don't need to raise a ticket — subscribe to updates instead.

Support channels

Pick the channel that matches the urgency and tier of your integration. Every channel routes to the same engineering on-call rota; email is the system of record for anything that needs a paper trail.

Partners on the Scale and Platform tiers also receive a dedicated Slack Connect channel and a named integration engineer. To request access, email us from the address registered to your organisation on the hub.

Response targets

These are best-effort targets for a first human response during UK business hours (Mon–Fri, 09:00–18:00 GMT/BST), excluding bank holidays. A severity-1 outage that affects money movement is paged 24/7.

SeverityDefinitionFirst response
SEV-1Production down — live decisioning, disbursement or repayment collection failing for all traffic.≤ 1 hour, 24/7
SEV-2Major feature degraded in live, a workaround exists, or one endpoint is erroring.≤ 4 business hours
SEV-3Sandbox issue, integration question, documentation gap, or feature request.≤ 1 business day

What to include in a ticket

The single most useful thing you can send is the request_id. Every API response — success or error — carries one, both in the JSON body and in the x-credicorp-request-id response header. It lets us pull the exact request, the decisioning trace, and any downstream PISP or identity call from our logs without guesswork.

FieldWhere to find it 
request_idx-credicorp-request-id header, or meta.request_id in the body.Required
environmentWhether the call hit sandbox or live — tell us which key prefix you used (pk_test_ / pk_live_).Required
Endpoint & methode.g. POST /partner/v1/mcp — the full path and HTTP verb.Required
TimestampApproximate time of the call in UTC, so we can narrow the log window.Optional
Expected vs actualOne line on what you expected and what you got — HTTP status and the error.code.Optional
Idempotency-KeyIf the call was a write (apply, payment), the key you sent helps us spot retries.Optional

Reading the request_id off a response is one header lookup. Both the SDK and a raw curl call surface it:

bash
# -i prints response headers; grep the request id for your ticket
curl -i -X POST https://hub.credicorp.co.uk/partner/v1/mcp \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}' \
  | grep -i "x-credicorp-request-id"

# x-credicorp-request-id: req_8Hn2Lp0Wd4Xc
javascript
// The x-credicorp-request-id header is returned on every MCP response
const res = await fetch('https://hub.credicorp.co.uk/partner/v1/mcp', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${TOKEN}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({ jsonrpc: '2.0', id: 1, method: 'tools/list' }),
});
// quote this in your ticket
console.log(res.headers.get('x-credicorp-request-id'));

A good error body has everything you need to triage and everything we need to trace. This is the standard shape returned across the API:

json
{
  "error": {
    "code": "validation_failed",
    "message": "The request failed validation.",
    "detail": [{ "field": "applicant.company_number", "reason": "not_eligible" }],
    "correlation_id": "cor_01J2K3M4N5P6Q7R8S9T0A1V2W3",
    "retryable": false
  }
}

Redact credentials before you share anything. We never need a secret to help you. Strip these from logs, screenshots and curl commands before sending:

• Secret API keys (sk_live_…, sk_test_…)  • Authorization: Bearer tokens  • Full webhook signing secrets (whsec_…)  • OAuth client secrets  • PISP access tokens.

The correlation_id is a non-secret reference — it is safe to share and is all we need to find your call. If you ever paste a live secret to us by accident, roll it from the hub immediately; treat it as compromised.

A clean, copy-paste report

Drop this template into your email. Notice the Authorization header is redacted — that's exactly what we want to see.

text
Environment:  live
Endpoint:     POST /partner/v1/mcp  (method: tools/call, tool: decisioning_explanation)
correlation_id: cor_01J2K3M4N5P6Q7R8S9T0A1V2W3
Time (UTC):   2026-06-29T13:42:07Z
Expected:     200, result.structuredContent.outcome = "approved"
Actual:       200, JSON-RPC error -32603 internal_error

curl -X POST https://hub.credicorp.co.uk/partner/v1/mcp \
  -H "Authorization: Bearer [REDACTED]" \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"decisioning_explanation","arguments":{"reference":"APP-4471"}}}'

Help yourself first

Most tickets we receive are answered by a page we already publish. Before you write in, a two-minute check here will often unblock you immediately — and if it doesn't, you'll arrive with the right correlation_id and error code in hand.

If you're seeing…Start here
401 / 403 on every callOAuth 2.0 & API keys roadmap — check the key prefix matches the environment.
An error.code you don't recogniseErrors reference — every code, what causes it, and how to fix it.
Duplicate applications or paymentsIdempotency — reuse one key per logical write and retry safely.
Webhooks not arriving or failing verificationWebhooks roadmap — signature checks, retries and replay.
429 Too Many RequestsRate limits — read Retry-After and back off.
Unsure how to reproduce safelySandbox & test data — deterministic company numbers and decisions.

Reproduce in sandbox before reporting a live bug. Swap your sk_live_ key for sk_test_ and replay the call against deterministic test data. If it reproduces in sandbox, attach that request_id — no live data, no redaction headaches, and we can trace it the same way.

Reporting a security issue

Suspected vulnerabilities and credential exposure are handled separately from integration support and are triaged immediately. Email security@credicorp.co.uk or follow the disclosure policy at security.txt. Please do not post security reports to the help centre or a shared Slack channel.