API catalog
Browse every verified API method by payment gateway.
This page lists only externally callable APIs that can be mapped to route, controller and driver code. Expand each gateway to view endpoints, parameters, gateway_credentials, responses, errors and test examples.
API CATALOG
PayCore public API catalog
This page provides PayCore integration flows, field definitions, request examples, response formats and payment notification specifications.
Quickstart
Register and verify your email first, then create a PayCore API key from the member portal. Registration never creates a key automatically. After obtaining a key, choose Direct Gateway or an All-in-One project and call the create-payment API.
Create a PayCore account · Open the member portal
API authentication
PayCore APIs authenticate callers with the X-API-KEY header. A complete key is shown only once when it is created, so keep it on the server. Gateway merchant credentials are sent in gateway_credentials in the request body.
Integration modes
Direct Gateway lets merchants pass gateway credentials directly. All-in-One projects use a PayCore project API key to manage payment pages and methods centrally.
Webhook concept
Gateway callbacks update PayCore payment status first. If payok_url is provided, PayCore notifies the merchant system after payment succeeds. Payment pages also poll status in the background to reduce manual refreshes.
PayCore field dictionary and gateway mapping
Names use the original PayCore public API fields. payer_ip, api_request_ip, payment_page_first_ip and provider_callback_first_ip represent different sources. The payment-page IP is recorded on the first valid payment-page visit; the gateway callback IP is recorded after notification validation. These IPs identify network sources and do not prove payer identity. When no dedicated gateway field exists, data remains in PayCore or is written to an allowed Remark/Metadata field.
Create-payment request
| Field | Source | Type | Required | Description | Example |
|---|---|---|---|---|---|
merchant_order_no |
API body | string|max:100 |
Yes | Merchant order number; keep it unique under the same API key. | ORDER202607130001 |
amount |
API body | integer|min:1 |
Yes | Payment amount; unit and currency constraints depend on the gateway. | 980 |
currency |
API body | string|max:10 |
No | Currency code such as TWD or USD. | TWD |
payer_account |
API body | string|max:100 |
No | Payer/member identifier in the merchant system; not an identity number. | member-001 |
payer_identity_no |
API body | string|max:80 |
No | Payer identity number; sent only to gateways with a confirmed matching field. | A123456789 |
payer_ip |
API body | IPv4|IPv6 |
No | Actual payer/order-context IP supplied by the API integrator. | 203.0.113.20 |
success_url |
API body | URL |
No | Merchant URL used after successful payment. | https://merchant.example/success |
return_url |
API body | URL |
No | Compatibility return URL; some gateways use it when success_url is omitted. | https://merchant.example/return |
cancel_url |
API body | URL |
No | Merchant URL used after cancellation or incomplete payment. | https://merchant.example/cancel |
payok_url |
API body | URL |
No | Merchant URL notified by PayCore after payment is confirmed. | https://merchant.example/payok |
locale |
API body | string|max:20 |
No | Preferred locale for the payment page. | zh-tw |
item_name |
API body | string|max:200 |
No | Item name; safely limited to the gateway constraint. | 測試商品 |
description |
API body | string|max:200 |
No | Payment description; some gateways use it as the item name when item_name is omitted. | 訂單付款 |
payer_name |
API body | string|max:100 |
No | Payer name; directly sent only when an official mapping exists. | 王小明 |
payer_mobile |
API body | string|max:30 |
No | Payer mobile number. | 0912345678 |
payer_tel |
API body | string|max:30 |
No | Payer telephone or landline. | 02-12345678 |
payer_email |
API body | email|max:150 |
No | Payer email. | [email protected] |
merchant_custom_field_1 |
API body | string|max:200 |
No | Merchant custom field 1; mapped only to officially supported fields. | campaign-A |
merchant_custom_field_2 |
API body | string|max:200 |
No | Merchant custom field 2; mapped only to officially supported fields. | note-B |
credit_installment |
API body | integer|0,3,6,12,18,24,30 |
No | Card installment count; currently used only by GoMyPay credit. Use 0 or omit for a normal transaction. | 0 |
expire_days |
API body | integer|1..60 |
No | Expiration days for offline payment. | 7 |
expire_minutes |
API body | integer|60..43200 |
No | Expiration minutes for offline payment; generally takes precedence over expire_days. | 1440 |
cvs_type |
API body | enum |
No | Convenience-store type. Accepted values depend on the gateway. | ibon |
bank_code |
API body | string|max:10 |
No | Generic bank-code field for ECPay background ATM. | 007 |
atm_bank_code |
API body | string|max:10 |
No | Compatibility bank-code name for ECPay background ATM. | 007 |
ecpay_atm_bank_code |
API body | string|max:10 |
No | ECPay-specific bank-code name for background ATM. | 007 |
cvs_code |
API body | enum |
No | Generic store-code field for ECPay background CVS. | FAMILY |
ecpay_cvs_code |
API body | enum |
No | ECPay-specific store-code name for background CVS. | FAMILY |
desc_1 |
API body | string|max:20 |
No | ECPay background-payment description field 1. | |
desc_2 |
API body | string|max:20 |
No | ECPay background-payment description field 2. | |
desc_3 |
API body | string|max:20 |
No | ECPay background-payment description field 3. | |
desc_4 |
API body | string|max:20 |
No | ECPay background-payment description field 4. | |
gateway_credentials |
API body | object |
Yes | Gateway merchant credentials; see each endpoint for child fields. Never copy them to remarks or metadata. | {...} |
PayCore-generated fields
| Field | Source | Type | Required | Description | Example |
|---|---|---|---|---|---|
api_request_ip |
PayCore | IPv4|IPv6|null |
No | Caller IP observed automatically by PayCore when the API order is created; integrators cannot override it. | 198.51.100.10 |
payment_page_first_ip |
PayCore | IPv4|IPv6|null |
No | Source IP observed on the first valid-token HTML visit to a PayCore show, processing, or result page. It does not prove a verified human identity. | 203.0.113.30 |
payment_page_first_seen_at |
PayCore | datetime|null |
No | Timestamp atomically recorded with payment_page_first_ip. Refreshes and status polling do not overwrite it. | 2026-07-13T10:30:00+08:00 |
provider_callback_first_ip |
PayCore | IPv4|IPv6|null |
No | Source IP of the first verified server callback from a gateway to PayCore. Browser returns, outbound PayOK notifications, and rejected callbacks are excluded. | 192.0.2.40 |
provider_callback_first_seen_at |
PayCore | datetime|null |
No | Timestamp atomically recorded with provider_callback_first_ip. Gateway retries do not overwrite it. | 2026-07-13T10:35:00+08:00 |
payment_no |
PayCore | string |
Yes | PayCore payment number. | PAY202607130001ABCDEFGH |
gateway |
URL / PayCore | string |
Yes | Gateway key such as stripe, plus, pfun, gomypay, or funpoint. | stripe |
method |
URL / PayCore | string |
Yes | Payment-method key under the gateway. | credit |
api_key_id |
PayCore | integer |
Yes | Read-only relation resolved automatically from X-API-KEY; not accepted from the API body. | |
preferred_locale |
PayCore | string|null |
No | Normalized payment-page locale derived from locale or Accept-Language. | zh-tw |
Common response
| Field | Source | Type | Required | Description | Example |
|---|---|---|---|---|---|
success |
API response | boolean |
Yes | Whether the API request succeeded. | true |
message |
API response | string |
Yes | Human-readable result message. | Payment created successfully |
data.payment_no |
API response | string |
Yes | PayCore payment number. | |
data.merchant_order_no |
API response | string |
Yes | Merchant order number. | |
data.gateway |
API response | string |
Yes | Gateway key. | |
data.method |
API response | string |
Yes | Payment-method key. | |
data.amount |
API response | integer |
Yes | Payment amount. | |
data.currency |
API response | string |
Yes | Payment currency. | |
data.status |
API response | string |
Yes | PayCore payment status. | pending |
data.payment_method |
API response | string|null |
No | PayCore payment-flow classification. | |
data.payment_url |
API response | URL|null |
No | PayCore payment page or gateway redirect URL. | |
data.payment_info |
API response | object |
No | Gateway payment instructions or frontend initialization data; content varies by gateway. | |
data.created |
API response | boolean |
No | Whether this call created a new transaction; false when an existing active payment is returned. | |
data.paid_at |
API response | datetime|null |
No | Time when PayCore confirmed payment success. | |
data.created_at |
API response | datetime|null |
No | PayCore transaction creation time. | |
error |
API response | object|string|null |
No | Error code, validation fields, or context returned on failure. | |
Gateway field mappings
Stored in PayCore means the value remains in the PayCore transaction record and is not sent to that gateway. Fallback fields are used only when the primary mapped value is unavailable.
| PayCore field | ECPay | SmilePay | Stripe | PayPal | PLUS | PFun | Junding Technology GoMyPay | FunPoint |
|---|---|---|---|---|---|---|---|---|
api_request_ip |
Stored in PayCore | Remark | metadata.api_request_ip | Stored in PayCore | Stored in PayCore | ClientIP fallback; payer_ip is also written to Remark | Buyer_Memo fallback | Remark fallback |
payer_ip |
Stored in PayCore | Remark | metadata.payer_ip | Stored in PayCore | Stored in PayCore | ClientIP (primary) | Buyer_Memo fallback | Remark fallback |
payment_page_first_ip |
Stored in PayCore | Stored in PayCore | Stored in PayCore | Stored in PayCore | Stored in PayCore | Stored in PayCore | Stored in PayCore | Stored in PayCore |
provider_callback_first_ip |
verified callback source | verified callback source | verified signature source | verified webhook source | verified callback source | validated callback source | verified str_check source | verified CheckMacValue source |
payer_account |
Stored in PayCore | Pur_name fallback | metadata.payer_account | Stored in PayCore | Used to build payName | Stored in PayCore | Buyer_Memo fallback | Remark fallback |
payer_name |
Stored in PayCore | Pur_name | Stored in PayCore | Stored in PayCore | Stored in PayCore | ReceiverName | Buyer_Name | Remark fallback |
payer_mobile |
Stored in PayCore | Mobile_number | Stored in PayCore | Stored in PayCore | Stored in PayCore | ReceiverTel (primary) | Buyer_Telm (primary) | Remark fallback |
payer_tel |
Stored in PayCore | Tel_number | Stored in PayCore | Stored in PayCore | Stored in PayCore | ReceiverTel fallback | Buyer_Telm fallback | Remark fallback |
payer_email |
Stored in PayCore | receipt_email | Stored in PayCore | Stored in PayCore | ReceiverEmail | Buyer_Mail | Remark fallback | |
payer_identity_no |
Stored in PayCore | Stored in PayCore | Stored in PayCore | Stored in PayCore | Stored in PayCore | ReceiverID | Stored in PayCore | Stored in PayCore |
item_name |
ItemName | Od_sob | PaymentIntent description fallback | purchase item name | Stored in PayCore | TradeTitle | Buyer_Memo fallback | ItemName |
description |
TradeDesc / ItemName fallback | Od_sob fallback | PaymentIntent.description | purchase description | Stored in PayCore | OrderInfo / TradeTitle fallback | Buyer_Memo | TradeDesc / ItemName fallback |
merchant_custom_field_1 |
Stored in PayCore | Stored in PayCore | Stored in PayCore | Stored in PayCore | Stored in PayCore | CustomField1 | Buyer_Memo fallback | CustomField1 |
merchant_custom_field_2 |
Stored in PayCore | Stored in PayCore | Stored in PayCore | Stored in PayCore | Stored in PayCore | CustomField2 | Buyer_Memo fallback | CustomField2 |
credit_installment |
Stored in PayCore | Stored in PayCore | Stored in PayCore | Stored in PayCore | Stored in PayCore | Stored in PayCore | TransMode / Installment | Stored in PayCore |
Choose an API from the left to view details
To keep /developer/api fast, this page loads the catalog index first; full parameter tables and examples are loaded by AJAX only after an endpoint is selected.
Pico is here with you at the end.
Need to find another API, return to the catalog, or review the integration flow? Jump back to search or continue from the API catalog.